forked from suse-edge/Factory
		
	Compare commits
	
		
			176 Commits
		
	
	
		
			kubevirt_c
			...
			devel
		
	
	| Author | SHA256 | Date | |
|---|---|---|---|
| b1dfe698ff | |||
| 9581e030ce | |||
| e71339ae00 | |||
| f32718b5e4 | |||
| c81f5057ce | |||
| 6b8109c772 | |||
| 8b383c15fa | |||
| 2013caec19 | |||
| 4259b167fd | |||
| 652fc553b9 | |||
| 1048591769 | |||
| 8a9717c266 | |||
| 49405f41f9 | |||
| be29dbba41 | |||
| a2c817259f | |||
| dfe4892f4c | |||
| ef68dbfd92 | |||
| 6c1db68da8 | |||
| 376ec896fe | |||
| a473d935f9 | |||
| 27aa096244 | |||
| 3f968b0a06 | |||
| 481d7e90b4 | |||
|  | cb70d25886 | ||
|  | 04937b90b7 | ||
|  | ef256bc1d7 | ||
|  | 437b0fdc41 | ||
|  | 0dbc0f8b52 | ||
|  | 3adc816d98 | ||
| 5883bf7549 | |||
| ba5ed09bd8 | |||
| b91c34b6c3 | |||
| b2e4b5e259 | |||
| e3f36b74d9 | |||
| 2b020e9bd7 | |||
| 98fa8835f7 | |||
| 5f52392aa3 | |||
| 083c753a0d | |||
| 48472176f2 | |||
| 53f09dd00f | |||
| c610436551 | |||
| 3d1a70e87a | |||
| e439f489ca | |||
| 8e56e1edd3 | |||
| 2a3c37b31d | |||
| eacabe4d71 | |||
| d57078f9d9 | |||
| fef712e4e8 | |||
| 2b194211ee | |||
| a3fda4c5c0 | |||
| 3c08af8a28 | |||
| a1583230bd | |||
| c8c20ce47a | |||
| b30ece6b61 | |||
| 54c0850acf | |||
| ab92525cbe | |||
| 75ae14da78 | |||
| 20de7cd994 | |||
| ca510a470a | |||
| c68c882d35 | |||
| e83a9cea3c | |||
| ea8a9c590a | |||
| fb896ffe62 | |||
| dc19c71706 | |||
| 5db4c3bc79 | |||
| 389f19f7b9 | |||
| 78a681a3a3 | |||
| da3b39573b | |||
| 6531575f1b | |||
| d59f3540a2 | |||
| 43c764e69c | |||
| 0b306a3e7a | |||
| c744e56218 | |||
| ddabc54ac8 | |||
| 0cb039a9df | |||
| 76036c2dd8 | |||
| eff9a9b0c5 | |||
| 8d336f380b | |||
| 5947d531ab | |||
| 0c6db5d5cc | |||
| 15362e9536 | |||
| 0b03d14cee | |||
| 9f2dc045e9 | |||
| 8f20b3433e | |||
| 704eec6875 | |||
| 98c4be017d | |||
| dccf206a98 | |||
| 9e41ee25d9 | |||
| d97e434fce | |||
| 3dea69443d | |||
| 331f08255c | |||
| 4a99805fde | |||
| 6b8a623372 | |||
| 34687fb5e9 | |||
| 5a73d61002 | |||
| 4c6d7dea17 | |||
| 531bb91d27 | |||
| 0d3c83fca1 | |||
| 4d824b71cc | |||
| 7f93226cd3 | |||
| d6d501ad99 | |||
| f61bb1e0e6 | |||
| a510134ed4 | |||
| 54e0941879 | |||
| c04b2af72b | |||
| c57aa3344d | |||
| c86d724e92 | |||
| 9d97e8a56d | |||
| b912f9d68a | |||
| 45443d5b5f | |||
| ac32110ac1 | |||
| 5d20bc38e3 | |||
| e085a97d98 | |||
| 58c8be887a | |||
| 0d59ad920e | |||
|  | f90f614746 | ||
| 35f06da226 | |||
| 8dd6d7d9d7 | |||
| f9c5a29a9f | |||
| 1b83b54b58 | |||
| c6b64a252f | |||
| 689c80ffcc | |||
| d8745fe060 | |||
| 9e39bdcf7f | |||
| 9e376ffb74 | |||
| 0fc166ff06 | |||
| 74133c22f6 | |||
| e85da96001 | |||
| dab7f36e0b | |||
| 5490ffcde2 | |||
| 04b9c07dd5 | |||
| 25de5df782 | |||
| 3f9b8c9e22 | |||
| 2a993e342e | |||
| cab6fe1bcb | |||
| fde506f9ef | |||
| f49e6be155 | |||
| e820e98a2f | |||
| 8c31073506 | |||
| 4bba5fd3f2 | |||
| 383705e9a3 | |||
| a752a25191 | |||
| 83fec09683 | |||
| 32519595dc | |||
| 87c7e1be88 | |||
| 568d5d1590 | |||
| fbd596290a | |||
| ec6c4745ea | |||
| 856ec2ac8e | |||
| 7721c66ab0 | |||
| cf6abb24fb | |||
| 602249c98d | |||
| 8a93aae7c5 | |||
| aba448b275 | |||
| 09954e5818 | |||
| 636493adba | |||
| f5cc155d16 | |||
| a5633fd239 | |||
| d719b5b6e5 | |||
| dda8040420 | |||
| dc44cb42bf | |||
| ee82509ce9 | |||
| bfd031153d | |||
| a8bd38569b | |||
| cfe2e92d13 | |||
| 40010f5c4f | |||
| 729dbefe78 | |||
| 6b530a91d9 | |||
| 996ee3b221 | |||
| 5c2204ba3e | |||
| f1bf24e9dd | |||
| 4ad7e30ea7 | |||
| e9b3caf318 | |||
| ed9a5df069 | |||
| a66325901d | |||
| 8b6dce500e | 
							
								
								
									
										62
									
								
								.gitea/workflows/pr_project.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										62
									
								
								.gitea/workflows/pr_project.yaml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,62 @@ | |||||||
|  | name: Build PR in OBS | ||||||
|  | on: | ||||||
|  |   pull_request_target: | ||||||
|  |     types: | ||||||
|  |       - opened | ||||||
|  |       - reopened | ||||||
|  |       - synchronize | ||||||
|  |       - closed | ||||||
|  |     branches-ignore: | ||||||
|  |       - "devel" | ||||||
|  |  | ||||||
|  | concurrency: | ||||||
|  |   group: ${{ gitea.workflow }}-${{ gitea.ref }} | ||||||
|  |   cancel-in-progress: true | ||||||
|  |  | ||||||
|  | jobs: | ||||||
|  |   sync-pr-project: | ||||||
|  |     name: "Build PR in OBS" | ||||||
|  |     runs-on: tumbleweed | ||||||
|  |     steps: | ||||||
|  |       - name: Setup OSC | ||||||
|  |         run: | | ||||||
|  |           zypper in -y python3-jinja2 | ||||||
|  |           mkdir -p ~/.config/osc | ||||||
|  |           cat >~/.config/osc/oscrc <<'EOF' | ||||||
|  |           [general] | ||||||
|  |           apiurl = https://api.opensuse.org | ||||||
|  |  | ||||||
|  |           [https://api.opensuse.org] | ||||||
|  |           user=${{ vars.OBS_USERNAME }} | ||||||
|  |           pass=${{ secrets.OBS_PASSWORD }} | ||||||
|  |           EOF | ||||||
|  |     # Waiting on PR to get merged for support in upstream action/checkout action | ||||||
|  |       - uses: 'https://github.com/yangskyboxlabs/action-checkout@sha256' | ||||||
|  |         name: Checkout repository | ||||||
|  |         with: | ||||||
|  |           object-format: 'sha256' | ||||||
|  |       - name: "[if PR is closed] Delete project in OBS" | ||||||
|  |         run: | | ||||||
|  |           if [ "${{ gitea.event.action }}" = "closed" ]; then | ||||||
|  |           PROJECT="$(grep PROJECT .obs/common.py | sed 's/PROJECT = "\(.*\)"/\1/')" | ||||||
|  |           osc rdelete -f -r -m "PR closed" "${PROJECT}:Staging:PR-${{ gitea.event.number }}" | ||||||
|  |           fi | ||||||
|  |       - name: "Setup PR project in OBS" | ||||||
|  |         env: | ||||||
|  |           SCM_URL: ${{ gitea.event.pull_request.head.repo.clone_url }}#${{ gitea.head_ref }} | ||||||
|  |         run: | | ||||||
|  |           if [ "${{ gitea.event.action }}" != "closed" ]; then | ||||||
|  |           PROJECT="$(grep PROJECT .obs/common.py | sed 's/PROJECT = "\(.*\)"/\1/')" | ||||||
|  |           python3 .obs/render_meta.py --pr ${{ gitea.event.number }} --scm-url "${SCM_URL}" | osc meta prj "${PROJECT}:Staging:PR-${{ gitea.event.number }}" -F - | ||||||
|  |           echo "Project created ${PROJECT}:Staging:PR-${{ gitea.event.number }}" | ||||||
|  |           echo "Follow build at: https://build.opensuse.org/project/monitor/${PROJECT}:Staging:PR-${{ gitea.event.number }}" | ||||||
|  |           fi | ||||||
|  |       - env: | ||||||
|  |           GIT_SHA: ${{ gitea.event.pull_request.head.sha }} | ||||||
|  |         name: "Wait for OBS to build the project" | ||||||
|  |         run: | | ||||||
|  |           if [ "${{ gitea.event.action }}" != "closed" ]; then | ||||||
|  |           PROJECT="$(grep PROJECT .obs/common.py | sed 's/PROJECT = "\(.*\)"/\1/')" | ||||||
|  |           export OBS_PROJECT="${PROJECT}:Staging:PR-${{ gitea.event.number }}" | ||||||
|  |           python3 .obs/wait_obs.py | ||||||
|  |           fi | ||||||
							
								
								
									
										35
									
								
								.gitea/workflows/sync_config.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										35
									
								
								.gitea/workflows/sync_config.yaml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,35 @@ | |||||||
|  | name: Synchronize Project Config | ||||||
|  | on: | ||||||
|  |   push: | ||||||
|  |     branches-ignore: | ||||||
|  |       - "devel" | ||||||
|  |     paths: | ||||||
|  |       - "_config" | ||||||
|  |       - ".gitea/workflows/sync_config.yaml" | ||||||
|  |  | ||||||
|  | jobs: | ||||||
|  |   sync-prjconf: | ||||||
|  |     name: "Update prjconf in OBS" | ||||||
|  |     runs-on: tumbleweed | ||||||
|  |     steps: | ||||||
|  |       - name: Setup OSC | ||||||
|  |         run: | | ||||||
|  |           mkdir -p ~/.config/osc | ||||||
|  |           cat >~/.config/osc/oscrc <<'EOF' | ||||||
|  |           [general] | ||||||
|  |           apiurl = https://api.opensuse.org | ||||||
|  |  | ||||||
|  |           [https://api.opensuse.org] | ||||||
|  |           user=${{ vars.OBS_USERNAME }} | ||||||
|  |           pass=${{ secrets.OBS_PASSWORD }} | ||||||
|  |           EOF | ||||||
|  |     # Waiting on PR to get merged for support in upstream action/checkout action | ||||||
|  |       - uses: 'https://github.com/yangskyboxlabs/action-checkout@sha256' | ||||||
|  |         name: Checkout repository | ||||||
|  |         with: | ||||||
|  |           object-format: 'sha256' | ||||||
|  |       - run: | | ||||||
|  |           PROJECT="$(grep PROJECT .obs/common.py | sed 's/PROJECT = "\(.*\)"/\1/')" | ||||||
|  |           if [ "$(osc meta prjconf "${PROJECT}" | sha256sum)" != "$(cat _config | sha256sum)" ] ; then | ||||||
|  |             osc meta prjconf "${PROJECT}" -F _config | ||||||
|  |           fi | ||||||
							
								
								
									
										45
									
								
								.gitea/workflows/sync_meta.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										45
									
								
								.gitea/workflows/sync_meta.yaml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,45 @@ | |||||||
|  | name: Synchronize Project Metadata | ||||||
|  | on: | ||||||
|  |   push: | ||||||
|  |     branches-ignore: | ||||||
|  |       - "devel" | ||||||
|  |     paths: | ||||||
|  |       - "*" # Will trigger on new directories and changes to files in root of repository | ||||||
|  |       - ".gitea/workflows/sync_meta.yaml" | ||||||
|  |       - ".obs/common.py" | ||||||
|  |  | ||||||
|  | jobs: | ||||||
|  |   sync-prj-meta: | ||||||
|  |     runs-on: tumbleweed | ||||||
|  |     steps: | ||||||
|  |       - name: Setup OSC | ||||||
|  |         run: | | ||||||
|  |           zypper in -y python3-jinja2 | ||||||
|  |           mkdir -p ~/.config/osc | ||||||
|  |           cat >~/.config/osc/oscrc <<'EOF' | ||||||
|  |           [general] | ||||||
|  |           apiurl = https://api.opensuse.org | ||||||
|  |  | ||||||
|  |           [https://api.opensuse.org] | ||||||
|  |           user=${{ vars.OBS_USERNAME }} | ||||||
|  |           pass=${{ secrets.OBS_PASSWORD }} | ||||||
|  |           EOF | ||||||
|  |     # Waiting on PR to get merged for support in upstream action/checkout action | ||||||
|  |       - uses: 'https://github.com/yangskyboxlabs/action-checkout@sha256' | ||||||
|  |         name: Checkout repository | ||||||
|  |         with: | ||||||
|  |           object-format: 'sha256' | ||||||
|  |       - name: "Update or create OBS Project" | ||||||
|  |         run: | | ||||||
|  |           PROJECT="$(grep PROJECT .obs/common.py | sed 's/PROJECT = "\(.*\)"/\1/')" | ||||||
|  |           set -o pipefail | ||||||
|  |           if meta="$(osc meta prj "${PROJECT}" 2>/dev/null | sha256sum)"; then | ||||||
|  |             new_meta="$(python3 .obs/render_meta.py)" | ||||||
|  |             if [ "${meta}" != "$(echo "${new_meta}" | sha256sum)" ]; then | ||||||
|  |               echo "${new_meta}" | osc meta prj "${PROJECT}" -F - | ||||||
|  |             fi | ||||||
|  |             python3 .obs/sync_packages.py | ||||||
|  |           else | ||||||
|  |             # Create the projects | ||||||
|  |             bash .obs/create_projects.sh | ||||||
|  |           fi | ||||||
							
								
								
									
										31
									
								
								.gitea/workflows/trigger_devel.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										31
									
								
								.gitea/workflows/trigger_devel.yaml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,31 @@ | |||||||
|  | name: Trigger Devel Packages | ||||||
|  | on: | ||||||
|  |   # NOTE (fdegir): Cron is set to run midday every weekday | ||||||
|  |   schedule: | ||||||
|  |     - cron: "0 12 * * 1-5 | ||||||
|  |  | ||||||
|  | jobs: | ||||||
|  |   sync-pr-project: | ||||||
|  |     name: "Trigger source services for devel packages that changed" | ||||||
|  |     runs-on: tumbleweed | ||||||
|  |     steps: | ||||||
|  |       - name: Setup OSC | ||||||
|  |         run: | | ||||||
|  |           mkdir -p ~/.config/osc | ||||||
|  |           cat >~/.config/osc/oscrc <<'EOF' | ||||||
|  |           [general] | ||||||
|  |           apiurl = https://api.opensuse.org | ||||||
|  |  | ||||||
|  |           [https://api.opensuse.org] | ||||||
|  |           user=${{ vars.OBS_USERNAME }} | ||||||
|  |           pass=${{ secrets.OBS_PASSWORD }} | ||||||
|  |           EOF | ||||||
|  |     # Waiting on PR to get merged for support in upstream action/checkout action | ||||||
|  |       - uses: 'https://github.com/yangskyboxlabs/action-checkout@sha256' | ||||||
|  |         name: Checkout repository | ||||||
|  |         with: | ||||||
|  |           object-format: 'sha256' | ||||||
|  |           ref: 'devel' | ||||||
|  |       - name: "Trigger packages" | ||||||
|  |         run: | | ||||||
|  |           python3 .obs/trigger_package.py | ||||||
							
								
								
									
										3
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										3
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							| @@ -1,3 +1,4 @@ | |||||||
| */.osc | */.osc | ||||||
| */__pycache__ | */__pycache__ | ||||||
| .venv/ | .venv/ | ||||||
|  | .idea/ | ||||||
| @@ -1,5 +1,4 @@ | |||||||
| #!/usr/bin/env python3 | #!/usr/bin/env python3 | ||||||
| import yaml |  | ||||||
| import subprocess | import subprocess | ||||||
| import argparse | import argparse | ||||||
| import os | import os | ||||||
| @@ -7,30 +6,6 @@ import os.path | |||||||
|  |  | ||||||
| from common import PROJECT, REPOSITORY, BRANCH | from common import PROJECT, REPOSITORY, BRANCH | ||||||
|  |  | ||||||
| def add_package_to_workflow(name: str): |  | ||||||
|     modified = False |  | ||||||
|     with open(".obs/workflows.yml", "r") as wf_file: |  | ||||||
|         workflows = yaml.safe_load(wf_file) |  | ||||||
|     if not any( |  | ||||||
|         x |  | ||||||
|         for x in workflows["staging_build"]["steps"] |  | ||||||
|         if x["branch_package"]["source_package"] == name |  | ||||||
|     ): |  | ||||||
|         workflows["staging_build"]["steps"].append( |  | ||||||
|             { |  | ||||||
|                 "branch_package": { |  | ||||||
|                     "source_project": PROJECT, |  | ||||||
|                     "target_project": f"{PROJECT}:Staging", |  | ||||||
|                     "source_package": name, |  | ||||||
|                 } |  | ||||||
|             } |  | ||||||
|         ) |  | ||||||
|         modified = True |  | ||||||
|     if modified: |  | ||||||
|         with open(".obs/workflows.yml", "w") as wf_file: |  | ||||||
|             yaml.dump(workflows, wf_file) |  | ||||||
|  |  | ||||||
|  |  | ||||||
| def add_package_to_project(name: str): | def add_package_to_project(name: str): | ||||||
|     package_meta = f"""<package name="{name}" project="{PROJECT}"> |     package_meta = f"""<package name="{name}" project="{PROJECT}"> | ||||||
|   <title/> |   <title/> | ||||||
| @@ -53,7 +28,6 @@ def add_package(package_name: str): | |||||||
|         os.exit(1) |         os.exit(1) | ||||||
|  |  | ||||||
|     add_package_to_project(package_name) |     add_package_to_project(package_name) | ||||||
|     add_package_to_workflow(package_name) |  | ||||||
|  |  | ||||||
|  |  | ||||||
| def main(): | def main(): | ||||||
| @@ -65,7 +39,7 @@ def main(): | |||||||
|     add_package(args.package) |     add_package(args.package) | ||||||
|      |      | ||||||
|  |  | ||||||
|     print("Package created in OBS, you can now push the modified workflow file") |     print("Package created in OBS !") | ||||||
|  |  | ||||||
|  |  | ||||||
| if __name__ == '__main__': | if __name__ == '__main__': | ||||||
|   | |||||||
| @@ -1,3 +1,3 @@ | |||||||
| PROJECT = "isv:SUSE:Edge:Factory" | PROJECT = "isv:SUSE:Edge:Factory:Devel" | ||||||
| REPOSITORY = "https://src.opensuse.org/suse-edge/Factory" | REPOSITORY = "https://src.opensuse.org/suse-edge/Factory" | ||||||
| BRANCH = "main" | BRANCH = "devel" | ||||||
|   | |||||||
							
								
								
									
										37
									
								
								.obs/create_projects.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										37
									
								
								.obs/create_projects.sh
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,37 @@ | |||||||
|  | #!/bin/bash | ||||||
|  |  | ||||||
|  | show_help() { | ||||||
|  |     echo "Usage: $(basename $0) [--internal]" | ||||||
|  |     echo "options:" | ||||||
|  |     echo "-h, --help       display this help and exit" | ||||||
|  |     echo "-i, --internal   create project as internal" | ||||||
|  |     exit 0 | ||||||
|  | } | ||||||
|  |  | ||||||
|  | while [[ "$#" -gt 0 ]]; do | ||||||
|  |     case $1 in | ||||||
|  |         -h|--help) show_help;; | ||||||
|  |         -i|--internal) internal="--internal" ;; | ||||||
|  |         *) echo "Unknown parameter passed: $1";show_help ;; | ||||||
|  |     esac | ||||||
|  |     shift | ||||||
|  | done | ||||||
|  |  | ||||||
|  | PROJECT="$(grep PROJECT .obs/common.py | sed 's/PROJECT = "\(.*\)"/\1/')" | ||||||
|  | EXTRA_OSC_ARGS="" | ||||||
|  | if [ -n "$internal" ]; then | ||||||
|  |     PROJECT="ISV${PROJECT:3}" | ||||||
|  |     EXTRA_OSC_ARGS="-A https://api.suse.de" | ||||||
|  |  | ||||||
|  |     python3 .obs/render_meta.py ${internal} Snapshot | osc ${EXTRA_OSC_ARGS} meta prj "${PROJECT}:Snapshot" -F - | ||||||
|  |     osc ${EXTRA_OSC_ARGS} meta prjconf "${PROJECT}:Snapshot" -F _config | ||||||
|  | fi | ||||||
|  |  | ||||||
|  | python3 .obs/render_meta.py ${internal} ToTest | osc ${EXTRA_OSC_ARGS} meta prj "${PROJECT}:ToTest" -F - | ||||||
|  | python3 .obs/render_meta.py ${internal} | osc ${EXTRA_OSC_ARGS} meta prj "${PROJECT}" -F - | ||||||
|  | osc ${EXTRA_OSC_ARGS} meta prjconf "${PROJECT}:ToTest" -F _config | ||||||
|  | osc ${EXTRA_OSC_ARGS} meta prjconf "${PROJECT}" -F _config | ||||||
|  |  | ||||||
|  | if [ -z "$internal" ]; then | ||||||
|  |     python3 .obs/sync_packages.py | ||||||
|  | fi | ||||||
| @@ -1,5 +1,4 @@ | |||||||
| #!/usr/bin/env python3 | #!/usr/bin/env python3 | ||||||
| import yaml |  | ||||||
| import subprocess | import subprocess | ||||||
| import argparse | import argparse | ||||||
| import os | import os | ||||||
| @@ -8,18 +7,6 @@ import os.path | |||||||
| from common import PROJECT | from common import PROJECT | ||||||
|  |  | ||||||
|  |  | ||||||
| def delete_package_from_workflow(name: str): |  | ||||||
|     with open(".obs/workflows.yml", "r") as wf_file: |  | ||||||
|         workflows = yaml.safe_load(wf_file) |  | ||||||
|     workflows["staging_build"]["steps"] = [ |  | ||||||
|         x |  | ||||||
|         for x in workflows["staging_build"]["steps"] |  | ||||||
|         if x["branch_package"]["source_package"] != name |  | ||||||
|     ] |  | ||||||
|     with open(".obs/workflows.yml", "w") as wf_file: |  | ||||||
|         yaml.dump(workflows, wf_file) |  | ||||||
|  |  | ||||||
|  |  | ||||||
| def delete_package_from_project(name: str): | def delete_package_from_project(name: str): | ||||||
|     p = subprocess.run(["osc", "rdelete", PROJECT, name, "-m \"Deleted via delete_package.py\"" ], stdout=subprocess.PIPE) |     p = subprocess.run(["osc", "rdelete", PROJECT, name, "-m \"Deleted via delete_package.py\"" ], stdout=subprocess.PIPE) | ||||||
|     print(p.stdout) |     print(p.stdout) | ||||||
| @@ -33,7 +20,6 @@ def delete_package(package_name: str): | |||||||
|         os.exit(1) |         os.exit(1) | ||||||
|  |  | ||||||
|     delete_package_from_project(package_name) |     delete_package_from_project(package_name) | ||||||
|     delete_package_from_workflow(package_name) |  | ||||||
|  |  | ||||||
|  |  | ||||||
| def main(): | def main(): | ||||||
|   | |||||||
							
								
								
									
										63
									
								
								.obs/render_meta.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										63
									
								
								.obs/render_meta.py
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,63 @@ | |||||||
|  | import argparse | ||||||
|  |  | ||||||
|  | from jinja2 import Template | ||||||
|  | from common import PROJECT | ||||||
|  |  | ||||||
|  | def render(base_project, subproject, internal, scm_url=None): | ||||||
|  |     version = base_project.rsplit(':', 1)[-1] | ||||||
|  |     context = { | ||||||
|  |         "base_project": subproject == "", | ||||||
|  |         "title": f"SUSE Edge {version} {subproject}".rstrip(), | ||||||
|  |         "ironic_base": "ISV:SUSE:Edge:Ironic" if internal else "Cloud:OpenStack", | ||||||
|  |     } | ||||||
|  |     if subproject == "ToTest": | ||||||
|  |         context["project"] = f"{base_project}:ToTest" | ||||||
|  |         context["description"] = ( | ||||||
|  |             f"This project doesn't build, it stores a snapshot of SUSE Edge {version} " | ||||||
|  |             "project currently going through the automated test layer" | ||||||
|  |         ) | ||||||
|  |         if "Factory" in base_project or internal: | ||||||
|  |             context["release_project"] = f"{base_project}:Snapshot" | ||||||
|  |     elif subproject == "Snapshot": | ||||||
|  |         context["project"] = f"{base_project}:Snapshot" | ||||||
|  |         context["release_project"] = f"{base_project.rsplit(':', 1)[0]}:Containers" | ||||||
|  |         context["for_release"] = True | ||||||
|  |         context["description"] = ( | ||||||
|  |             f"This project doesn't build, it stores a snapshot of SUSE Edge {version} " | ||||||
|  |             "project that passed automated test layer" | ||||||
|  |         ) | ||||||
|  |     elif subproject == "": | ||||||
|  |         context["project"] = base_project | ||||||
|  |         context["release_project"] = f"{base_project}:ToTest" | ||||||
|  |     else: # PR case direct python call | ||||||
|  |         context["base_project"] = True | ||||||
|  |         context["project"] = f"{base_project}:{subproject}" | ||||||
|  |         if scm_url is not None: | ||||||
|  |             context["scm_url"] = scm_url | ||||||
|  |  | ||||||
|  |     with open("_meta") as meta: | ||||||
|  |         template = Template(meta.read()) | ||||||
|  |     return template.render(context) | ||||||
|  |  | ||||||
|  | def main(): | ||||||
|  |     parser = argparse.ArgumentParser( | ||||||
|  |                     prog='ProgramName', | ||||||
|  |                     description='What the program does', | ||||||
|  |                     epilog='Text at the bottom of help') | ||||||
|  |     parser.add_argument("subproject", default="", choices=["", "ToTest", "Snapshot"], nargs="?") | ||||||
|  |     parser.add_argument("--internal", action="store_true") | ||||||
|  |     parser.add_argument("--pr") | ||||||
|  |     parser.add_argument("--scm-url") | ||||||
|  |     args = parser.parse_args() | ||||||
|  |     base_project = PROJECT.replace("isv", "ISV", 1) if args.internal else PROJECT | ||||||
|  |  | ||||||
|  |     print(render( | ||||||
|  |         base_project=base_project, | ||||||
|  |         subproject=args.subproject if args.pr is None else f"Staging:PR-{args.pr}", | ||||||
|  |         internal=args.internal, | ||||||
|  |         scm_url=args.scm_url, | ||||||
|  |     )) | ||||||
|  |  | ||||||
|  |  | ||||||
|  | if __name__ == "__main__": | ||||||
|  |     main() | ||||||
| @@ -9,7 +9,7 @@ from common import PROJECT | |||||||
|  |  | ||||||
| def get_obs_packages() -> Set[str]: | def get_obs_packages() -> Set[str]: | ||||||
|     packages = subprocess.run(["osc", "ls", PROJECT], encoding='utf-8' , capture_output=True) |     packages = subprocess.run(["osc", "ls", PROJECT], encoding='utf-8' , capture_output=True) | ||||||
|     return set(packages.stdout.splitlines()) |     return { p for p in packages.stdout.splitlines() if ":" not in p } | ||||||
|  |  | ||||||
| def get_local_packages() -> Set[str]: | def get_local_packages() -> Set[str]: | ||||||
|     p = pathlib.Path('.') |     p = pathlib.Path('.') | ||||||
|   | |||||||
							
								
								
									
										65
									
								
								.obs/trigger_package.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										65
									
								
								.obs/trigger_package.py
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,65 @@ | |||||||
|  | import xml.etree.ElementTree as ET | ||||||
|  | import subprocess | ||||||
|  |  | ||||||
|  | from sync_packages import get_local_packages | ||||||
|  | from common import PROJECT | ||||||
|  |  | ||||||
|  | def get_service_repo(package): | ||||||
|  |     with open(f"{package}/_service") as service: | ||||||
|  |         root = ET.parse(service).getroot() | ||||||
|  |         for service in root.findall("service"): | ||||||
|  |             if service.get("mode") in ["manual", "disabled"]: | ||||||
|  |                 continue | ||||||
|  |             if service.get("name") not in ["obs_scm", "tar_scm"]: | ||||||
|  |                 continue | ||||||
|  |             ref = service.find("param[@name='revision']").text | ||||||
|  |             repo = service.find("param[@name='url']").text | ||||||
|  |             return (repo, ref) | ||||||
|  |     return None | ||||||
|  |      | ||||||
|  |  | ||||||
|  | def get_remote_ref(project, package): | ||||||
|  |     files = subprocess.run(["osc", "ls", "-e", project, package], encoding='utf-8' , capture_output=True).stdout.splitlines() | ||||||
|  |     for filename in files: | ||||||
|  |         if filename.startswith("_service") and filename.endswith(".obsinfo"): | ||||||
|  |             obsinfo = subprocess.run(["osc", "cat", project, package, filename], encoding='utf-8' , capture_output=True).stdout.splitlines() | ||||||
|  |             for line in obsinfo: | ||||||
|  |                 if line.startswith("commit:"): | ||||||
|  |                     return line.split(':')[-1].strip() | ||||||
|  |  | ||||||
|  | def get_upstream_ref(repo, ref): | ||||||
|  |     refs = subprocess.run(["git", "ls-remote", repo, ref, f"{ref}^{{}}"], encoding='utf-8' , capture_output=True).stdout.splitlines() | ||||||
|  |     refpath = ref.split('/') | ||||||
|  |     best = None | ||||||
|  |     for rref in refs: | ||||||
|  |         value = rref.split('\t') | ||||||
|  |         (sha, name) = (value[0].strip(), value[1].strip()) | ||||||
|  |         namepath = name.split('/') | ||||||
|  |         if len(namepath) == len(refpath) or len(namepath) - 2 == len(refpath): | ||||||
|  |             if name.endswith(ref) and best is None: | ||||||
|  |                 best = sha | ||||||
|  |             if name.endswith("^{}"): | ||||||
|  |                 best = sha | ||||||
|  |     return best | ||||||
|  |  | ||||||
|  | def trigger_service(project, package): | ||||||
|  |     subprocess.run(["osc", "service", "remoterun", project, package], encoding="utf-8",check=True) | ||||||
|  |  | ||||||
|  | def main(): | ||||||
|  |     packages = get_local_packages() | ||||||
|  |     for package in packages: | ||||||
|  |         try: | ||||||
|  |             (repo, ref) = get_service_repo(package) | ||||||
|  |             print(f"{package} uses {repo} at {ref}") | ||||||
|  |         except: # Package is not using server side scm service | ||||||
|  |             continue | ||||||
|  |         remote_ref = get_remote_ref(PROJECT, package) | ||||||
|  |         upstream_ref = get_upstream_ref(repo, ref) | ||||||
|  |         if upstream_ref != remote_ref: | ||||||
|  |             print(f"\t{package} needs a refresh") | ||||||
|  |             print(f"\tOBS ref is {remote_ref}") | ||||||
|  |             print(f"\tgit ref is {upstream_ref}") | ||||||
|  |             trigger_service(PROJECT, package) | ||||||
|  |              | ||||||
|  | if __name__ == "__main__": | ||||||
|  |     main() | ||||||
							
								
								
									
										83
									
								
								.obs/wait_obs.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										83
									
								
								.obs/wait_obs.py
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,83 @@ | |||||||
|  | import xml.etree.ElementTree as ET | ||||||
|  | import subprocess | ||||||
|  | import time | ||||||
|  | import os | ||||||
|  | import sys | ||||||
|  |  | ||||||
|  | from collections import Counter | ||||||
|  |  | ||||||
|  | def get_buildstatus(project: str) -> ET.Element: | ||||||
|  |     for _ in range(5): | ||||||
|  |         try: | ||||||
|  |             output = subprocess.check_output(["osc", "pr", "--xml", project]) | ||||||
|  |             return ET.fromstring(output) | ||||||
|  |         except subprocess.CalledProcessError: | ||||||
|  |             continue | ||||||
|  |     print("Failed to get buildstatus from OBS") | ||||||
|  |  | ||||||
|  | def do_wait(project:str, commit:str) -> ET.Element: | ||||||
|  |     last_state = None | ||||||
|  |     while True: | ||||||
|  |         time.sleep(5) | ||||||
|  |         status = get_buildstatus(project) | ||||||
|  |         if last_state == status.get("state"): | ||||||
|  |             continue | ||||||
|  |         else: | ||||||
|  |             last_state = status.get("state") | ||||||
|  |  | ||||||
|  |         scminfo = { e.text for e in status.findall(".//scminfo") } | ||||||
|  |         if len(scminfo) != 1 or scminfo.pop() != commit: | ||||||
|  |             print("Waiting for OBS to sync with SCM") | ||||||
|  |             continue | ||||||
|  |  | ||||||
|  |         if not all([ e.get('state') == "published" and e.get('dirty') is None for e in status.findall("./result")]): | ||||||
|  |             print("Waiting for OBS to finish building") | ||||||
|  |             continue | ||||||
|  |  | ||||||
|  |         return status | ||||||
|  |          | ||||||
|  | def print_results(status: ET.Element) -> bool: | ||||||
|  |     results = {} | ||||||
|  |     failed = [] | ||||||
|  |     for e in status.findall("./result"): | ||||||
|  |         repo = results.get(e.get("repository"), {}) | ||||||
|  |         repo[e.get("arch")] = e | ||||||
|  |         results[e.get("repository")] = repo | ||||||
|  |      | ||||||
|  |     for repo in results.keys(): | ||||||
|  |         print(f"{repo}:") | ||||||
|  |         depth=1 | ||||||
|  |         for arch in results[repo].keys(): | ||||||
|  |             counts = Counter() | ||||||
|  |             if repo != "charts": | ||||||
|  |                 print(f"\t{arch}:") | ||||||
|  |                 depth=2 | ||||||
|  |             for package in results[repo][arch].findall("./status"): | ||||||
|  |                 if package.get("code") in ["excluded", "disabled"]: | ||||||
|  |                     continue | ||||||
|  |                 if package.get("code") in ["failed", "unresolvable", "broken"]: | ||||||
|  |                     details = package.findtext("details") | ||||||
|  |                     if details: | ||||||
|  |                         failed.append(f"{package.get('package')} ({arch}): {details}") | ||||||
|  |                     else: | ||||||
|  |                         failed.append(f"{package.get('package')} ({arch})") | ||||||
|  |                 counts[package.get("code")] += 1 | ||||||
|  |             for (code, count) in counts.items(): | ||||||
|  |                 print("\t"*depth, f"{code}: {count}") | ||||||
|  |      | ||||||
|  |     failed.sort() | ||||||
|  |     if failed: | ||||||
|  |         print("\nPackages failing: ") | ||||||
|  |     for fail in failed: | ||||||
|  |         print("\t", fail) | ||||||
|  |     return len(failed) | ||||||
|  |  | ||||||
|  | def main(): | ||||||
|  |     project = os.environ.get("OBS_PROJECT") | ||||||
|  |     sha = os.environ.get("GIT_SHA") | ||||||
|  |     print(f"Waiting for OBS to build {project} for commit {sha}") | ||||||
|  |     status = do_wait(project, sha) | ||||||
|  |     sys.exit(print_results(status)) | ||||||
|  |  | ||||||
|  | if __name__ == "__main__": | ||||||
|  |     main() | ||||||
| @@ -1,216 +0,0 @@ | |||||||
| staging_build: |  | ||||||
|   filters: |  | ||||||
|     event: pull_request |  | ||||||
|   steps: |  | ||||||
|   - branch_package: |  | ||||||
|       source_package: endpoint-copier-operator |  | ||||||
|       source_project: isv:SUSE:Edge:Factory |  | ||||||
|       target_project: isv:SUSE:Edge:Factory:Staging |  | ||||||
|   - branch_package: |  | ||||||
|       source_package: endpoint-copier-operator-image |  | ||||||
|       source_project: isv:SUSE:Edge:Factory |  | ||||||
|       target_project: isv:SUSE:Edge:Factory:Staging |  | ||||||
|   - branch_package: |  | ||||||
|       source_package: endpoint-copier-operator-chart |  | ||||||
|       source_project: isv:SUSE:Edge:Factory |  | ||||||
|       target_project: isv:SUSE:Edge:Factory:Staging |  | ||||||
|   - branch_package: |  | ||||||
|       source_package: akri |  | ||||||
|       source_project: isv:SUSE:Edge:Factory |  | ||||||
|       target_project: isv:SUSE:Edge:Factory:Staging |  | ||||||
|   - branch_package: |  | ||||||
|       source_package: akri-agent-image |  | ||||||
|       source_project: isv:SUSE:Edge:Factory |  | ||||||
|       target_project: isv:SUSE:Edge:Factory:Staging |  | ||||||
|   - branch_package: |  | ||||||
|       source_package: akri-chart |  | ||||||
|       source_project: isv:SUSE:Edge:Factory |  | ||||||
|       target_project: isv:SUSE:Edge:Factory:Staging |  | ||||||
|   - branch_package: |  | ||||||
|       source_package: akri-controller-image |  | ||||||
|       source_project: isv:SUSE:Edge:Factory |  | ||||||
|       target_project: isv:SUSE:Edge:Factory:Staging |  | ||||||
|   - branch_package: |  | ||||||
|       source_package: akri-dashboard-extension-chart |  | ||||||
|       source_project: isv:SUSE:Edge:Factory |  | ||||||
|       target_project: isv:SUSE:Edge:Factory:Staging |  | ||||||
|   - branch_package: |  | ||||||
|       source_package: akri-debug-echo-discovery-handler-image |  | ||||||
|       source_project: isv:SUSE:Edge:Factory |  | ||||||
|       target_project: isv:SUSE:Edge:Factory:Staging |  | ||||||
|   - branch_package: |  | ||||||
|       source_package: akri-onvif-discovery-handler-image |  | ||||||
|       source_project: isv:SUSE:Edge:Factory |  | ||||||
|       target_project: isv:SUSE:Edge:Factory:Staging |  | ||||||
|   - branch_package: |  | ||||||
|       source_package: akri-opcua-discovery-handler-image |  | ||||||
|       source_project: isv:SUSE:Edge:Factory |  | ||||||
|       target_project: isv:SUSE:Edge:Factory:Staging |  | ||||||
|   - branch_package: |  | ||||||
|       source_package: akri-udev-discovery-handler-image |  | ||||||
|       source_project: isv:SUSE:Edge:Factory |  | ||||||
|       target_project: isv:SUSE:Edge:Factory:Staging |  | ||||||
|   - branch_package: |  | ||||||
|       source_package: akri-webhook-configuration-image |  | ||||||
|       source_project: isv:SUSE:Edge:Factory |  | ||||||
|       target_project: isv:SUSE:Edge:Factory:Staging |  | ||||||
|   - branch_package: |  | ||||||
|       source_package: obs-service-set_version |  | ||||||
|       source_project: isv:SUSE:Edge:Factory |  | ||||||
|       target_project: isv:SUSE:Edge:Factory:Staging |  | ||||||
|   - branch_package: |  | ||||||
|       source_package: cosign |  | ||||||
|       source_project: isv:SUSE:Edge:Factory |  | ||||||
|       target_project: isv:SUSE:Edge:Factory:Staging |  | ||||||
|   - branch_package: |  | ||||||
|       source_package: frr-k8s |  | ||||||
|       source_project: isv:SUSE:Edge:Factory |  | ||||||
|       target_project: isv:SUSE:Edge:Factory:Staging |  | ||||||
|   - branch_package: |  | ||||||
|       source_package: kubectl |  | ||||||
|       source_project: isv:SUSE:Edge:Factory |  | ||||||
|       target_project: isv:SUSE:Edge:Factory:Staging |  | ||||||
|   - branch_package: |  | ||||||
|       source_package: upgrade-controller |  | ||||||
|       source_project: isv:SUSE:Edge:Factory |  | ||||||
|       target_project: isv:SUSE:Edge:Factory:Staging |  | ||||||
|   - branch_package: |  | ||||||
|       source_package: nm-configurator |  | ||||||
|       source_project: isv:SUSE:Edge:Factory |  | ||||||
|       target_project: isv:SUSE:Edge:Factory:Staging |  | ||||||
|   - branch_package: |  | ||||||
|       source_package: kube-rbac-proxy |  | ||||||
|       source_project: isv:SUSE:Edge:Factory |  | ||||||
|       target_project: isv:SUSE:Edge:Factory:Staging |  | ||||||
|   - branch_package: |  | ||||||
|       source_package: edge-image-builder |  | ||||||
|       source_project: isv:SUSE:Edge:Factory |  | ||||||
|       target_project: isv:SUSE:Edge:Factory:Staging |  | ||||||
|   - branch_package: |  | ||||||
|       source_package: metallb |  | ||||||
|       source_project: isv:SUSE:Edge:Factory |  | ||||||
|       target_project: isv:SUSE:Edge:Factory:Staging |  | ||||||
|   - branch_package: |  | ||||||
|       source_package: hauler |  | ||||||
|       source_project: isv:SUSE:Edge:Factory |  | ||||||
|       target_project: isv:SUSE:Edge:Factory:Staging |  | ||||||
|   - branch_package: |  | ||||||
|       source_package: ip-address-manager |  | ||||||
|       source_project: isv:SUSE:Edge:Factory |  | ||||||
|       target_project: isv:SUSE:Edge:Factory:Staging |  | ||||||
|   - branch_package: |  | ||||||
|       source_package: baremetal-operator |  | ||||||
|       source_project: isv:SUSE:Edge:Factory |  | ||||||
|       target_project: isv:SUSE:Edge:Factory:Staging |  | ||||||
|   - branch_package: |  | ||||||
|       source_package: cluster-api-provider-metal3 |  | ||||||
|       source_project: isv:SUSE:Edge:Factory |  | ||||||
|       target_project: isv:SUSE:Edge:Factory:Staging |  | ||||||
|   - branch_package: |  | ||||||
|       source_package: cdi-chart |  | ||||||
|       source_project: isv:SUSE:Edge:Factory |  | ||||||
|       target_project: isv:SUSE:Edge:Factory:Staging |  | ||||||
|   - branch_package: |  | ||||||
|       source_package: cluster-api-provider-metal3-image |  | ||||||
|       source_project: isv:SUSE:Edge:Factory |  | ||||||
|       target_project: isv:SUSE:Edge:Factory:Staging |  | ||||||
|   - branch_package: |  | ||||||
|       source_package: metallb-chart |  | ||||||
|       source_project: isv:SUSE:Edge:Factory |  | ||||||
|       target_project: isv:SUSE:Edge:Factory:Staging |  | ||||||
|   - branch_package: |  | ||||||
|       source_package: sriov-crd-chart |  | ||||||
|       source_project: isv:SUSE:Edge:Factory |  | ||||||
|       target_project: isv:SUSE:Edge:Factory:Staging |  | ||||||
|   - branch_package: |  | ||||||
|       source_package: upgrade-controller-chart |  | ||||||
|       source_project: isv:SUSE:Edge:Factory |  | ||||||
|       target_project: isv:SUSE:Edge:Factory:Staging |  | ||||||
|   - branch_package: |  | ||||||
|       source_package: edge-image-builder-image |  | ||||||
|       source_project: isv:SUSE:Edge:Factory |  | ||||||
|       target_project: isv:SUSE:Edge:Factory:Staging |  | ||||||
|   - branch_package: |  | ||||||
|       source_package: ironic-ipa-downloader-image |  | ||||||
|       source_project: isv:SUSE:Edge:Factory |  | ||||||
|       target_project: isv:SUSE:Edge:Factory:Staging |  | ||||||
|   - branch_package: |  | ||||||
|       source_package: upgrade-controller-image |  | ||||||
|       source_project: isv:SUSE:Edge:Factory |  | ||||||
|       target_project: isv:SUSE:Edge:Factory:Staging |  | ||||||
|   - branch_package: |  | ||||||
|       source_package: metal3-chart |  | ||||||
|       source_project: isv:SUSE:Edge:Factory |  | ||||||
|       target_project: isv:SUSE:Edge:Factory:Staging |  | ||||||
|   - branch_package: |  | ||||||
|       source_package: baremetal-operator-image |  | ||||||
|       source_project: isv:SUSE:Edge:Factory |  | ||||||
|       target_project: isv:SUSE:Edge:Factory:Staging |  | ||||||
|   - branch_package: |  | ||||||
|       source_package: sriov-network-operator-chart |  | ||||||
|       source_project: isv:SUSE:Edge:Factory |  | ||||||
|       target_project: isv:SUSE:Edge:Factory:Staging |  | ||||||
|   - branch_package: |  | ||||||
|       source_package: metallb-controller-image |  | ||||||
|       source_project: isv:SUSE:Edge:Factory |  | ||||||
|       target_project: isv:SUSE:Edge:Factory:Staging |  | ||||||
|   - branch_package: |  | ||||||
|       source_package: ip-address-manager-image |  | ||||||
|       source_project: isv:SUSE:Edge:Factory |  | ||||||
|       target_project: isv:SUSE:Edge:Factory:Staging |  | ||||||
|   - branch_package: |  | ||||||
|       source_package: metallb-speaker-image |  | ||||||
|       source_project: isv:SUSE:Edge:Factory |  | ||||||
|       target_project: isv:SUSE:Edge:Factory:Staging |  | ||||||
|   - branch_package: |  | ||||||
|       source_package: ironic-image |  | ||||||
|       source_project: isv:SUSE:Edge:Factory |  | ||||||
|       target_project: isv:SUSE:Edge:Factory:Staging |  | ||||||
|   - branch_package: |  | ||||||
|       source_package: cri-tools |  | ||||||
|       source_project: isv:SUSE:Edge:Factory |  | ||||||
|       target_project: isv:SUSE:Edge:Factory:Staging |  | ||||||
|   - branch_package: |  | ||||||
|       source_package: crudini |  | ||||||
|       source_project: isv:SUSE:Edge:Factory |  | ||||||
|       target_project: isv:SUSE:Edge:Factory:Staging |  | ||||||
|   - branch_package: |  | ||||||
|       source_package: fakeroot |  | ||||||
|       source_project: isv:SUSE:Edge:Factory |  | ||||||
|       target_project: isv:SUSE:Edge:Factory:Staging |  | ||||||
|   - branch_package: |  | ||||||
|       source_package: ipcalc |  | ||||||
|       source_project: isv:SUSE:Edge:Factory |  | ||||||
|       target_project: isv:SUSE:Edge:Factory:Staging |  | ||||||
|   - branch_package: |  | ||||||
|       source_package: autoconf |  | ||||||
|       source_project: isv:SUSE:Edge:Factory |  | ||||||
|       target_project: isv:SUSE:Edge:Factory:Staging |  | ||||||
|   - branch_package: |  | ||||||
|       source_package: rancher-turtles-airgap-resources-chart |  | ||||||
|       source_project: isv:SUSE:Edge:Factory |  | ||||||
|       target_project: isv:SUSE:Edge:Factory:Staging |  | ||||||
|   - branch_package: |  | ||||||
|       source_package: rancher-turtles-chart |  | ||||||
|       source_project: isv:SUSE:Edge:Factory |  | ||||||
|       target_project: isv:SUSE:Edge:Factory:Staging |  | ||||||
|   - branch_package: |  | ||||||
|       source_package: kube-rbac-proxy-image |  | ||||||
|       source_project: isv:SUSE:Edge:Factory |  | ||||||
|       target_project: isv:SUSE:Edge:Factory:Staging |  | ||||||
|   - branch_package: |  | ||||||
|       source_package: ironic-ipa-ramdisk |  | ||||||
|       source_project: isv:SUSE:Edge:Factory |  | ||||||
|       target_project: isv:SUSE:Edge:Factory:Staging |  | ||||||
|   - branch_package: |  | ||||||
|       source_package: kubevirt-dashboard-extension-chart |  | ||||||
|       source_project: isv:SUSE:Edge:Factory |  | ||||||
|       target_project: isv:SUSE:Edge:Factory:Staging |  | ||||||
|   - branch_package: |  | ||||||
|       source_package: kiwi-builder-image |  | ||||||
|       source_project: isv:SUSE:Edge:Factory |  | ||||||
|       target_project: isv:SUSE:Edge:Factory:Staging |  | ||||||
|   - branch_package: |  | ||||||
|       source_package: kubevirt-chart |  | ||||||
|       source_project: isv:SUSE:Edge:Factory |  | ||||||
|       target_project: isv:SUSE:Edge:Factory:Staging |  | ||||||
							
								
								
									
										15
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										15
									
								
								README.md
									
									
									
									
									
								
							| @@ -5,15 +5,6 @@ Contains the definition of the packages built on OBS for the SUSE Edge Solution | |||||||
| This repository is linked to an OBS project: <https://build.opensuse.org/project/show/isv:SUSE:Edge:Factory> | This repository is linked to an OBS project: <https://build.opensuse.org/project/show/isv:SUSE:Edge:Factory> | ||||||
| Every directory in this repository represents a package in that OBS project, those should be synced automatically from this repository. | Every directory in this repository represents a package in that OBS project, those should be synced automatically from this repository. | ||||||
|  |  | ||||||
| ## Adding a package |  | ||||||
|  |  | ||||||
| To add a package, first create a directory with your package as you intend it in OBS. |  | ||||||
|  |  | ||||||
| Then run the `.obs/add_package.py` script to create the package in the OBS project and add the required elements to the synchronization workflow. |  | ||||||
| This script is using the `osc` command behind the scenes, so ensure you have it installed and correctly configured, as well as you have the correct permissions to create a new package in the project. |  | ||||||
|  |  | ||||||
| You will then get asked to push your changes. |  | ||||||
|  |  | ||||||
| ## Testing a fork or a development branch | ## Testing a fork or a development branch | ||||||
|  |  | ||||||
| You can create a project in your home space in OBS, use the same prjconf as the one of "isv:SUSE:Edge:Factory", and copy the repositories part of the metadata (adjust self references). | You can create a project in your home space in OBS, use the same prjconf as the one of "isv:SUSE:Edge:Factory", and copy the repositories part of the metadata (adjust self references). | ||||||
| @@ -23,16 +14,14 @@ Then add a scmsync stanza to your metadata like this (adjust repository path and | |||||||
| <scmsync>https://src.opensuse.org/suse-edge/Factory#main</scmsync> | <scmsync>https://src.opensuse.org/suse-edge/Factory#main</scmsync> | ||||||
| ``` | ``` | ||||||
|  |  | ||||||
|  | This is done automatically for any PR filed against this repository. | ||||||
|  |  | ||||||
| ## Cutting a release version branch | ## Cutting a release version branch | ||||||
|  |  | ||||||
| 1. Do the appropriate git branch command | 1. Do the appropriate git branch command | ||||||
| 2. Change the project path in `.obs/common.py` file (e.g. from `isv:SUSE:Edge:Factory` to `isv:SUSE:Edge:3.2`) | 2. Change the project path in `.obs/common.py` file (e.g. from `isv:SUSE:Edge:Factory` to `isv:SUSE:Edge:3.2`) | ||||||
| 3. Change the branch reference in `.obs/common.py` file (e.g. from `main` to `3.2`) | 3. Change the branch reference in `.obs/common.py` file (e.g. from `main` to `3.2`) | ||||||
| 4. Edit the `.obs/workflows.yml` file to change the references to the correct projects |  | ||||||
| 5. Commit those changes to the new branch and push the new branch | 5. Commit those changes to the new branch and push the new branch | ||||||
| 6. Create the base and to-test projects (e.g. `isv:SUSE:Edge:3.2` and `isv:SUSE:Edge:3.2:ToTest`), use the `isv:SUSE:Edge:Factory` projects as example for metadata part |  | ||||||
| 7. Use the prjconf of Factory in all those projects |  | ||||||
| 8. Run the `.obs/sync_packages.py` script to create all the packages in the base project |  | ||||||
| 9. Go take a few cups of coffee/tea/mate/... while waiting for OBS to build everything | 9. Go take a few cups of coffee/tea/mate/... while waiting for OBS to build everything | ||||||
| 10. Once built do an `osc release` of the project for it to be copied over in the `ToTest` section | 10. Once built do an `osc release` of the project for it to be copied over in the `ToTest` section | ||||||
| 11. Hand over to QA to test whatever is in `ToTest`. (You can continue to work on the base branch if needed meanwhile) | 11. Hand over to QA to test whatever is in `ToTest`. (You can continue to work on the base branch if needed meanwhile) | ||||||
|   | |||||||
							
								
								
									
										173
									
								
								_config
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										173
									
								
								_config
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,173 @@ | |||||||
|  | Prefer: -libqpid-proton10 -python311-urllib3_1 | ||||||
|  |  | ||||||
|  | Macros: | ||||||
|  | %__python3 /usr/bin/python3.11 | ||||||
|  | %registry_url %(echo %{vendor} | cut -d '/' -f 3 | sed 's/build/registry/') | ||||||
|  | :Macros | ||||||
|  |  | ||||||
|  | %if "%{sub %{lower %_project} 1 14}" != "isv:suse:edge:" || "%{sub %_project 15 21}" == "Factory" | ||||||
|  |     # Here we are in Factory like project so set chart major version to 999 | ||||||
|  | Macros: | ||||||
|  | %chart_major 999 | ||||||
|  | :Macros | ||||||
|  | %else | ||||||
|  |     # Here we are in version branch, so set the image prefix and chart major accordingly | ||||||
|  | Macros: | ||||||
|  | %project_branch %(echo %{_project} | cut -d ':' -f 4) | ||||||
|  | %img_prefix %{project_branch}/ | ||||||
|  | %chart_major %(echo %{project_branch} | awk '{split($1,a,"."); print a[1]*100 + a[2]}') | ||||||
|  | :Macros | ||||||
|  | %endif | ||||||
|  |  | ||||||
|  | %if %{sub %_project 1 3} == ISV | ||||||
|  | Macros: | ||||||
|  | %img_repo registry.suse.com/edge | ||||||
|  | %chart_repo oci://registry.suse.com/edge | ||||||
|  | %chart_prefix charts/ | ||||||
|  | %manifest_repo registry.suse.com/edge | ||||||
|  | %support_level l3 | ||||||
|  | :Macros | ||||||
|  | %else | ||||||
|  | Macros: | ||||||
|  | %img_repo registry.opensuse.org/isv/suse/edge/containers/images | ||||||
|  | %manifest_repo registry.opensuse.org/isv/suse/edge/containers/images | ||||||
|  | %chart_repo oci://registry.opensuse.org/isv/suse/edge/containers/charts | ||||||
|  | %support_level techpreview | ||||||
|  | :Macros | ||||||
|  | %endif | ||||||
|  |  | ||||||
|  | %if "%_repository" == "charts" || "%_repository" == "test_manifest_images" | ||||||
|  | Macros: | ||||||
|  | %img_repo %(echo %{registry_url}:%{_project}:images | tr ":" "/" | tr '[:upper:]' '[:lower:]') | ||||||
|  | %manifest_repo %(echo %{registry_url}:%{_project}:test_manifest_images | tr ":" "/" | tr '[:upper:]' '[:lower:]') | ||||||
|  | %chart_repo oci://%(echo %{registry_url}:%{_project}:charts | tr ":" "/" | tr '[:upper:]' '[:lower:]') | ||||||
|  | %chart_prefix %(echo "") | ||||||
|  | :Macros | ||||||
|  | %endif | ||||||
|  |  | ||||||
|  | # Missing deps for testsuite | ||||||
|  | BuildFlags: excludebuild:autoconf:el | ||||||
|  | BuildFlags: excludebuild:autoconf:testsuite | ||||||
|  |  | ||||||
|  | # Only build manifest embedding images here | ||||||
|  | %if "%_repository" == "test_manifest_images" | ||||||
|  | BuildFlags: onlybuild:edge-image-builder-image | ||||||
|  | BuildFlags: onlybuild:release-manifest-image | ||||||
|  |   # Exclude the images selected by the following section | ||||||
|  |   # as the standard repository is a dependency | ||||||
|  |   %ifarch aarch64 | ||||||
|  |     BuildFlags: excludebuild:baremetal-operator-image | ||||||
|  |     BuildFlags: excludebuild:endpoint-copier-operator-image | ||||||
|  |     BuildFlags: excludebuild:ironic-image | ||||||
|  |     BuildFlags: excludebuild:ironic-ipa-downloader-image | ||||||
|  |     BuildFlags: excludebuild:kubectl-image | ||||||
|  |     BuildFlags: excludebuild:kube-rbac-proxy-image | ||||||
|  |     BuildFlags: excludebuild:metallb-controller-image | ||||||
|  |     BuildFlags: excludebuild:metallb-speaker-image | ||||||
|  |   %endif | ||||||
|  | %else | ||||||
|  | # Only a subset of stack is arm64 ready | ||||||
|  |   %ifarch aarch64 | ||||||
|  |     BuildFlags: onlybuild:autoconf | ||||||
|  |     BuildFlags: onlybuild:baremetal-operator | ||||||
|  |     BuildFlags: onlybuild:baremetal-operator-image | ||||||
|  |     BuildFlags: onlybuild:ca-certificates-suse | ||||||
|  |     BuildFlags: onlybuild:container-build-checks | ||||||
|  |     BuildFlags: onlybuild:crudini | ||||||
|  |     BuildFlags: onlybuild:edge-build-checks | ||||||
|  |     BuildFlags: onlybuild:edge-image-builder | ||||||
|  |     BuildFlags: onlybuild:edge-image-builder-image | ||||||
|  |     BuildFlags: onlybuild:endpoint-copier-operator | ||||||
|  |     BuildFlags: onlybuild:endpoint-copier-operator-image | ||||||
|  |     BuildFlags: onlybuild:fakeroot | ||||||
|  |     BuildFlags: onlybuild:hauler | ||||||
|  |     BuildFlags: onlybuild:ipcalc | ||||||
|  |     BuildFlags: onlybuild:ironic-image | ||||||
|  |     BuildFlags: onlybuild:ironic-ipa-downloader-image | ||||||
|  |     BuildFlags: onlybuild:ironic-ipa-ramdisk | ||||||
|  |     BuildFlags: onlybuild:kubectl | ||||||
|  |     BuildFlags: onlybuild:kubectl-image | ||||||
|  |     BuildFlags: onlybuild:kube-rbac-proxy | ||||||
|  |     BuildFlags: onlybuild:kube-rbac-proxy-image | ||||||
|  |     BuildFlags: onlybuild:metallb | ||||||
|  |     BuildFlags: onlybuild:metallb-controller-image | ||||||
|  |     BuildFlags: onlybuild:metallb-speaker-image | ||||||
|  |     BuildFlags: onlybuild:nm-configurator | ||||||
|  |     BuildFlags: onlybuild:shim-noarch | ||||||
|  |   %endif | ||||||
|  | %endif | ||||||
|  |  | ||||||
|  | %if "%_repository" == "images" || "%_repository" == "test_manifest_images" | ||||||
|  |     Prefer: container:sles15-image | ||||||
|  |     Type: docker | ||||||
|  |     Repotype: none | ||||||
|  |     Patterntype: none | ||||||
|  |     BuildEngine: podman | ||||||
|  |     Prefer: sles-release | ||||||
|  |     BuildFlags: dockerarg:SLE_VERSION=15.6 | ||||||
|  |  | ||||||
|  |     # Publish multi-arch container images only once all archs have been built | ||||||
|  |     PublishFlags: archsync | ||||||
|  |  | ||||||
|  |     # skopeo and umoci are used by build scripts to list packages | ||||||
|  |     Substitute: system-packages:podman podman buildah createrepo_c release-compare edge-build-checks skopeo umoci | ||||||
|  |  | ||||||
|  | %endif | ||||||
|  |  | ||||||
|  | %if "%_repository" == "images_16.0" | ||||||
|  |     Prefer: container:sles15-image | ||||||
|  |     Type: docker | ||||||
|  |     BuildEngine: podman | ||||||
|  |     Repotype: none | ||||||
|  |     Patterntype: none | ||||||
|  |     BuildFlags: dockerarg:SLE_VERSION=16.0 | ||||||
|  |     BuildFlags: onlybuild:kiwi-builder-image | ||||||
|  |  | ||||||
|  |     # Publish multi-arch container images only once all archs have been built | ||||||
|  |     PublishFlags: archsync | ||||||
|  |  | ||||||
|  |     # Exclude the images selected by the aarch64 section | ||||||
|  |     %ifarch aarch64 | ||||||
|  |       BuildFlags: excludebuild:baremetal-operator-image | ||||||
|  |       BuildFlags: excludebuild:edge-image-builder-image | ||||||
|  |       BuildFlags: excludebuild:endpoint-copier-operator-image | ||||||
|  |       BuildFlags: excludebuild:ironic-image | ||||||
|  |       BuildFlags: excludebuild:ironic-ipa-downloader-image | ||||||
|  |       BuildFlags: excludebuild:kubectl-image | ||||||
|  |       BuildFlags: excludebuild:kube-rbac-proxy-image | ||||||
|  |       BuildFlags: excludebuild:metallb-controller-image | ||||||
|  |       BuildFlags: excludebuild:metallb-speaker-image | ||||||
|  |     %endif | ||||||
|  |  | ||||||
|  | %else | ||||||
|  |     BuildFlags: excludebuild:kiwi-builder-image | ||||||
|  | %endif | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  | %if "%_repository" == "charts" || "%_repository" == "phantomcharts" || "%_repository" == "releasecharts" | ||||||
|  |     Type: helm | ||||||
|  |     Repotype: helm | ||||||
|  |     Patterntype: none | ||||||
|  |     Required: perl-YAML-LibYAML | ||||||
|  |  | ||||||
|  |     # include edge-build-checks here | ||||||
|  |     Support: edge-build-checks | ||||||
|  | %endif | ||||||
|  |  | ||||||
|  | %if "%_repository" == "standard" | ||||||
|  |     # for build openstack-ironic-image | ||||||
|  |     BuildFlags: allowrootforbuild | ||||||
|  |  | ||||||
|  |     # ironic-ipa-ramdisk are noarch packages that need to be availble to both archs | ||||||
|  |     ExportFilter: ^ironic-ipa-ramdisk-.*\.noarch\.rpm$ aarch64 x86_64 | ||||||
|  | %endif | ||||||
|  |  | ||||||
|  | # Enable reproducible builds | ||||||
|  | # https://en.opensuse.org/openSUSE:Reproducible_Builds\#With_OBS | ||||||
|  | Macros: | ||||||
|  | %source_date_epoch_from_changelog Y | ||||||
|  | %clamp_mtime_to_source_date_epoch Y | ||||||
|  | %use_source_date_epoch_as_buildtime Y | ||||||
|  | %_buildhost reproducible | ||||||
|  | :Macros | ||||||
							
								
								
									
										75
									
								
								_meta
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										75
									
								
								_meta
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,75 @@ | |||||||
|  | {#-  | ||||||
|  |   This template is rendered by the render_meta.py script | ||||||
|  |   it is not automatically enforced by OBS | ||||||
|  | -#} | ||||||
|  | {%- set maintainers = [ | ||||||
|  |     "edge-engineering", | ||||||
|  | ] -%} | ||||||
|  | <project name="{{ project }}"> | ||||||
|  |   <title>{{ title }}</title> | ||||||
|  |   {%- if description is defined %} | ||||||
|  |   <description>{{ description }}</description> | ||||||
|  |   {%- else %} | ||||||
|  |   <description/> | ||||||
|  |   {%- endif %} | ||||||
|  |   {%- if scm_url is defined %} | ||||||
|  |   <scmsync>{{ scm_url }}</scmsync> | ||||||
|  |   {%- endif %} | ||||||
|  | {%- for maintainer in maintainers %} | ||||||
|  |   <person userid="{{ maintainer }}" role="maintainer"/> | ||||||
|  | {%- endfor %} | ||||||
|  | {%- if not base_project %} | ||||||
|  |   <build> | ||||||
|  |     <disable/> | ||||||
|  |     <enable repository="charts"/> | ||||||
|  |     <enable repository="test_manifest_images"/> | ||||||
|  |   </build> | ||||||
|  |   <publish> | ||||||
|  |     <disable repository="phantomcharts"/> | ||||||
|  |   </publish> | ||||||
|  |   <repository name="phantomcharts"> | ||||||
|  |     <arch>x86_64</arch> | ||||||
|  |   </repository> | ||||||
|  | {%- endif %} | ||||||
|  | {%- for repository in ["images", "images_16.0", "test_manifest_images"] %} | ||||||
|  |   <repository name="{{ repository }}"> | ||||||
|  |     {%- if release_project is defined and repository != "test_manifest_images" %} | ||||||
|  |     <releasetarget project="{{ release_project }}" repository="images" trigger="manual"/> | ||||||
|  |     {%- endif %} | ||||||
|  |     <path project="SUSE:Registry" repository="standard"/> | ||||||
|  |     {%- if repository == "images_16.0" %} | ||||||
|  |       <path project="SUSE:CA" repository="16.0"/> | ||||||
|  |       <path project="SUSE:SLFO:Products:SLES:16.0" repository="standard"/> | ||||||
|  |       <path project="SUSE:SLFO:Main:Build" repository="standard"/> | ||||||
|  |     {%- else %} | ||||||
|  |       <path project="SUSE:CA" repository="SLE_15_SP6"/> | ||||||
|  |       <path project="{{ project }}" repository="standard"/> | ||||||
|  |     {%- endif %} | ||||||
|  |     <arch>x86_64</arch> | ||||||
|  |     <arch>aarch64</arch> | ||||||
|  |   </repository> | ||||||
|  | {%- endfor %} | ||||||
|  |   <repository name="standard" block="local"> | ||||||
|  |     {%- if release_project is defined and not for_release %} | ||||||
|  |     <releasetarget project="{{ release_project }}" repository="standard" trigger="manual"/> | ||||||
|  |     {%- endif %} | ||||||
|  |     <path project="{{ ironic_base }}:2024.2" repository="15.6"/> | ||||||
|  |     <path project="SUSE:SLE-15-SP6:Update" repository="standard"/> | ||||||
|  |     <arch>x86_64</arch> | ||||||
|  |     <arch>aarch64</arch> | ||||||
|  |   </repository> | ||||||
|  |   <repository name="charts"{{ ' rebuild="local"' if not base_project }}> | ||||||
|  |     {%- if release_project is defined and not for_release %} | ||||||
|  |     <releasetarget project="{{ release_project }}" repository="phantomcharts" trigger="manual"/> | ||||||
|  |     {%- endif %} | ||||||
|  |     <path project="{{ project }}" repository="standard"/> | ||||||
|  |     <arch>x86_64</arch> | ||||||
|  |   </repository> | ||||||
|  |   {%- if for_release %} | ||||||
|  |   <repository name="releasecharts" rebuild="local"> | ||||||
|  |     <releasetarget project="{{ release_project }}" repository="charts" trigger="manual"/> | ||||||
|  |     <path project="{{ project }}" repository="standard"/> | ||||||
|  |     <arch>x86_64</arch> | ||||||
|  |   </repository> | ||||||
|  |   {%- endif %} | ||||||
|  | </project> | ||||||
| @@ -1,5 +1,5 @@ | |||||||
| #!BuildTag: %%IMG_PREFIX%%akri-chart:0.12.20 | #!BuildTag: %%CHART_PREFIX%%akri:%%CHART_MAJOR%%.0.0_up0.12.20 | ||||||
| #!BuildTag: %%IMG_PREFIX%%akri-chart:0.12.20-%RELEASE% | #!BuildTag: %%CHART_PREFIX%%akri:%%CHART_MAJOR%%.0.0_up0.12.20-%RELEASE% | ||||||
| annotations: | annotations: | ||||||
|   catalog.cattle.io/display-name: Akri |   catalog.cattle.io/display-name: Akri | ||||||
| apiVersion: v2 | apiVersion: v2 | ||||||
| @@ -8,4 +8,4 @@ description: A Helm chart for Akri | |||||||
| icon: https://raw.githubusercontent.com/project-akri/akri-docs/main/art/icon/akri-icon-light.svg | icon: https://raw.githubusercontent.com/project-akri/akri-docs/main/art/icon/akri-icon-light.svg | ||||||
| name: akri | name: akri | ||||||
| type: application | type: application | ||||||
| version: 0.12.20 | version: "%%CHART_MAJOR%%.0.0+up0.12.20" | ||||||
|   | |||||||
| @@ -9,7 +9,9 @@ | |||||||
|   </service> |   </service> | ||||||
|   <service name="replace_using_env" mode="buildtime"> |   <service name="replace_using_env" mode="buildtime"> | ||||||
|     <param name="file">Chart.yaml</param> |     <param name="file">Chart.yaml</param> | ||||||
|     <param name="eval">IMG_PREFIX=$(rpm --macros=/root/.rpmmacros -E %{?img_prefix})</param> |     <param name="eval">CHART_PREFIX=$(rpm --macros=/root/.rpmmacros -E %{?chart_prefix})</param> | ||||||
|     <param name="var">IMG_PREFIX</param> |     <param name="var">CHART_PREFIX</param> | ||||||
|  |     <param name="eval">CHART_MAJOR=$(rpm --macros=/root/.rpmmacros -E %{?chart_major})</param> | ||||||
|  |     <param name="var">CHART_MAJOR</param> | ||||||
|   </service> |   </service> | ||||||
| </services> | </services> | ||||||
|   | |||||||
| @@ -853,7 +853,7 @@ webhookConfiguration: | |||||||
|     pullPolicy: Always |     pullPolicy: Always | ||||||
|   certImage: |   certImage: | ||||||
|     # reference is the webhook-certgen image reference |     # reference is the webhook-certgen image reference | ||||||
|     reference: registry.k8s.io/ingress-nginx/kube-webhook-certgen |     reference: registry.rancher.com/rancher/mirrored-ingress-nginx-kube-webhook-certgen | ||||||
|     # tag is the webhook-certgen image tag |     # tag is the webhook-certgen image tag | ||||||
|     tag: v1.1.1 |     tag: v1.1.1 | ||||||
|     # pullPolicy is the webhook-certgen pull policy |     # pullPolicy is the webhook-certgen pull policy | ||||||
|   | |||||||
| @@ -1,20 +1,22 @@ | |||||||
| #!BuildTag: %%IMG_PREFIX%%akri-dashboard-extension-chart:1.2.0 | #!BuildTag: %%CHART_PREFIX%%akri-dashboard-extension:%%CHART_MAJOR%%.0.1 | ||||||
| #!BuildTag: %%IMG_PREFIX%%akri-dashboard-extension-chart:1.2.0-%RELEASE% | #!BuildTag: %%CHART_PREFIX%%akri-dashboard-extension:%%CHART_MAJOR%%.0.1_up1.3.0 | ||||||
|  | #!BuildTag: %%CHART_PREFIX%%akri-dashboard-extension:%%CHART_MAJOR%%.0.1_up1.3.0-%RELEASE% | ||||||
| annotations: | annotations: | ||||||
|   catalog.cattle.io/certified: rancher |   catalog.cattle.io/certified: rancher | ||||||
|   catalog.cattle.io/display-name: Akri |  | ||||||
|   catalog.cattle.io/kube-version: '>= v1.26.0-0' |  | ||||||
|   catalog.cattle.io/namespace: cattle-ui-plugin-system |   catalog.cattle.io/namespace: cattle-ui-plugin-system | ||||||
|   catalog.cattle.io/os: linux |   catalog.cattle.io/os: linux | ||||||
|   catalog.cattle.io/permits-os: linux, windows |   catalog.cattle.io/permits-os: linux, windows | ||||||
|   catalog.cattle.io/rancher-version: '>= 2.10.0-0' |  | ||||||
|   catalog.cattle.io/scope: management |   catalog.cattle.io/scope: management | ||||||
|   catalog.cattle.io/ui-component: plugins |   catalog.cattle.io/ui-component: plugins | ||||||
|   catalog.cattle.io/ui-extensions-version: '>= 3.0.0' |   catalog.cattle.io/display-name: Akri | ||||||
|  |   catalog.cattle.io/rancher-version: '>= 2.11.0-0' | ||||||
|  |   catalog.cattle.io/ui-extensions-version: '>= 3.0.4 < 4.0.0' | ||||||
|  |   catalog.cattle.io/kube-version: '>= v1.26.0-0' | ||||||
| apiVersion: v2 | apiVersion: v2 | ||||||
| appVersion: 1.2.0 | appVersion: 303.0.1+up1.3.0 | ||||||
| description: 'SUSE Edge: Akri extension for Rancher Dashboard' | description: 'SUSE Edge: Akri extension for Rancher Dashboard' | ||||||
| icon: https://raw.githubusercontent.com/cncf/artwork/main/projects/akri/icon/color/akri-icon-color.svg |  | ||||||
| name: akri-dashboard-extension | name: akri-dashboard-extension | ||||||
| type: application | type: application | ||||||
| version: 1.2.0 | version: "%%CHART_MAJOR%%.0.1+up1.3.0" | ||||||
|  | icon: >- | ||||||
|  |   https://raw.githubusercontent.com/cncf/artwork/main/projects/akri/icon/color/akri-icon-color.svg | ||||||
|   | |||||||
| @@ -9,7 +9,9 @@ | |||||||
|   </service> |   </service> | ||||||
|   <service name="replace_using_env" mode="buildtime"> |   <service name="replace_using_env" mode="buildtime"> | ||||||
|     <param name="file">Chart.yaml</param> |     <param name="file">Chart.yaml</param> | ||||||
|     <param name="eval">IMG_PREFIX=$(rpm --macros=/root/.rpmmacros -E %{?img_prefix})</param> |     <param name="eval">CHART_PREFIX=$(rpm --macros=/root/.rpmmacros -E %{?chart_prefix})</param> | ||||||
|     <param name="var">IMG_PREFIX</param> |     <param name="var">CHART_PREFIX</param> | ||||||
|  |     <param name="eval">CHART_MAJOR=$(rpm --macros=/root/.rpmmacros -E %{?chart_major})</param> | ||||||
|  |     <param name="var">CHART_MAJOR</param> | ||||||
|   </service> |   </service> | ||||||
| </services> | </services> | ||||||
|   | |||||||
| @@ -38,7 +38,7 @@ Common labels | |||||||
| helm.sh/chart: {{ include "extension-server.chart" . }} | helm.sh/chart: {{ include "extension-server.chart" . }} | ||||||
| {{ include "extension-server.selectorLabels" . }} | {{ include "extension-server.selectorLabels" . }} | ||||||
| {{- if .Chart.AppVersion }} | {{- if .Chart.AppVersion }} | ||||||
| app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} | app.kubernetes.io/version: {{ .Chart.AppVersion | replace "+" "_" | quote }} | ||||||
| {{- end }} | {{- end }} | ||||||
| app.kubernetes.io/managed-by: {{ .Release.Service }} | app.kubernetes.io/managed-by: {{ .Release.Service }} | ||||||
| {{- end }} | {{- end }} | ||||||
| @@ -60,4 +60,4 @@ Pkg annotations | |||||||
| {{ $key }}: {{ $value | quote }} | {{ $key }}: {{ $value | quote }} | ||||||
| {{- end }} | {{- end }} | ||||||
| {{- end }} | {{- end }} | ||||||
| {{- end }} | {{- end }} | ||||||
|   | |||||||
| @@ -8,7 +8,7 @@ spec: | |||||||
|   plugin: |   plugin: | ||||||
|     name: {{ include "extension-server.fullname" . }} |     name: {{ include "extension-server.fullname" . }} | ||||||
|     version: {{ (semver (default .Chart.AppVersion .Values.plugin.versionOverride)).Original }} |     version: {{ (semver (default .Chart.AppVersion .Values.plugin.versionOverride)).Original }} | ||||||
|     endpoint: https://raw.githubusercontent.com/suse-edge/dashboard-extensions/gh-pages/extensions/akri-dashboard-extension/1.2.0 |     endpoint: https://raw.githubusercontent.com/suse-edge/dashboard-extensions/gh-pages/extensions/akri-dashboard-extension/303.0.1+up1.3.0 | ||||||
|     noCache: {{ .Values.plugin.noCache }} |     noCache: {{ .Values.plugin.noCache }} | ||||||
|     noAuth: {{ .Values.plugin.noAuth }} |     noAuth: {{ .Values.plugin.noAuth }} | ||||||
|     metadata: {{ include "extension-server.pluginMetadata" . | indent 6 }} |     metadata: {{ include "extension-server.pluginMetadata" . | indent 6 }} | ||||||
|   | |||||||
| @@ -7,6 +7,6 @@ plugin: | |||||||
|   noAuth: false |   noAuth: false | ||||||
|   metadata: |   metadata: | ||||||
|     catalog.cattle.io/display-name: Akri |     catalog.cattle.io/display-name: Akri | ||||||
|     catalog.cattle.io/rancher-version: ">= 2.10.0-0" |     catalog.cattle.io/rancher-version: ">= 2.11.0-0" | ||||||
|     catalog.cattle.io/ui-extensions-version: ">= 3.0.0" |     catalog.cattle.io/ui-extensions-version: ">= 3.0.4 < 4.0.0" | ||||||
|     catalog.cattle.io/kube-version: ">= v1.26.0-0" |     catalog.cattle.io/kube-version: ">= v1.26.0-0" | ||||||
|   | |||||||
| @@ -10,7 +10,9 @@ | |||||||
| 	<service name="cargo_vendor" mode="manual"> | 	<service name="cargo_vendor" mode="manual"> | ||||||
| 		<param name="srcdir">akri</param> | 		<param name="srcdir">akri</param> | ||||||
| 	</service> | 	</service> | ||||||
| 	<service name="tar" mode="buildtime" /> | 	<service name="tar" mode="buildtime"> | ||||||
|  | 		<param name="obsinfo">akri.obsinfo</param> | ||||||
|  | 	</service> | ||||||
| 	<service name="set_version" mode="buildtime" > | 	<service name="set_version" mode="buildtime" > | ||||||
| 		<param name="fromfile">version.txt</param> | 		<param name="fromfile">version.txt</param> | ||||||
| 		<param name="regex">^(.*)$</param> | 		<param name="regex">^(.*)$</param> | ||||||
|   | |||||||
| @@ -2,7 +2,7 @@ | |||||||
|  <service name="obs_scm"> |  <service name="obs_scm"> | ||||||
|     <param name="url">https://github.com/metal3-io/baremetal-operator</param> |     <param name="url">https://github.com/metal3-io/baremetal-operator</param> | ||||||
|     <param name="scm">git</param> |     <param name="scm">git</param> | ||||||
|     <param name="revision">v0.8.0</param> |     <param name="revision">v0.9.1</param> | ||||||
|     <param name="version">_auto_</param> |     <param name="version">_auto_</param> | ||||||
|     <param name="versionformat">@PARENT_TAG@</param> |     <param name="versionformat">@PARENT_TAG@</param> | ||||||
|     <param name="changesgenerate">enable</param> |     <param name="changesgenerate">enable</param> | ||||||
| @@ -12,10 +12,8 @@ | |||||||
|     <param name="without-version">yes</param> |     <param name="without-version">yes</param> | ||||||
|     <param name="versionrewrite-replacement">\1</param> |     <param name="versionrewrite-replacement">\1</param> | ||||||
|   </service> |   </service> | ||||||
|   <service mode="buildtime" name="tar" /> |   <service mode="buildtime" name="tar"> | ||||||
|   <service mode="buildtime" name="recompress"> |     <param name="obsinfo">baremetal-operator.obsinfo</param> | ||||||
|     <param name="file">*.tar</param> |  | ||||||
|     <param name="compression">gz</param> |  | ||||||
|   </service> |   </service> | ||||||
|    <service name="go_modules"> |    <service name="go_modules"> | ||||||
|   </service> |   </service> | ||||||
| @@ -23,7 +21,7 @@ | |||||||
|     <param name="file">baremetal-operator.spec</param> |     <param name="file">baremetal-operator.spec</param> | ||||||
|     <param name="var">SOURCE_COMMIT</param> |     <param name="var">SOURCE_COMMIT</param> | ||||||
|     <param name="eval"> |     <param name="eval"> | ||||||
|       SOURCE_COMMIT=$(grep commit *.obsinfo | cut -d" " -f2) |       SOURCE_COMMIT=$(grep commit baremetal-operator.obsinfo | cut -d" " -f2) | ||||||
|     </param> |     </param> | ||||||
|     <param name="verbose">1</param> |     <param name="verbose">1</param> | ||||||
|   </service> |   </service> | ||||||
|   | |||||||
| @@ -17,14 +17,14 @@ | |||||||
|  |  | ||||||
|  |  | ||||||
| Name:           baremetal-operator | Name:           baremetal-operator | ||||||
| Version:        0.8.0 | Version:        0.9.1 | ||||||
| Release:        0.8.0 | Release:        0 | ||||||
| Summary:        Implements a Kubernetes API for managing bare metal hosts | Summary:        Implements a Kubernetes API for managing bare metal hosts | ||||||
| License:        Apache-2.0 | License:        Apache-2.0 | ||||||
| URL:            https://github.com/metal3-io/baremetal-operator | URL:            https://github.com/metal3-io/baremetal-operator | ||||||
| Source:         baremetal-operator-%{version}.tar.gz | Source:         baremetal-operator-%{version}.tar | ||||||
| Source1:        vendor.tar.gz | Source1:        vendor.tar.gz | ||||||
| BuildRequires:  golang(API) = 1.22 | BuildRequires:  golang(API) = 1.23 | ||||||
| ExcludeArch:    s390 | ExcludeArch:    s390 | ||||||
| ExcludeArch:    %{ix86} | ExcludeArch:    %{ix86} | ||||||
|  |  | ||||||
|   | |||||||
| @@ -1,9 +1,9 @@ | |||||||
| #!BuildTag: %%IMG_PREFIX%%cdi-chart:0.4.0 | #!BuildTag: %%CHART_PREFIX%%cdi:%%CHART_MAJOR%%.0.0_up0.4.0 | ||||||
| #!BuildTag: %%IMG_PREFIX%%cdi-chart:0.4.0-%RELEASE% | #!BuildTag: %%CHART_PREFIX%%cdi:%%CHART_MAJOR%%.0.0_up0.4.0-%RELEASE% | ||||||
| apiVersion: v2 | apiVersion: v2 | ||||||
| appVersion: 1.60.1 | appVersion: 1.60.1 | ||||||
| description: A Helm chart for Containerized Data Importer (CDI) | description: A Helm chart for Containerized Data Importer (CDI) | ||||||
| icon: https://raw.githubusercontent.com/cncf/artwork/main/projects/kubevirt/icon/color/kubevirt-icon-color.svg | icon: https://raw.githubusercontent.com/cncf/artwork/main/projects/kubevirt/icon/color/kubevirt-icon-color.svg | ||||||
| name: cdi | name: cdi | ||||||
| type: application | type: application | ||||||
| version: 0.4.0 | version: "%%CHART_MAJOR%%.0.0+up0.4.0" | ||||||
|   | |||||||
| @@ -2,7 +2,9 @@ | |||||||
|   <service mode="buildtime" name="kiwi_metainfo_helper"/> |   <service mode="buildtime" name="kiwi_metainfo_helper"/> | ||||||
|   <service name="replace_using_env" mode="buildtime"> |   <service name="replace_using_env" mode="buildtime"> | ||||||
|     <param name="file">Chart.yaml</param> |     <param name="file">Chart.yaml</param> | ||||||
|     <param name="eval">IMG_PREFIX=$(rpm --macros=/root/.rpmmacros -E %{?img_prefix})</param> |     <param name="eval">CHART_PREFIX=$(rpm --macros=/root/.rpmmacros -E %{?chart_prefix})</param> | ||||||
|     <param name="var">IMG_PREFIX</param> |     <param name="var">CHART_PREFIX</param> | ||||||
|  |     <param name="eval">CHART_MAJOR=$(rpm --macros=/root/.rpmmacros -E %{?chart_major})</param> | ||||||
|  |     <param name="var">CHART_MAJOR</param> | ||||||
|   </service> |   </service> | ||||||
| </services> | </services> | ||||||
|   | |||||||
| @@ -25,7 +25,7 @@ cdi: | |||||||
|     nodeSelector: |     nodeSelector: | ||||||
|       kubernetes.io/os: linux |       kubernetes.io/os: linux | ||||||
|  |  | ||||||
| hookImage: rancher/kubectl:v1.30.2 | hookImage: registry.rancher.com/rancher/kubectl:v1.30.10 | ||||||
| hookRestartPolicy: OnFailure | hookRestartPolicy: OnFailure | ||||||
| hookSecurityContext: | hookSecurityContext: | ||||||
|   seccompProfile: |   seccompProfile: | ||||||
|   | |||||||
| @@ -1,36 +0,0 @@ | |||||||
| # SPDX-License-Identifier: Apache-2.0 |  | ||||||
| #!BuildTag: %%IMG_PREFIX%%cluster-api-provider-metal3:v%%cluster-api-provider-metal3_version%% |  | ||||||
| #!BuildTag: %%IMG_PREFIX%%cluster-api-provider-metal3:%%cluster-api-provider-metal3_version%% |  | ||||||
| #!BuildTag: %%IMG_PREFIX%%cluster-api-provider-metal3:%%cluster-api-provider-metal3_version%%-%RELEASE% |  | ||||||
| #!BuildVersion: 15.6 |  | ||||||
| ARG SLE_VERSION |  | ||||||
| FROM registry.suse.com/bci/bci-micro:$SLE_VERSION AS micro |  | ||||||
|  |  | ||||||
| FROM registry.suse.com/bci/bci-base:$SLE_VERSION AS base |  | ||||||
| COPY --from=micro / /installroot/ |  | ||||||
| RUN zypper --installroot /installroot --non-interactive install --no-recommends cluster-api-provider-metal3 shadow; zypper -n clean; rm -rf /var/log/* |  | ||||||
|  |  | ||||||
| FROM micro AS final |  | ||||||
| # Define labels according to https://en.opensuse.org/Building_derived_containers |  | ||||||
| # labelprefix=com.suse.application.cluster-api-provider-metal3 |  | ||||||
| LABEL org.opencontainers.image.authors="SUSE LLC (https://www.suse.com/)" |  | ||||||
| LABEL org.opencontainers.image.title="SLE cluster-api-provider-metal3 Container Image" |  | ||||||
| LABEL org.opencontainers.image.description="cluster-api-provider-metal3 based on the SLE Base Container Image." |  | ||||||
| LABEL org.opencontainers.image.version="%%cluster-api-provider-metal3_version%%" |  | ||||||
| LABEL org.opencontainers.image.url="https://www.suse.com/products/server/" |  | ||||||
| LABEL org.opencontainers.image.created="%BUILDTIME%" |  | ||||||
| LABEL org.opencontainers.image.vendor="SUSE LLC" |  | ||||||
| LABEL org.opensuse.reference="%%IMG_REPO%%/%%IMG_PREFIX%%cluster-api-provider-metal3:%%cluster-api-provider-metal3_version%%-%RELEASE%" |  | ||||||
| LABEL org.openbuildservice.disturl="%DISTURL%" |  | ||||||
| LABEL com.suse.supportlevel="%%SUPPORT_LEVEL%%" |  | ||||||
| LABEL com.suse.eula="SUSE Combined EULA February 2024" |  | ||||||
| LABEL com.suse.lifecycle-url="https://www.suse.com/lifecycle" |  | ||||||
| LABEL com.suse.image-type="application" |  | ||||||
| LABEL com.suse.release-stage="released" |  | ||||||
| # endlabelprefix |  | ||||||
|  |  | ||||||
| COPY --from=base /installroot / |  | ||||||
| RUN mv /usr/bin/cluster-api-provider-metal3 /manager |  | ||||||
| # Use uid of nonroot user (65532) because kubernetes expects numeric user when applying pod security policies |  | ||||||
| USER 65532 |  | ||||||
| ENTRYPOINT [ "/manager" ] |  | ||||||
| @@ -1,23 +0,0 @@ | |||||||
| <services> |  | ||||||
|  <service name="obs_scm"> |  | ||||||
|     <param name="url">https://github.com/metal3-io/cluster-api-provider-metal3</param> |  | ||||||
|     <param name="scm">git</param> |  | ||||||
|     <param name="revision">v1.7.2</param> |  | ||||||
|     <param name="version">_auto_</param> |  | ||||||
|     <param name="versionformat">@PARENT_TAG@</param> |  | ||||||
|     <param name="changesgenerate">enable</param> |  | ||||||
|     <param name="changesauthor">steven.hardy@suse.com</param> |  | ||||||
|     <param name="match-tag">v*</param> |  | ||||||
|     <param name="versionrewrite-pattern">v(\d+\.\d+\.\d+)</param> |  | ||||||
|     <param name="without-version">yes</param> |  | ||||||
|     <param name="versionrewrite-replacement">\1</param> |  | ||||||
|   </service> |  | ||||||
|   <service mode="buildtime" name="tar" /> |  | ||||||
|   <service mode="buildtime" name="recompress"> |  | ||||||
|     <param name="file">*.tar</param> |  | ||||||
|     <param name="compression">gz</param> |  | ||||||
|   </service> |  | ||||||
|    <service name="go_modules"> |  | ||||||
|   </service> |  | ||||||
|   <service mode="buildtime" name="set_version" /> |  | ||||||
| </services> |  | ||||||
| @@ -1,54 +0,0 @@ | |||||||
| # |  | ||||||
| # spec file for package cluster-api-provider-metal3 |  | ||||||
| # |  | ||||||
| # Copyright (c) 2023 SUSE LLC |  | ||||||
| # |  | ||||||
| # All modifications and additions to the file contributed by third parties |  | ||||||
| # remain the property of their copyright owners, unless otherwise agreed |  | ||||||
| # upon. The license for this file, and modifications and additions to the |  | ||||||
| # file, is the same license as for the pristine package itself (unless the |  | ||||||
| # license for the pristine package is not an Open Source License, in which |  | ||||||
| # case the license is the MIT License). An "Open Source License" is a |  | ||||||
| # license that conforms to the Open Source Definition (Version 1.9) |  | ||||||
| # published by the Open Source Initiative. |  | ||||||
|  |  | ||||||
| # Please submit bugfixes or comments via https://bugs.opensuse.org/ |  | ||||||
| # |  | ||||||
|  |  | ||||||
|  |  | ||||||
| Name:           cluster-api-provider-metal3 |  | ||||||
| Version:        1.7.2 |  | ||||||
| Release:        0 |  | ||||||
| Summary:        Cluster API Infrastructure Provider for Metal3 |  | ||||||
| License:        Apache-2.0 |  | ||||||
| URL:            https://github.com/metal3-io/cluster-api-provider-metal3 |  | ||||||
| Source:         cluster-api-provider-metal3-%{version}.tar.gz |  | ||||||
| Source1:        vendor.tar.gz |  | ||||||
| BuildRequires:  golang(API) = 1.22 |  | ||||||
| ExcludeArch:    s390 |  | ||||||
| ExcludeArch:    %{ix86} |  | ||||||
|  |  | ||||||
| %description |  | ||||||
|  |  | ||||||
| Cluster API Provider Metal3 is one of the providers for Cluster API and enables |  | ||||||
| users to deploy a Cluster API based cluster on top of bare metal infrastructure |  | ||||||
| using Metal3. |  | ||||||
|  |  | ||||||
| %prep |  | ||||||
| %autosetup -a1 -n cluster-api-provider-metal3-%{version} |  | ||||||
|  |  | ||||||
| %build |  | ||||||
| go build \ |  | ||||||
|    -mod=vendor \ |  | ||||||
|    -buildmode=pie \ |  | ||||||
|    -a -ldflags '-extldflags "-static"' |  | ||||||
|  |  | ||||||
| %install |  | ||||||
| install -D -m0755 cluster-api-provider-metal3 %{buildroot}%{_bindir}/cluster-api-provider-metal3 |  | ||||||
|  |  | ||||||
| %files |  | ||||||
| %license LICENSE |  | ||||||
| %doc README.md |  | ||||||
| %{_bindir}/cluster-api-provider-metal3 |  | ||||||
|  |  | ||||||
| %changelog |  | ||||||
							
								
								
									
										23
									
								
								container-build-checks/.gitattributes
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										23
									
								
								container-build-checks/.gitattributes
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,23 @@ | |||||||
|  | ## Default LFS | ||||||
|  | *.7z filter=lfs diff=lfs merge=lfs -text | ||||||
|  | *.bsp filter=lfs diff=lfs merge=lfs -text | ||||||
|  | *.bz2 filter=lfs diff=lfs merge=lfs -text | ||||||
|  | *.gem filter=lfs diff=lfs merge=lfs -text | ||||||
|  | *.gz filter=lfs diff=lfs merge=lfs -text | ||||||
|  | *.jar filter=lfs diff=lfs merge=lfs -text | ||||||
|  | *.lz filter=lfs diff=lfs merge=lfs -text | ||||||
|  | *.lzma filter=lfs diff=lfs merge=lfs -text | ||||||
|  | *.obscpio filter=lfs diff=lfs merge=lfs -text | ||||||
|  | *.oxt filter=lfs diff=lfs merge=lfs -text | ||||||
|  | *.pdf filter=lfs diff=lfs merge=lfs -text | ||||||
|  | *.png filter=lfs diff=lfs merge=lfs -text | ||||||
|  | *.rpm filter=lfs diff=lfs merge=lfs -text | ||||||
|  | *.tbz filter=lfs diff=lfs merge=lfs -text | ||||||
|  | *.tbz2 filter=lfs diff=lfs merge=lfs -text | ||||||
|  | *.tgz filter=lfs diff=lfs merge=lfs -text | ||||||
|  | *.ttf filter=lfs diff=lfs merge=lfs -text | ||||||
|  | *.txz filter=lfs diff=lfs merge=lfs -text | ||||||
|  | *.whl filter=lfs diff=lfs merge=lfs -text | ||||||
|  | *.xz filter=lfs diff=lfs merge=lfs -text | ||||||
|  | *.zip filter=lfs diff=lfs merge=lfs -text | ||||||
|  | *.zst filter=lfs diff=lfs merge=lfs -text | ||||||
| @@ -0,0 +1,39 @@ | |||||||
|  | From 982cfa8500250c9704448880a779ade06cc8f976 Mon Sep 17 00:00:00 2001 | ||||||
|  | From: Nicolas Belouin <nicolas.belouin@suse.com> | ||||||
|  | Date: Thu, 3 Apr 2025 16:53:49 +0200 | ||||||
|  | Subject: [PATCH] Allow slash prefixes in registry | ||||||
|  |  | ||||||
|  | Signed-off-by: Nicolas Belouin <nicolas.belouin@suse.com> | ||||||
|  | --- | ||||||
|  |  container-build-checks.py | 12 ++++++++---- | ||||||
|  |  1 file changed, 8 insertions(+), 4 deletions(-) | ||||||
|  |  | ||||||
|  | diff --git a/container-build-checks.py b/container-build-checks.py | ||||||
|  | index b8c873c..d862f33 100755 | ||||||
|  | --- a/container-build-checks.py | ||||||
|  | +++ b/container-build-checks.py | ||||||
|  | @@ -82,13 +82,17 @@ def verify_reference(image, result, value): | ||||||
|  |          return | ||||||
|  |   | ||||||
|  |      (registry, repo, tag) = reference_match.groups() | ||||||
|  | -    allowed_registries: list[str] = config["General"].getlist("Registry") | ||||||
|  | -    if len(allowed_registries) and registry not in allowed_registries: | ||||||
|  | +    raw_allowed_registries: list[str] = config["General"].getlist("Registry") | ||||||
|  | +    allowed_registries: dict[str, str] = {v[0]: v[2] for v in map(lambda a: a.partition("/"), raw_allowed_registries)} | ||||||
|  | + | ||||||
|  | +    if len(allowed_registries) and (registry not in allowed_registries.keys() or not repo.startswith(allowed_registries[registry])): | ||||||
|  |          result.warn( | ||||||
|  |              f"The org.opensuse.reference label ({value}) does not use an " | ||||||
|  | -            f"allowed registry: {','.join(allowed_registries)}") | ||||||
|  | +            f"allowed registry: {','.join(raw_allowed_registries)}") | ||||||
|  | + | ||||||
|  | +    prefix = allowed_registries[registry] | ||||||
|  |   | ||||||
|  | -    if f"{repo}:{tag}" not in image.containerinfo["tags"]: | ||||||
|  | +    if f"{repo[len(prefix)+1:]}:{tag}" not in image.containerinfo["tags"]: | ||||||
|  |          tags = ", ".join(image.containerinfo["tags"]) | ||||||
|  |          result.warn(f"The org.opensuse.reference label ({value}) does not refer to an existing tag ({tags})") | ||||||
|  |      elif "release" in image.containerinfo and image.containerinfo["release"] not in tag: | ||||||
|  | --  | ||||||
|  | 2.49.0 | ||||||
|  |  | ||||||
							
								
								
									
										4
									
								
								container-build-checks/SUSE.conf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								container-build-checks/SUSE.conf
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,4 @@ | |||||||
|  | [General] | ||||||
|  | Vendor=com.suse | ||||||
|  | Registry=registry.suse.com | ||||||
|  | Registry+=dp.apps.rancher.io | ||||||
							
								
								
									
										15
									
								
								container-build-checks/_service
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								container-build-checks/_service
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,15 @@ | |||||||
|  | <services> | ||||||
|  |   <service mode="manual" name="obs_scm"> | ||||||
|  |     <param name="url">https://github.com/openSUSE/container-build-checks.git</param> | ||||||
|  |     <param name="scm">git</param> | ||||||
|  |     <param name="changesgenerate">enable</param> | ||||||
|  |   </service> | ||||||
|  |   <service mode="manual" name="set_version" /> | ||||||
|  |   <service mode="buildtime" name="tar"> | ||||||
|  |     <param name="obsinfo">container-build-checks.obsinfo</param> | ||||||
|  |   </service> | ||||||
|  |   <service mode="buildtime" name="recompress"> | ||||||
|  |     <param name="file">*.tar</param> | ||||||
|  |     <param name="compression">xz</param> | ||||||
|  |   </service> | ||||||
|  | </services> | ||||||
							
								
								
									
										4
									
								
								container-build-checks/_servicedata
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								container-build-checks/_servicedata
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,4 @@ | |||||||
|  | <servicedata> | ||||||
|  | <service name="tar_scm"> | ||||||
|  |                 <param name="url">https://github.com/openSUSE/container-build-checks.git</param> | ||||||
|  |               <param name="changesrevision">412e7f60c08221a549b0f00dfcc4bee7694193ab</param></service></servicedata> | ||||||
							
								
								
									
										
											BIN
										
									
								
								container-build-checks/container-build-checks-1723452932.412e7f6.obscpio
									 (Stored with Git LFS)
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								container-build-checks/container-build-checks-1723452932.412e7f6.obscpio
									 (Stored with Git LFS)
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										101
									
								
								container-build-checks/container-build-checks.changes
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										101
									
								
								container-build-checks/container-build-checks.changes
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,101 @@ | |||||||
|  | ------------------------------------------------------------------- | ||||||
|  | Mon Aug 12 11:33:57 UTC 2024 - Fabian Vogt <fvogt@suse.com> | ||||||
|  |  | ||||||
|  | - Update to version 1723452932.412e7f6: | ||||||
|  |   * add test for missing substitutions | ||||||
|  |   * Reject labels that are missing a substitution | ||||||
|  |  | ||||||
|  | ------------------------------------------------------------------- | ||||||
|  | Mon Jul 22 13:43:57 UTC 2024 - Dirk Müller <dmueller@suse.com> | ||||||
|  |  | ||||||
|  | - update SUSE.conf: allow dp.rancher.apps.io | ||||||
|  |  | ||||||
|  | ------------------------------------------------------------------- | ||||||
|  | Mon Jul 22 13:08:23 UTC 2024 - Fabian Vogt <fvogt@suse.com> | ||||||
|  |  | ||||||
|  | - Switch _service to mode="manual" | ||||||
|  | - Update to version 1721653643.19092fe: | ||||||
|  |   * Use generic name for the python setup step | ||||||
|  |   * Allow specifying more than one registry | ||||||
|  |   * Use Pathlib for resolving containerinfo | ||||||
|  |   * Switch to test Python 3.11 | ||||||
|  |  | ||||||
|  | ------------------------------------------------------------------- | ||||||
|  | Fri Apr 28 09:23:53 UTC 2023 - Fabian Vogt <fvogt@suse.com> | ||||||
|  |  | ||||||
|  | - Update to version 1682595397.5ce6d2f: | ||||||
|  |   * Handle OCI style images as well | ||||||
|  |   * Makefile: Add missing dependency of broken-derived on proper-base | ||||||
|  |   * GitHub workflow: Update action versions | ||||||
|  |   * GitHub workflow: Test python 3.6 and 3.10 | ||||||
|  |  | ||||||
|  | ------------------------------------------------------------------- | ||||||
|  | Mon Aug  8 11:37:19 UTC 2022 - Fabian Vogt <fvogt@suse.com> | ||||||
|  |  | ||||||
|  | - Make the URL point to GitHub | ||||||
|  |  | ||||||
|  | ------------------------------------------------------------------- | ||||||
|  | Thu Jul  7 13:42:05 UTC 2022 - Fabian Vogt <fvogt@suse.com> | ||||||
|  |  | ||||||
|  | - openSUSE.conf: Allow bci/* as prefix | ||||||
|  |  | ||||||
|  | ------------------------------------------------------------------- | ||||||
|  | Wed Apr 20 14:26:26 UTC 2022 - Fabian Vogt <fvogt@suse.com> | ||||||
|  |  | ||||||
|  | - Update to version 1650464301.a198cf9: | ||||||
|  |   * Detect and treat local builds specially | ||||||
|  |  | ||||||
|  | ------------------------------------------------------------------- | ||||||
|  | Mon Mar  7 09:23:46 UTC 2022 - Silvio Moioli <moio@suse.com> | ||||||
|  |  | ||||||
|  | - Adding Uyuni prefix for https://www.uyuni-project.org/ | ||||||
|  |  | ||||||
|  | ------------------------------------------------------------------- | ||||||
|  | Thu Feb 03 07:44:23 UTC 2022 - fvogt@suse.com | ||||||
|  |  | ||||||
|  | - Update to version 1643874076.3d0e13c: | ||||||
|  |   * Avoid crash on local builds | ||||||
|  |  | ||||||
|  | ------------------------------------------------------------------- | ||||||
|  | Tue Dec 14 13:49:12 UTC 2021 - fvogt@suse.com | ||||||
|  |  | ||||||
|  | - Update to version 1639489705.a4c5a3ab2a75: | ||||||
|  |   * Don't error out when the release field is empty | ||||||
|  |   * Add simple gitpod configuration | ||||||
|  |  | ||||||
|  | ------------------------------------------------------------------- | ||||||
|  | Tue Jun  1 09:06:12 UTC 2021 - Fabian Vogt <fvogt@suse.com> | ||||||
|  |  | ||||||
|  | - Drop obsolete Requires: grep jq | ||||||
|  |  | ||||||
|  | ------------------------------------------------------------------- | ||||||
|  | Fri May 28 13:57:34 UTC 2021 - Fabian Vogt <fvogt@suse.com> | ||||||
|  |  | ||||||
|  | - Update to version 1622209785.4616f4f: | ||||||
|  |   * README.md: Point badge to new location | ||||||
|  |  | ||||||
|  | ------------------------------------------------------------------- | ||||||
|  | Fri May 28 12:47:42 UTC 2021 - Fabian Vogt <fvogt@suse.com> | ||||||
|  |  | ||||||
|  | - Update to version 1622204213.c8ecb9f: | ||||||
|  |   * Add options to allow and block specific tags | ||||||
|  |  | ||||||
|  | ------------------------------------------------------------------- | ||||||
|  | Thu May 27 15:09:59 UTC 2021 - Fabian Vogt <fvogt@suse.com> | ||||||
|  |  | ||||||
|  | - Update to version 1622127842.b548dd8: | ||||||
|  |   * Update README.md | ||||||
|  |   * Add README.md | ||||||
|  |   * Add broken-derived test | ||||||
|  |   * Verify prefix of the image specific label prefix | ||||||
|  |   * Add some comments in the Makefile | ||||||
|  |   * Always check the tag used in org.opensuse.reference | ||||||
|  |   * Add github workflow | ||||||
|  |   * Use bash explicitly | ||||||
|  |   * Make lint | ||||||
|  |   * Less noise in Makefile | ||||||
|  |  | ||||||
|  | ------------------------------------------------------------------- | ||||||
|  | Fri Apr 30 10:04:09 UTC 2021 - Fabian Vogt <fvogt@suse.com> | ||||||
|  |  | ||||||
|  | - Initial commit | ||||||
							
								
								
									
										4
									
								
								container-build-checks/container-build-checks.obsinfo
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								container-build-checks/container-build-checks.obsinfo
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,4 @@ | |||||||
|  | name: container-build-checks | ||||||
|  | version: 1723452932.412e7f6 | ||||||
|  | mtime: 1723452932 | ||||||
|  | commit: 412e7f60c08221a549b0f00dfcc4bee7694193ab | ||||||
							
								
								
									
										95
									
								
								container-build-checks/container-build-checks.spec
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										95
									
								
								container-build-checks/container-build-checks.spec
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,95 @@ | |||||||
|  | # | ||||||
|  | # spec file for package container-build-checks | ||||||
|  | # | ||||||
|  | # Copyright (c) 2024 SUSE LLC | ||||||
|  | # | ||||||
|  | # All modifications and additions to the file contributed by third parties | ||||||
|  | # remain the property of their copyright owners, unless otherwise agreed | ||||||
|  | # upon. The license for this file, and modifications and additions to the | ||||||
|  | # file, is the same license as for the pristine package itself (unless the | ||||||
|  | # license for the pristine package is not an Open Source License, in which | ||||||
|  | # case the license is the MIT License). An "Open Source License" is a | ||||||
|  | # license that conforms to the Open Source Definition (Version 1.9) | ||||||
|  | # published by the Open Source Initiative. | ||||||
|  |  | ||||||
|  | # Please submit bugfixes or comments via https://bugs.opensuse.org/ | ||||||
|  | # | ||||||
|  |  | ||||||
|  |  | ||||||
|  | Name:           container-build-checks | ||||||
|  | Version:        1723452932.412e7f6 | ||||||
|  | Release:        0 | ||||||
|  | Summary:        Scripts to validate built container images | ||||||
|  | License:        GPL-2.0-or-later | ||||||
|  | Group:          Development/Tools/Building | ||||||
|  | URL:            https://github.com/openSUSE/container-build-checks | ||||||
|  | Patch0:         0001-Allow-slash-prefixes-in-registry.patch | ||||||
|  | Source0:        %{name}-%{version}.tar.xz | ||||||
|  | Source1:        openSUSE.conf | ||||||
|  | Source2:        SUSE.conf | ||||||
|  | Requires:       %{name}-vendor | ||||||
|  | BuildArch:      noarch | ||||||
|  |  | ||||||
|  | %package vendor-openSUSE | ||||||
|  | Summary:        openSUSE configuration for %{name} | ||||||
|  | Group:          Development/Tools/Building | ||||||
|  | Requires:       %{name} = %{version} | ||||||
|  | Provides:       %{name}-vendor | ||||||
|  | Conflicts:      %{name}-vendor | ||||||
|  |  | ||||||
|  | %description vendor-openSUSE | ||||||
|  | openSUSE configuration for %{name} | ||||||
|  |  | ||||||
|  | %package vendor-SUSE | ||||||
|  | Summary:        SUSE configuration for %{name} | ||||||
|  | Group:          Development/Tools/Building | ||||||
|  | Requires:       %{name} = %{version} | ||||||
|  | Provides:       %{name}-vendor | ||||||
|  | Conflicts:      %{name}-vendor | ||||||
|  |  | ||||||
|  | %description vendor-SUSE | ||||||
|  | SUSE configuration for %{name} | ||||||
|  |  | ||||||
|  | %package strict | ||||||
|  | Summary:        Strict configuration for %{name} | ||||||
|  | Group:          Development/Tools/Building | ||||||
|  |  | ||||||
|  | %description strict | ||||||
|  | Strict configuration for %{name} | ||||||
|  |  | ||||||
|  | %description | ||||||
|  | This tool checks that built container images conform to the openSUSE container | ||||||
|  | image policies (https://en.opensuse.org/Building_derived_containers). | ||||||
|  |  | ||||||
|  | %prep | ||||||
|  | %autosetup -p1 | ||||||
|  |  | ||||||
|  | %build | ||||||
|  | %make_build | ||||||
|  |  | ||||||
|  | %install | ||||||
|  | %make_install | ||||||
|  |  | ||||||
|  | mkdir -p %{buildroot}%{_datadir}/container-build-checks/ | ||||||
|  | install -m0644 %{SOURCE1} %{buildroot}%{_datadir}/container-build-checks/openSUSE.conf | ||||||
|  | install -m0644 %{SOURCE2} %{buildroot}%{_datadir}/container-build-checks/SUSE.conf | ||||||
|  | echo -e "[General]\nFatalWarnings=true" > %{buildroot}%{_datadir}/container-build-checks/strict.conf | ||||||
|  |  | ||||||
|  | %files | ||||||
|  | #%doc README | ||||||
|  | %license LICENSE | ||||||
|  | %dir %{_datadir}/container-build-checks | ||||||
|  | %dir %{_prefix}/lib/build/ | ||||||
|  | %dir %{_prefix}/lib/build/post-build-checks/ | ||||||
|  | %{_prefix}/lib/build/post-build-checks/container-build-checks | ||||||
|  |  | ||||||
|  | %files vendor-openSUSE | ||||||
|  | %{_datadir}/container-build-checks/openSUSE.conf | ||||||
|  |  | ||||||
|  | %files vendor-SUSE | ||||||
|  | %{_datadir}/container-build-checks/SUSE.conf | ||||||
|  |  | ||||||
|  | %files strict | ||||||
|  | %{_datadir}/container-build-checks/strict.conf | ||||||
|  |  | ||||||
|  | %changelog | ||||||
							
								
								
									
										10
									
								
								container-build-checks/openSUSE.conf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										10
									
								
								container-build-checks/openSUSE.conf
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,10 @@ | |||||||
|  | [General] | ||||||
|  | Vendor=org.opensuse | ||||||
|  | Registry=registry.opensuse.org | ||||||
|  |  | ||||||
|  | [Tags] | ||||||
|  | # To avoid conflicts with other stuff on the registry and | ||||||
|  | # avoid ambiguities with images on other registries. | ||||||
|  | Allowed+=opensuse/*,kubic/*,kubevirt/*,uyuni/*,bci/* | ||||||
|  | # Those are images, not available as namespaces | ||||||
|  | Blocked+=opensuse/tumbleweed/*,opensuse/leap/* | ||||||
| @@ -1,20 +0,0 @@ | |||||||
| <services> |  | ||||||
|   <service name="obs_scm"> |  | ||||||
|     <param name="url">https://github.com/rancher-government-carbide/cosign.git</param> |  | ||||||
|     <param name="versionformat">@PARENT_TAG@</param> |  | ||||||
|     <param name="scm">git</param> |  | ||||||
|     <param name="exclude">.get</param> |  | ||||||
|     <param name="revision">v2.2.3+carbide.2</param> |  | ||||||
|     <param name="versionrewrite-pattern">v(.*)</param> |  | ||||||
|     <param name="changesgenerate">enable</param> |  | ||||||
|   </service> |  | ||||||
|   <service mode="buildtime" name="tar" /> |  | ||||||
|   <service mode="buildtime" name="recompress"> |  | ||||||
|     <param name="file">*.tar</param> |  | ||||||
|     <param name="compression">gz</param> |  | ||||||
|   </service> |  | ||||||
|   <service mode="buildtime" name="set_version" /> |  | ||||||
|   <service name="go_modules"> |  | ||||||
|      <param name="compression">gz</param> |  | ||||||
|   </service> |  | ||||||
| </services> |  | ||||||
| @@ -1,55 +0,0 @@ | |||||||
| # |  | ||||||
| # spec file for package cosign-rgs |  | ||||||
| # |  | ||||||
| # Copyright (c) 2024 SUSE LLC |  | ||||||
| # |  | ||||||
| # All modifications and additions to the file contributed by third parties |  | ||||||
| # remain the property of their copyright owners, unless otherwise agreed |  | ||||||
| # upon. The license for this file, and modifications and additions to the |  | ||||||
| # file, is the same license as for the pristine package itself (unless the |  | ||||||
| # license for the pristine package is not an Open Source License, in which |  | ||||||
| # case the license is the MIT License). An "Open Source License" is a |  | ||||||
| # license that conforms to the Open Source Definition (Version 1.9) |  | ||||||
| # published by the Open Source Initiative. |  | ||||||
|  |  | ||||||
| # Please submit bugfixes or comments via https://bugs.opensuse.org/ |  | ||||||
| # |  | ||||||
|  |  | ||||||
| %define project https://github.com/hauler-dev/cosign |  | ||||||
| %define revision 49542360ffb5de63f9d2f5856b658651d5538e40  |  | ||||||
|  |  | ||||||
| Name:           cosign |  | ||||||
| Version:        0 |  | ||||||
| Release:        0 |  | ||||||
| Summary:        Container Signing, Verification and Storage in an OCI registry |  | ||||||
| License:        Apache-2.0 |  | ||||||
| URL:            https://github.com/rancher-government-carbide/cosign |  | ||||||
| Source:         cosign-%{version}.tar.gz |  | ||||||
| Source1:        vendor.tar.gz          |  | ||||||
| BuildRequires:  golang-packaging |  | ||||||
|  |  | ||||||
| %description |  | ||||||
|  |  | ||||||
| %prep |  | ||||||
| %setup -q -a1 -n cosign-%{version} |  | ||||||
|  |  | ||||||
| %build |  | ||||||
| %goprep %{project} |  | ||||||
|  |  | ||||||
| DATE_FMT="+%%Y-%%m-%%dT%%H:%%M:%%SZ" |  | ||||||
| BUILD_DATE=$(date -u -d "@${SOURCE_DATE_EPOCH}" "${DATE_FMT}" 2>/dev/null || date -u -r "${SOURCE_DATE_EPOCH}" "${DATE_FMT}" 2>/dev/null || date -u "${DATE_FMT}") |  | ||||||
|  |  | ||||||
| CLI_PKG=sigs.k8s.io/release-utils/version |  | ||||||
| CLI_LDFLAGS="-X ${CLI_PKG}.gitVersion=%{version} -X ${CLI_PKG}.gitCommit=%{revision} -X ${CLI_PKG}.gitTreeState=release -X ${CLI_PKG}.buildDate=${BUILD_DATE}" |  | ||||||
|  |  | ||||||
| CGO_ENABLED=0 go build -mod=vendor -buildmode=pie -trimpath -ldflags "${CLI_LDFLAGS}" -o cosign ./cmd/cosign |  | ||||||
|  |  | ||||||
| %install |  | ||||||
| install -D -m 0755 cosign %{buildroot}%{_bindir}/cosign |  | ||||||
|  |  | ||||||
| %files |  | ||||||
| %license LICENSE |  | ||||||
| %doc *.md |  | ||||||
| %{_bindir}/cosign |  | ||||||
|  |  | ||||||
| %changelog |  | ||||||
							
								
								
									
										12
									
								
								edge-build-checks/10-helm-lint
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								edge-build-checks/10-helm-lint
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,12 @@ | |||||||
|  | #!/bin/bash | ||||||
|  |  | ||||||
|  | HELM="/usr/bin/helm" | ||||||
|  | TOPDIR=/usr/src/packages/HELM | ||||||
|  | failed=0 | ||||||
|  |  | ||||||
|  | if [ -x $HELM ]; then | ||||||
|  |     $HELM lint "$TOPDIR"/*.tgz | ||||||
|  |     failed=$? | ||||||
|  | fi | ||||||
|  |  | ||||||
|  | exit $failed | ||||||
							
								
								
									
										158
									
								
								edge-build-checks/20-helm-images
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										158
									
								
								edge-build-checks/20-helm-images
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,158 @@ | |||||||
|  | #!/usr/bin/python3 | ||||||
|  | import os | ||||||
|  | import glob | ||||||
|  | import subprocess | ||||||
|  | import yaml | ||||||
|  | import sys | ||||||
|  | import pprint | ||||||
|  |  | ||||||
|  | AUTHORIZED_REPOS = [ | ||||||
|  |     "registry.suse.com/suse/sles/", | ||||||
|  |     "registry.rancher.com", | ||||||
|  | ] | ||||||
|  |  | ||||||
|  | EXTRA_CONFIG = None | ||||||
|  |  | ||||||
|  | class CheckResult: | ||||||
|  |     """Class to track count of issues""" | ||||||
|  |  | ||||||
|  |     def __init__(self): | ||||||
|  |         self.hints = 0 | ||||||
|  |         self.warnings = 0 | ||||||
|  |         self.errors = 0 | ||||||
|  |  | ||||||
|  |     def hint(self, msg): | ||||||
|  |         print(f"Hint: {msg}") | ||||||
|  |         self.hints += 1 | ||||||
|  |  | ||||||
|  |     def warn(self, msg): | ||||||
|  |         print(f"Warning: {msg}") | ||||||
|  |         self.warnings += 1 | ||||||
|  |  | ||||||
|  |     def error(self, msg): | ||||||
|  |         print(f"Error: {msg}") | ||||||
|  |         self.errors += 1 | ||||||
|  |  | ||||||
|  |  | ||||||
|  | def tarballs(): | ||||||
|  |     """Return a list of .helminfo files to check.""" | ||||||
|  |     if "BUILD_ROOT" not in os.environ: | ||||||
|  |         # Not running in an OBS build container | ||||||
|  |         return glob.glob("*.tgz") | ||||||
|  |  | ||||||
|  |     # Running in an OBS build container | ||||||
|  |     buildroot = os.environ["BUILD_ROOT"] | ||||||
|  |     topdir = "/usr/src/packages" | ||||||
|  |     if os.path.isdir(buildroot + "/.build.packages"): | ||||||
|  |         topdir = "/.build.packages" | ||||||
|  |     if os.path.islink(buildroot + "/.build.packages"): | ||||||
|  |         topdir = "/" + os.readlink(buildroot + "/.build.packages") | ||||||
|  |  | ||||||
|  |     return glob.glob(f"{buildroot}{topdir}/HELM/*.tgz") | ||||||
|  |  | ||||||
|  | def get_extra_config(): | ||||||
|  |     global EXTRA_CONFIG | ||||||
|  |     if EXTRA_CONFIG is not None: | ||||||
|  |         return EXTRA_CONFIG | ||||||
|  |      | ||||||
|  |     if "BUILD_ROOT" not in os.environ: | ||||||
|  |         file_path = "./.checks_helm.yaml" | ||||||
|  |     else: | ||||||
|  |         buildroot = os.environ["BUILD_ROOT"] | ||||||
|  |         topdir = "/usr/src/packages" | ||||||
|  |         file_path = f"{buildroot}{topdir}/SOURCES/.checks_helm.yaml" | ||||||
|  |     try: | ||||||
|  |         with open(file_path) as config_file: | ||||||
|  |             EXTRA_CONFIG = yaml.safe_load(config_file) | ||||||
|  |             if EXTRA_CONFIG is None:  # No document in stream | ||||||
|  |                 EXTRA_CONFIG = {} | ||||||
|  |     except OSError: | ||||||
|  |         EXTRA_CONFIG = {} | ||||||
|  |     return EXTRA_CONFIG | ||||||
|  |  | ||||||
|  | def get_extra_params(): | ||||||
|  |     config = get_extra_config() | ||||||
|  |     args = [] | ||||||
|  |     for api in config.get('extra_apis', []): | ||||||
|  |         args.extend(['-a', api]) | ||||||
|  |     return args | ||||||
|  |  | ||||||
|  | def is_exception(image): | ||||||
|  |     config = get_extra_config() | ||||||
|  |     exceptions = config.get('image_exceptions', []) | ||||||
|  |     (namespace, _, _) = image.partition(':') | ||||||
|  |     return namespace in exceptions | ||||||
|  |  | ||||||
|  | def get_template(tarball_path): | ||||||
|  |     raw_templates = subprocess.check_output( | ||||||
|  |         [ | ||||||
|  |             "helm", | ||||||
|  |             "template", | ||||||
|  |             tarball_path, | ||||||
|  |         ] + get_extra_params() | ||||||
|  |     ).decode() | ||||||
|  |     return yaml.safe_load_all(raw_templates) | ||||||
|  |  | ||||||
|  |  | ||||||
|  | def extract_key(key, var): | ||||||
|  |     if hasattr(var, "items"):  # hasattr(var,'items') for python 3 | ||||||
|  |         for k, v in var.items():  # var.items() for python 3 | ||||||
|  |             if k == key: | ||||||
|  |                 yield v | ||||||
|  |             if isinstance(v, dict): | ||||||
|  |                 for result in extract_key(key, v): | ||||||
|  |                     yield result | ||||||
|  |             elif isinstance(v, list): | ||||||
|  |                 for d in v: | ||||||
|  |                     for result in extract_key(key, d): | ||||||
|  |                         yield result | ||||||
|  |  | ||||||
|  |  | ||||||
|  | def check_template(result, template): | ||||||
|  |     if template["kind"] not in [ | ||||||
|  |         "Pod", | ||||||
|  |         "Deployment", | ||||||
|  |         "StatefulSet", | ||||||
|  |         "DaemonSet", | ||||||
|  |         "ReplicaSet", | ||||||
|  |         "Job", | ||||||
|  |         "CronJob", | ||||||
|  |     ]: | ||||||
|  |         return | ||||||
|  |     for image in extract_key("image", template): | ||||||
|  |         if not image.startswith(tuple(AUTHORIZED_REPOS)) and not is_exception(image): | ||||||
|  |             result.error(f"{image} is not from authorized source") | ||||||
|  |     pass | ||||||
|  |  | ||||||
|  |  | ||||||
|  | def main(): | ||||||
|  |     result = CheckResult() | ||||||
|  |     img_repo = subprocess.check_output( | ||||||
|  |         [ | ||||||
|  |             "rpm", | ||||||
|  |             "--macros=/root/.rpmmacros", | ||||||
|  |             "-E", | ||||||
|  |             "%{?img_repo}", | ||||||
|  |         ] | ||||||
|  |     ).strip() | ||||||
|  |     if img_repo: | ||||||
|  |         result.hint(f"Adding '{img_repo.decode()}' to authorized repo") | ||||||
|  |         AUTHORIZED_REPOS.append(img_repo.decode()) | ||||||
|  |     else: | ||||||
|  |         result.warn("img_repo macro not defined, will not add extra authorized repo") | ||||||
|  |     for tarball in tarballs(): | ||||||
|  |         print(f"Looking at {tarball}") | ||||||
|  |         for template in get_template(tarball): | ||||||
|  |             if template:  # Exclude empty templates | ||||||
|  |                 check_template(result, template) | ||||||
|  |  | ||||||
|  |     ret = 0 | ||||||
|  |     if result.errors > 0: | ||||||
|  |         print("Fatal errors found.") | ||||||
|  |         ret = 1 | ||||||
|  |  | ||||||
|  |     sys.exit(ret) | ||||||
|  |  | ||||||
|  |  | ||||||
|  | if __name__ == "__main__": | ||||||
|  |     main() | ||||||
							
								
								
									
										92
									
								
								edge-build-checks/20-helm-tags
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										92
									
								
								edge-build-checks/20-helm-tags
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,92 @@ | |||||||
|  | #!/usr/bin/python3 | ||||||
|  | import json | ||||||
|  | import os | ||||||
|  | import glob | ||||||
|  | import sys | ||||||
|  | import re | ||||||
|  |  | ||||||
|  |  | ||||||
|  | class CheckResult: | ||||||
|  |     """Class to track count of issues""" | ||||||
|  |  | ||||||
|  |     def __init__(self): | ||||||
|  |         self.hints = 0 | ||||||
|  |         self.warnings = 0 | ||||||
|  |         self.errors = 0 | ||||||
|  |  | ||||||
|  |     def hint(self, msg): | ||||||
|  |         print(f"Hint: {msg}") | ||||||
|  |         self.hints += 1 | ||||||
|  |  | ||||||
|  |     def warn(self, msg): | ||||||
|  |         print(f"Warning: {msg}") | ||||||
|  |         self.warnings += 1 | ||||||
|  |  | ||||||
|  |     def error(self, msg): | ||||||
|  |         print(f"Error: {msg}") | ||||||
|  |         self.errors += 1 | ||||||
|  |  | ||||||
|  |  | ||||||
|  | TAG_RE = re.compile(r"(.*\/)?([^:]+):([^:]+)") | ||||||
|  |  | ||||||
|  |  | ||||||
|  | def check_tags(helminfo, result): | ||||||
|  |     release_tag_found = False | ||||||
|  |     version_tag_found = False | ||||||
|  |     for tag in helminfo["tags"]: | ||||||
|  |         (tag_prefix, tag_name, tag_version) = TAG_RE.fullmatch(tag).groups() | ||||||
|  |         if tag_name != helminfo.get("name"): | ||||||
|  |             result.warn( | ||||||
|  |                 f"Tag ({tag}) doesn't use the chart name ({helminfo.get('name')})" | ||||||
|  |             ) | ||||||
|  |         if "release" in helminfo and helminfo["release"] in tag_version: | ||||||
|  |             release_tag_found = True | ||||||
|  |         if tag_version.replace("_", "+") == helminfo["version"]: | ||||||
|  |             version_tag_found = True | ||||||
|  |     if not release_tag_found: | ||||||
|  |         result.error( | ||||||
|  |             "None of the tags are unique to a specific build of the image.\n" | ||||||
|  |             + "Make sure that at least one tag contains the release." | ||||||
|  |         ) | ||||||
|  |     if not version_tag_found: | ||||||
|  |         result.error( | ||||||
|  |             "None of the tags is the equivalent of the chart's version.\n" | ||||||
|  |             + "Make sure that one of the tag is the chart version." | ||||||
|  |         ) | ||||||
|  |  | ||||||
|  |  | ||||||
|  | def helminfos(): | ||||||
|  |     """Return a list of .helminfo files to check.""" | ||||||
|  |     if "BUILD_ROOT" not in os.environ: | ||||||
|  |         # Not running in an OBS build container | ||||||
|  |         return glob.glob("*.helminfo") | ||||||
|  |  | ||||||
|  |     # Running in an OBS build container | ||||||
|  |     buildroot = os.environ["BUILD_ROOT"] | ||||||
|  |     topdir = "/usr/src/packages" | ||||||
|  |     if os.path.isdir(buildroot + "/.build.packages"): | ||||||
|  |         topdir = "/.build.packages" | ||||||
|  |     if os.path.islink(buildroot + "/.build.packages"): | ||||||
|  |         topdir = "/" + os.readlink(buildroot + "/.build.packages") | ||||||
|  |  | ||||||
|  |     return glob.glob(f"{buildroot}{topdir}/HELM/*.helminfo") | ||||||
|  |  | ||||||
|  |  | ||||||
|  | def main(): | ||||||
|  |     result = CheckResult() | ||||||
|  |     for helminfo in helminfos(): | ||||||
|  |         print(f"Looking at {helminfo}") | ||||||
|  |         with open(helminfo, "rb") as cifile: | ||||||
|  |             ci_dict = json.load(cifile) | ||||||
|  |             check_tags(ci_dict, result) | ||||||
|  |  | ||||||
|  |     ret = 0 | ||||||
|  |     if result.errors > 0: | ||||||
|  |         print("Fatal errors found.") | ||||||
|  |         ret = 1 | ||||||
|  |  | ||||||
|  |     sys.exit(ret) | ||||||
|  |  | ||||||
|  |  | ||||||
|  | if __name__ == "__main__": | ||||||
|  |     main() | ||||||
							
								
								
									
										340
									
								
								edge-build-checks/COPYING
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										340
									
								
								edge-build-checks/COPYING
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,340 @@ | |||||||
|  | 		    GNU GENERAL PUBLIC LICENSE | ||||||
|  | 		       Version 2, June 1991 | ||||||
|  |  | ||||||
|  |  Copyright (C) 1989, 1991 Free Software Foundation, Inc. | ||||||
|  |                        59 Temple Place, Suite 330, Boston, MA  02111-1307  USA | ||||||
|  |  Everyone is permitted to copy and distribute verbatim copies | ||||||
|  |  of this license document, but changing it is not allowed. | ||||||
|  |  | ||||||
|  | 			    Preamble | ||||||
|  |  | ||||||
|  |   The licenses for most software are designed to take away your | ||||||
|  | freedom to share and change it.  By contrast, the GNU General Public | ||||||
|  | License is intended to guarantee your freedom to share and change free | ||||||
|  | software--to make sure the software is free for all its users.  This | ||||||
|  | General Public License applies to most of the Free Software | ||||||
|  | Foundation's software and to any other program whose authors commit to | ||||||
|  | using it.  (Some other Free Software Foundation software is covered by | ||||||
|  | the GNU Library General Public License instead.)  You can apply it to | ||||||
|  | your programs, too. | ||||||
|  |  | ||||||
|  |   When we speak of free software, we are referring to freedom, not | ||||||
|  | price.  Our General Public Licenses are designed to make sure that you | ||||||
|  | have the freedom to distribute copies of free software (and charge for | ||||||
|  | this service if you wish), that you receive source code or can get it | ||||||
|  | if you want it, that you can change the software or use pieces of it | ||||||
|  | in new free programs; and that you know you can do these things. | ||||||
|  |  | ||||||
|  |   To protect your rights, we need to make restrictions that forbid | ||||||
|  | anyone to deny you these rights or to ask you to surrender the rights. | ||||||
|  | These restrictions translate to certain responsibilities for you if you | ||||||
|  | distribute copies of the software, or if you modify it. | ||||||
|  |  | ||||||
|  |   For example, if you distribute copies of such a program, whether | ||||||
|  | gratis or for a fee, you must give the recipients all the rights that | ||||||
|  | you have.  You must make sure that they, too, receive or can get the | ||||||
|  | source code.  And you must show them these terms so they know their | ||||||
|  | rights. | ||||||
|  |  | ||||||
|  |   We protect your rights with two steps: (1) copyright the software, and | ||||||
|  | (2) offer you this license which gives you legal permission to copy, | ||||||
|  | distribute and/or modify the software. | ||||||
|  |  | ||||||
|  |   Also, for each author's protection and ours, we want to make certain | ||||||
|  | that everyone understands that there is no warranty for this free | ||||||
|  | software.  If the software is modified by someone else and passed on, we | ||||||
|  | want its recipients to know that what they have is not the original, so | ||||||
|  | that any problems introduced by others will not reflect on the original | ||||||
|  | authors' reputations. | ||||||
|  |  | ||||||
|  |   Finally, any free program is threatened constantly by software | ||||||
|  | patents.  We wish to avoid the danger that redistributors of a free | ||||||
|  | program will individually obtain patent licenses, in effect making the | ||||||
|  | program proprietary.  To prevent this, we have made it clear that any | ||||||
|  | patent must be licensed for everyone's free use or not licensed at all. | ||||||
|  |  | ||||||
|  |   The precise terms and conditions for copying, distribution and | ||||||
|  | modification follow. | ||||||
|  |  | ||||||
|  | 		    GNU GENERAL PUBLIC LICENSE | ||||||
|  |    TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION | ||||||
|  |  | ||||||
|  |   0. This License applies to any program or other work which contains | ||||||
|  | a notice placed by the copyright holder saying it may be distributed | ||||||
|  | under the terms of this General Public License.  The "Program", below, | ||||||
|  | refers to any such program or work, and a "work based on the Program" | ||||||
|  | means either the Program or any derivative work under copyright law: | ||||||
|  | that is to say, a work containing the Program or a portion of it, | ||||||
|  | either verbatim or with modifications and/or translated into another | ||||||
|  | language.  (Hereinafter, translation is included without limitation in | ||||||
|  | the term "modification".)  Each licensee is addressed as "you". | ||||||
|  |  | ||||||
|  | Activities other than copying, distribution and modification are not | ||||||
|  | covered by this License; they are outside its scope.  The act of | ||||||
|  | running the Program is not restricted, and the output from the Program | ||||||
|  | is covered only if its contents constitute a work based on the | ||||||
|  | Program (independent of having been made by running the Program). | ||||||
|  | Whether that is true depends on what the Program does. | ||||||
|  |  | ||||||
|  |   1. You may copy and distribute verbatim copies of the Program's | ||||||
|  | source code as you receive it, in any medium, provided that you | ||||||
|  | conspicuously and appropriately publish on each copy an appropriate | ||||||
|  | copyright notice and disclaimer of warranty; keep intact all the | ||||||
|  | notices that refer to this License and to the absence of any warranty; | ||||||
|  | and give any other recipients of the Program a copy of this License | ||||||
|  | along with the Program. | ||||||
|  |  | ||||||
|  | You may charge a fee for the physical act of transferring a copy, and | ||||||
|  | you may at your option offer warranty protection in exchange for a fee. | ||||||
|  |  | ||||||
|  |   2. You may modify your copy or copies of the Program or any portion | ||||||
|  | of it, thus forming a work based on the Program, and copy and | ||||||
|  | distribute such modifications or work under the terms of Section 1 | ||||||
|  | above, provided that you also meet all of these conditions: | ||||||
|  |  | ||||||
|  |     a) You must cause the modified files to carry prominent notices | ||||||
|  |     stating that you changed the files and the date of any change. | ||||||
|  |  | ||||||
|  |     b) You must cause any work that you distribute or publish, that in | ||||||
|  |     whole or in part contains or is derived from the Program or any | ||||||
|  |     part thereof, to be licensed as a whole at no charge to all third | ||||||
|  |     parties under the terms of this License. | ||||||
|  |  | ||||||
|  |     c) If the modified program normally reads commands interactively | ||||||
|  |     when run, you must cause it, when started running for such | ||||||
|  |     interactive use in the most ordinary way, to print or display an | ||||||
|  |     announcement including an appropriate copyright notice and a | ||||||
|  |     notice that there is no warranty (or else, saying that you provide | ||||||
|  |     a warranty) and that users may redistribute the program under | ||||||
|  |     these conditions, and telling the user how to view a copy of this | ||||||
|  |     License.  (Exception: if the Program itself is interactive but | ||||||
|  |     does not normally print such an announcement, your work based on | ||||||
|  |     the Program is not required to print an announcement.) | ||||||
|  |  | ||||||
|  | These requirements apply to the modified work as a whole.  If | ||||||
|  | identifiable sections of that work are not derived from the Program, | ||||||
|  | and can be reasonably considered independent and separate works in | ||||||
|  | themselves, then this License, and its terms, do not apply to those | ||||||
|  | sections when you distribute them as separate works.  But when you | ||||||
|  | distribute the same sections as part of a whole which is a work based | ||||||
|  | on the Program, the distribution of the whole must be on the terms of | ||||||
|  | this License, whose permissions for other licensees extend to the | ||||||
|  | entire whole, and thus to each and every part regardless of who wrote it. | ||||||
|  |  | ||||||
|  | Thus, it is not the intent of this section to claim rights or contest | ||||||
|  | your rights to work written entirely by you; rather, the intent is to | ||||||
|  | exercise the right to control the distribution of derivative or | ||||||
|  | collective works based on the Program. | ||||||
|  |  | ||||||
|  | In addition, mere aggregation of another work not based on the Program | ||||||
|  | with the Program (or with a work based on the Program) on a volume of | ||||||
|  | a storage or distribution medium does not bring the other work under | ||||||
|  | the scope of this License. | ||||||
|  |  | ||||||
|  |   3. You may copy and distribute the Program (or a work based on it, | ||||||
|  | under Section 2) in object code or executable form under the terms of | ||||||
|  | Sections 1 and 2 above provided that you also do one of the following: | ||||||
|  |  | ||||||
|  |     a) Accompany it with the complete corresponding machine-readable | ||||||
|  |     source code, which must be distributed under the terms of Sections | ||||||
|  |     1 and 2 above on a medium customarily used for software interchange; or, | ||||||
|  |  | ||||||
|  |     b) Accompany it with a written offer, valid for at least three | ||||||
|  |     years, to give any third party, for a charge no more than your | ||||||
|  |     cost of physically performing source distribution, a complete | ||||||
|  |     machine-readable copy of the corresponding source code, to be | ||||||
|  |     distributed under the terms of Sections 1 and 2 above on a medium | ||||||
|  |     customarily used for software interchange; or, | ||||||
|  |  | ||||||
|  |     c) Accompany it with the information you received as to the offer | ||||||
|  |     to distribute corresponding source code.  (This alternative is | ||||||
|  |     allowed only for noncommercial distribution and only if you | ||||||
|  |     received the program in object code or executable form with such | ||||||
|  |     an offer, in accord with Subsection b above.) | ||||||
|  |  | ||||||
|  | The source code for a work means the preferred form of the work for | ||||||
|  | making modifications to it.  For an executable work, complete source | ||||||
|  | code means all the source code for all modules it contains, plus any | ||||||
|  | associated interface definition files, plus the scripts used to | ||||||
|  | control compilation and installation of the executable.  However, as a | ||||||
|  | special exception, the source code distributed need not include | ||||||
|  | anything that is normally distributed (in either source or binary | ||||||
|  | form) with the major components (compiler, kernel, and so on) of the | ||||||
|  | operating system on which the executable runs, unless that component | ||||||
|  | itself accompanies the executable. | ||||||
|  |  | ||||||
|  | If distribution of executable or object code is made by offering | ||||||
|  | access to copy from a designated place, then offering equivalent | ||||||
|  | access to copy the source code from the same place counts as | ||||||
|  | distribution of the source code, even though third parties are not | ||||||
|  | compelled to copy the source along with the object code. | ||||||
|  |  | ||||||
|  |   4. You may not copy, modify, sublicense, or distribute the Program | ||||||
|  | except as expressly provided under this License.  Any attempt | ||||||
|  | otherwise to copy, modify, sublicense or distribute the Program is | ||||||
|  | void, and will automatically terminate your rights under this License. | ||||||
|  | However, parties who have received copies, or rights, from you under | ||||||
|  | this License will not have their licenses terminated so long as such | ||||||
|  | parties remain in full compliance. | ||||||
|  |  | ||||||
|  |   5. You are not required to accept this License, since you have not | ||||||
|  | signed it.  However, nothing else grants you permission to modify or | ||||||
|  | distribute the Program or its derivative works.  These actions are | ||||||
|  | prohibited by law if you do not accept this License.  Therefore, by | ||||||
|  | modifying or distributing the Program (or any work based on the | ||||||
|  | Program), you indicate your acceptance of this License to do so, and | ||||||
|  | all its terms and conditions for copying, distributing or modifying | ||||||
|  | the Program or works based on it. | ||||||
|  |  | ||||||
|  |   6. Each time you redistribute the Program (or any work based on the | ||||||
|  | Program), the recipient automatically receives a license from the | ||||||
|  | original licensor to copy, distribute or modify the Program subject to | ||||||
|  | these terms and conditions.  You may not impose any further | ||||||
|  | restrictions on the recipients' exercise of the rights granted herein. | ||||||
|  | You are not responsible for enforcing compliance by third parties to | ||||||
|  | this License. | ||||||
|  |  | ||||||
|  |   7. If, as a consequence of a court judgment or allegation of patent | ||||||
|  | infringement or for any other reason (not limited to patent issues), | ||||||
|  | conditions are imposed on you (whether by court order, agreement or | ||||||
|  | otherwise) that contradict the conditions of this License, they do not | ||||||
|  | excuse you from the conditions of this License.  If you cannot | ||||||
|  | distribute so as to satisfy simultaneously your obligations under this | ||||||
|  | License and any other pertinent obligations, then as a consequence you | ||||||
|  | may not distribute the Program at all.  For example, if a patent | ||||||
|  | license would not permit royalty-free redistribution of the Program by | ||||||
|  | all those who receive copies directly or indirectly through you, then | ||||||
|  | the only way you could satisfy both it and this License would be to | ||||||
|  | refrain entirely from distribution of the Program. | ||||||
|  |  | ||||||
|  | If any portion of this section is held invalid or unenforceable under | ||||||
|  | any particular circumstance, the balance of the section is intended to | ||||||
|  | apply and the section as a whole is intended to apply in other | ||||||
|  | circumstances. | ||||||
|  |  | ||||||
|  | It is not the purpose of this section to induce you to infringe any | ||||||
|  | patents or other property right claims or to contest validity of any | ||||||
|  | such claims; this section has the sole purpose of protecting the | ||||||
|  | integrity of the free software distribution system, which is | ||||||
|  | implemented by public license practices.  Many people have made | ||||||
|  | generous contributions to the wide range of software distributed | ||||||
|  | through that system in reliance on consistent application of that | ||||||
|  | system; it is up to the author/donor to decide if he or she is willing | ||||||
|  | to distribute software through any other system and a licensee cannot | ||||||
|  | impose that choice. | ||||||
|  |  | ||||||
|  | This section is intended to make thoroughly clear what is believed to | ||||||
|  | be a consequence of the rest of this License. | ||||||
|  |  | ||||||
|  |   8. If the distribution and/or use of the Program is restricted in | ||||||
|  | certain countries either by patents or by copyrighted interfaces, the | ||||||
|  | original copyright holder who places the Program under this License | ||||||
|  | may add an explicit geographical distribution limitation excluding | ||||||
|  | those countries, so that distribution is permitted only in or among | ||||||
|  | countries not thus excluded.  In such case, this License incorporates | ||||||
|  | the limitation as if written in the body of this License. | ||||||
|  |  | ||||||
|  |   9. The Free Software Foundation may publish revised and/or new versions | ||||||
|  | of the General Public License from time to time.  Such new versions will | ||||||
|  | be similar in spirit to the present version, but may differ in detail to | ||||||
|  | address new problems or concerns. | ||||||
|  |  | ||||||
|  | Each version is given a distinguishing version number.  If the Program | ||||||
|  | specifies a version number of this License which applies to it and "any | ||||||
|  | later version", you have the option of following the terms and conditions | ||||||
|  | either of that version or of any later version published by the Free | ||||||
|  | Software Foundation.  If the Program does not specify a version number of | ||||||
|  | this License, you may choose any version ever published by the Free Software | ||||||
|  | Foundation. | ||||||
|  |  | ||||||
|  |   10. If you wish to incorporate parts of the Program into other free | ||||||
|  | programs whose distribution conditions are different, write to the author | ||||||
|  | to ask for permission.  For software which is copyrighted by the Free | ||||||
|  | Software Foundation, write to the Free Software Foundation; we sometimes | ||||||
|  | make exceptions for this.  Our decision will be guided by the two goals | ||||||
|  | of preserving the free status of all derivatives of our free software and | ||||||
|  | of promoting the sharing and reuse of software generally. | ||||||
|  |  | ||||||
|  | 			    NO WARRANTY | ||||||
|  |  | ||||||
|  |   11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY | ||||||
|  | FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN | ||||||
|  | OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES | ||||||
|  | PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED | ||||||
|  | OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF | ||||||
|  | MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS | ||||||
|  | TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE | ||||||
|  | PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, | ||||||
|  | REPAIR OR CORRECTION. | ||||||
|  |  | ||||||
|  |   12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING | ||||||
|  | WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR | ||||||
|  | REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, | ||||||
|  | INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING | ||||||
|  | OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED | ||||||
|  | TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY | ||||||
|  | YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER | ||||||
|  | PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE | ||||||
|  | POSSIBILITY OF SUCH DAMAGES. | ||||||
|  |  | ||||||
|  | 		     END OF TERMS AND CONDITIONS | ||||||
|  |  | ||||||
|  | 	    How to Apply These Terms to Your New Programs | ||||||
|  |  | ||||||
|  |   If you develop a new program, and you want it to be of the greatest | ||||||
|  | possible use to the public, the best way to achieve this is to make it | ||||||
|  | free software which everyone can redistribute and change under these terms. | ||||||
|  |  | ||||||
|  |   To do so, attach the following notices to the program.  It is safest | ||||||
|  | to attach them to the start of each source file to most effectively | ||||||
|  | convey the exclusion of warranty; and each file should have at least | ||||||
|  | the "copyright" line and a pointer to where the full notice is found. | ||||||
|  |  | ||||||
|  |     <one line to give the program's name and a brief idea of what it does.> | ||||||
|  |     Copyright (C) <year>  <name of author> | ||||||
|  |  | ||||||
|  |     This program is free software; you can redistribute it and/or modify | ||||||
|  |     it under the terms of the GNU General Public License as published by | ||||||
|  |     the Free Software Foundation; either version 2 of the License, or | ||||||
|  |     (at your option) any later version. | ||||||
|  |  | ||||||
|  |     This program is distributed in the hope that it will be useful, | ||||||
|  |     but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||||
|  |     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||||
|  |     GNU General Public License for more details. | ||||||
|  |  | ||||||
|  |     You should have received a copy of the GNU General Public License | ||||||
|  |     along with this program; if not, write to the Free Software | ||||||
|  |     Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA | ||||||
|  |  | ||||||
|  |  | ||||||
|  | Also add information on how to contact you by electronic and paper mail. | ||||||
|  |  | ||||||
|  | If the program is interactive, make it output a short notice like this | ||||||
|  | when it starts in an interactive mode: | ||||||
|  |  | ||||||
|  |     Gnomovision version 69, Copyright (C) year name of author | ||||||
|  |     Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. | ||||||
|  |     This is free software, and you are welcome to redistribute it | ||||||
|  |     under certain conditions; type `show c' for details. | ||||||
|  |  | ||||||
|  | The hypothetical commands `show w' and `show c' should show the appropriate | ||||||
|  | parts of the General Public License.  Of course, the commands you use may | ||||||
|  | be called something other than `show w' and `show c'; they could even be | ||||||
|  | mouse-clicks or menu items--whatever suits your program. | ||||||
|  |  | ||||||
|  | You should also get your employer (if you work as a programmer) or your | ||||||
|  | school, if any, to sign a "copyright disclaimer" for the program, if | ||||||
|  | necessary.  Here is a sample; alter the names: | ||||||
|  |  | ||||||
|  |   Yoyodyne, Inc., hereby disclaims all copyright interest in the program | ||||||
|  |   `Gnomovision' (which makes passes at compilers) written by James Hacker. | ||||||
|  |  | ||||||
|  |   <signature of Ty Coon>, 1 April 1989 | ||||||
|  |   Ty Coon, President of Vice | ||||||
|  |  | ||||||
|  | This General Public License does not permit incorporating your program into | ||||||
|  | proprietary programs.  If your program is a subroutine library, you may | ||||||
|  | consider it more useful to permit linking proprietary applications with the | ||||||
|  | library.  If this is what you want to do, use the GNU Library General | ||||||
|  | Public License instead of this License. | ||||||
							
								
								
									
										6
									
								
								edge-build-checks/SUSE-Edge.conf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								edge-build-checks/SUSE-Edge.conf
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,6 @@ | |||||||
|  | [General] | ||||||
|  | Vendor=com.suse | ||||||
|  | Registry=%%IMG_REPO%% | ||||||
|  |  | ||||||
|  | [Tags] | ||||||
|  | Allowed=%%IMG_PREFIX%%* | ||||||
							
								
								
									
										9
									
								
								edge-build-checks/_service
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								edge-build-checks/_service
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,9 @@ | |||||||
|  | <services> | ||||||
|  |   <service name="replace_using_env" mode="buildtime"> | ||||||
|  |     <param name="file">SUSE-Edge.conf</param> | ||||||
|  |     <param name="eval">IMG_PREFIX=$(rpm --macros=/root/.rpmmacros -E %{?img_prefix})</param> | ||||||
|  |     <param name="var">IMG_PREFIX</param> | ||||||
|  |     <param name="eval">IMG_REPO=$(rpm --macros=/root/.rpmmacros -E %img_repo)</param> | ||||||
|  |     <param name="var">IMG_REPO</param> | ||||||
|  |   </service> | ||||||
|  | </services> | ||||||
							
								
								
									
										59
									
								
								edge-build-checks/edge-build-checks.spec
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										59
									
								
								edge-build-checks/edge-build-checks.spec
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,59 @@ | |||||||
|  | # | ||||||
|  | # spec file for package edge-build-checks | ||||||
|  | # | ||||||
|  | # Copyright (c) 2024 SUSE LLC | ||||||
|  | # | ||||||
|  | # All modifications and additions to the file contributed by third parties | ||||||
|  | # remain the property of their copyright owners, unless otherwise agreed | ||||||
|  | # upon. The license for this file, and modifications and additions to the | ||||||
|  | # file, is the same license as for the pristine package itself (unless the | ||||||
|  | # license for the pristine package is not an Open Source License, in which | ||||||
|  | # case the license is the MIT License). An "Open Source License" is a | ||||||
|  | # license that conforms to the Open Source Definition (Version 1.9) | ||||||
|  | # published by the Open Source Initiative. | ||||||
|  |  | ||||||
|  | # Please submit bugfixes or comments via https://bugs.opensuse.org/ | ||||||
|  | # | ||||||
|  |  | ||||||
|  |  | ||||||
|  | Name:           edge-build-checks | ||||||
|  | Summary:        post checks for build after charts and images are created | ||||||
|  | License:        GPL-2.0-or-later | ||||||
|  | Group:          Development/Tools/Building | ||||||
|  | Version:        0.0.1 | ||||||
|  | Release:        0 | ||||||
|  | Source0:        COPYING | ||||||
|  | Source1:        20-helm-images | ||||||
|  | Source2:        10-helm-lint | ||||||
|  | Source3:        SUSE-Edge.conf | ||||||
|  | Source4:        20-helm-tags | ||||||
|  | BuildArch:      noarch | ||||||
|  | Requires:       container-build-checks | ||||||
|  | Requires:       python3-PyYAML | ||||||
|  | Provides:       container-build-checks-vendor | ||||||
|  |  | ||||||
|  | %description | ||||||
|  | some scripts to check for problems in edge related helm charts and images after their creation | ||||||
|  | in OBS. | ||||||
|  |  | ||||||
|  | %prep | ||||||
|  | cp %{SOURCE0} . | ||||||
|  |  | ||||||
|  | %build | ||||||
|  | %define _lto_cflags %{nil} | ||||||
|  | # nothing to do | ||||||
|  |  | ||||||
|  | %install | ||||||
|  | install -d $RPM_BUILD_ROOT/usr/lib/build/post-build-checks | ||||||
|  | install -m 755 %{SOURCE1} $RPM_BUILD_ROOT/usr/lib/build/post-build-checks | ||||||
|  | install -m 755 %{SOURCE2} $RPM_BUILD_ROOT/usr/lib/build/post-build-checks | ||||||
|  | install -m 755 %{SOURCE4} $RPM_BUILD_ROOT/usr/lib/build/post-build-checks | ||||||
|  | install -d %{buildroot}%{_datadir}/container-build-checks | ||||||
|  | install -m 644 %{SOURCE3} %{buildroot}%{_datadir}/container-build-checks/SUSE-Edge.conf | ||||||
|  |  | ||||||
|  | %files | ||||||
|  | %license COPYING | ||||||
|  | %{_datadir}/container-build-checks | ||||||
|  | /usr/lib/build | ||||||
|  |  | ||||||
|  | %changelog | ||||||
| @@ -1,5 +1,5 @@ | |||||||
| #!BuildTag: %%IMG_PREFIX%%edge-image-builder:1.1.0 | #!BuildTag: %%IMG_PREFIX%%edge-image-builder:%PACKAGE_VERSION% | ||||||
| #!BuildTag: %%IMG_PREFIX%%edge-image-builder:1.1.0-%RELEASE% | #!BuildTag: %%IMG_PREFIX%%edge-image-builder:%PACKAGE_VERSION%-%RELEASE% | ||||||
| #!BuildVersion: 15.6 | #!BuildVersion: 15.6 | ||||||
| ARG SLE_VERSION | ARG SLE_VERSION | ||||||
| FROM registry.suse.com/bci/bci-base:$SLE_VERSION | FROM registry.suse.com/bci/bci-base:$SLE_VERSION | ||||||
| @@ -15,11 +15,11 @@ RUN zypper --non-interactive install --no-recommends edge-image-builder qemu-x86 | |||||||
| LABEL org.opencontainers.image.authors="SUSE LLC (https://www.suse.com/)" | LABEL org.opencontainers.image.authors="SUSE LLC (https://www.suse.com/)" | ||||||
| LABEL org.opencontainers.image.title="SLE edge-image-builder Container Image" | LABEL org.opencontainers.image.title="SLE edge-image-builder Container Image" | ||||||
| LABEL org.opencontainers.image.description="edge-image-builder based on the SLE Base Container Image." | LABEL org.opencontainers.image.description="edge-image-builder based on the SLE Base Container Image." | ||||||
| LABEL org.opencontainers.image.version="1.1.0" | LABEL org.opencontainers.image.version="%PACKAGE_VERSION%" | ||||||
| LABEL org.opencontainers.image.url="https://www.suse.com/products/server/" | LABEL org.opencontainers.image.url="https://www.suse.com/products/server/" | ||||||
| LABEL org.opencontainers.image.created="%BUILDTIME%" | LABEL org.opencontainers.image.created="%BUILDTIME%" | ||||||
| LABEL org.opencontainers.image.vendor="SUSE LLC" | LABEL org.opencontainers.image.vendor="SUSE LLC" | ||||||
| LABEL org.opensuse.reference="%%IMG_REPO%%/%%IMG_PREFIX%%edge-image-builder:1.1.0-%RELEASE%" | LABEL org.opensuse.reference="%%IMG_REPO%%/%%IMG_PREFIX%%edge-image-builder:%PACKAGE_VERSION%-%RELEASE%" | ||||||
| LABEL org.openbuildservice.disturl="%DISTURL%" | LABEL org.openbuildservice.disturl="%DISTURL%" | ||||||
| LABEL com.suse.supportlevel="%%SUPPORT_LEVEL%%" | LABEL com.suse.supportlevel="%%SUPPORT_LEVEL%%" | ||||||
| LABEL com.suse.eula="SUSE Combined EULA February 2024" | LABEL com.suse.eula="SUSE Combined EULA February 2024" | ||||||
|   | |||||||
| @@ -1,5 +1,10 @@ | |||||||
| <services> | <services> | ||||||
|   <service mode="buildtime" name="kiwi_metainfo_helper"/> |   <service mode="buildtime" name="kiwi_metainfo_helper"/> | ||||||
|  |   <service name="replace_using_package_version" mode="buildtime"> | ||||||
|  |       <param name="file">Dockerfile</param> | ||||||
|  |       <param name="regex">%PACKAGE_VERSION%</param> | ||||||
|  |       <param name="package">edge-image-builder</param> | ||||||
|  |     </service> | ||||||
|   <service name="replace_using_env" mode="buildtime"> |   <service name="replace_using_env" mode="buildtime"> | ||||||
|     <param name="file">Dockerfile</param> |     <param name="file">Dockerfile</param> | ||||||
|     <param name="eval">IMG_PREFIX=$(rpm --macros=/root/.rpmmacros -E %{?img_prefix})</param> |     <param name="eval">IMG_PREFIX=$(rpm --macros=/root/.rpmmacros -E %{?img_prefix})</param> | ||||||
| @@ -7,10 +12,13 @@ | |||||||
|     <param name="eval">IMG_REPO=$(rpm --macros=/root/.rpmmacros -E %img_repo)</param> |     <param name="eval">IMG_REPO=$(rpm --macros=/root/.rpmmacros -E %img_repo)</param> | ||||||
|     <param name="var">IMG_REPO</param> |     <param name="var">IMG_REPO</param> | ||||||
|     <param name="file">artifacts.yaml</param> |     <param name="file">artifacts.yaml</param> | ||||||
|  |     <param name="eval">CHART_PREFIX=$(rpm --macros=/root/.rpmmacros -E %{?chart_prefix})</param> | ||||||
|  |     <param name="var">CHART_PREFIX</param> | ||||||
|     <param name="eval">CHART_REPO=$(rpm --macros=/root/.rpmmacros -E %chart_repo)</param> |     <param name="eval">CHART_REPO=$(rpm --macros=/root/.rpmmacros -E %chart_repo)</param> | ||||||
|     <param name="var">CHART_REPO</param> |     <param name="var">CHART_REPO</param> | ||||||
|     <param name="eval">SUPPORT_LEVEL=$(rpm --macros=/root/.rpmmacros -E %support_level)</param> |     <param name="eval">SUPPORT_LEVEL=$(rpm --macros=/root/.rpmmacros -E %support_level)</param> | ||||||
|     <param name="var">SUPPORT_LEVEL</param> |     <param name="var">SUPPORT_LEVEL</param> | ||||||
|  |     <param name="eval">CHART_MAJOR=$(rpm --macros=/root/.rpmmacros -E %{?chart_major})</param> | ||||||
|  |     <param name="var">CHART_MAJOR</param> | ||||||
|   </service> |   </service> | ||||||
| </services> | </services> | ||||||
|  |  | ||||||
|   | |||||||
| @@ -1,11 +1,11 @@ | |||||||
| metallb: | metallb: | ||||||
|   chart: metallb-chart |   chart: metallb | ||||||
|   repository: %%CHART_REPO%%/3.1 |   repository: "%%CHART_REPO%%/%%CHART_PREFIX%%" | ||||||
|   version: 0.14.9 |   version: "%%CHART_MAJOR%%.0.0+up0.14.9" | ||||||
| endpoint-copier-operator: | endpoint-copier-operator: | ||||||
|   chart: endpoint-copier-operator-chart |   chart: endpoint-copier-operator | ||||||
|   repository: %%CHART_REPO%%/3.1 |   repository: "%%CHART_REPO%%/%%CHART_PREFIX%%" | ||||||
|   version: 0.2.1 |   version: "%%CHART_MAJOR%%.0.0+up0.2.1" | ||||||
| kubernetes: | kubernetes: | ||||||
|   k3s: |   k3s: | ||||||
|     selinuxPackage: k3s-selinux-1.6-1.slemicro.noarch |     selinuxPackage: k3s-selinux-1.6-1.slemicro.noarch | ||||||
| @@ -13,4 +13,3 @@ kubernetes: | |||||||
|   rke2: |   rke2: | ||||||
|     selinuxPackage: rke2-selinux |     selinuxPackage: rke2-selinux | ||||||
|     selinuxRepository: https://rpm.rancher.io/rke2/stable/common/slemicro/noarch |     selinuxRepository: https://rpm.rancher.io/rke2/stable/common/slemicro/noarch | ||||||
|  |  | ||||||
|   | |||||||
| @@ -1,18 +1,16 @@ | |||||||
| <services> | <services> | ||||||
|   <service name="obs_scm"> |   <service name="obs_scm"> | ||||||
|     <param name="url">https://github.com/suse-edge/edge-image-builder.git</param> |     <param name="url">https://github.com/suse-edge/edge-image-builder.git</param> | ||||||
|     <param name="versionformat">@PARENT_TAG@</param> |     <param name="versionformat">@PARENT_TAG@_%h.%ad</param> | ||||||
|     <param name="scm">git</param> |     <param name="scm">git</param> | ||||||
|     <param name="exclude">.git</param> |     <param name="exclude">.git</param> | ||||||
|     <param name="revision">v1.1.0</param> |     <param name="revision">main</param> | ||||||
|     <param name="versionrewrite-pattern">v(\d+).(\d+).(\d+)</param> |     <param name="versionrewrite-pattern">v(.*)</param> | ||||||
|     <param name="versionrewrite-replacement">\1.\2.\3</param> |     <param name="versionrewrite-replacement">\1</param> | ||||||
|     <param name="changesgenerate">enable</param> |     <param name="changesgenerate">enable</param> | ||||||
|   </service> |   </service> | ||||||
|   <service mode="buildtime" name="tar" /> |   <service mode="buildtime" name="tar"> | ||||||
|   <service mode="buildtime" name="recompress"> |     <param name="obsinfo">edge-image-builder.obsinfo</param> | ||||||
|     <param name="file">*.tar</param> |  | ||||||
|     <param name="compression">gz</param> |  | ||||||
|   </service> |   </service> | ||||||
|   <service mode="buildtime" name="set_version" /> |   <service mode="buildtime" name="set_version" /> | ||||||
|   <service name="go_modules"> |   <service name="go_modules"> | ||||||
|   | |||||||
| @@ -17,14 +17,14 @@ | |||||||
|  |  | ||||||
|  |  | ||||||
| Name:           edge-image-builder | Name:           edge-image-builder | ||||||
| Version:        1.1.0 | Version:        0 | ||||||
| Release:        0 | Release:        0 | ||||||
| Summary:        Edge Image Builder | Summary:        Edge Image Builder | ||||||
| License:        Apache-2.0 | License:        Apache-2.0 | ||||||
| URL:            https://github.com/suse-edge/edge-image-builder | URL:            https://github.com/suse-edge/edge-image-builder | ||||||
| Source:         edge-image-builder-%{version}.tar.gz | Source:         edge-image-builder-%{version}.tar | ||||||
| Source1:        vendor.tar.gz | Source1:        vendor.tar.gz | ||||||
| BuildRequires:  golang(API) go1.22 | BuildRequires:  golang(API) go1.24 | ||||||
| BuildRequires:  golang-packaging | BuildRequires:  golang-packaging | ||||||
| BuildRequires:  gpgme-devel | BuildRequires:  gpgme-devel | ||||||
| BuildRequires:  device-mapper-devel | BuildRequires:  device-mapper-devel | ||||||
|   | |||||||
| @@ -1,8 +1,8 @@ | |||||||
| #!BuildTag: %%IMG_PREFIX%%endpoint-copier-operator-chart:0.2.1 | #!BuildTag: %%CHART_PREFIX%%endpoint-copier-operator:%%CHART_MAJOR%%.0.0_up0.2.1 | ||||||
| #!BuildTag: %%IMG_PREFIX%%endpoint-copier-operator-chart:0.2.1-%RELEASE% | #!BuildTag: %%CHART_PREFIX%%endpoint-copier-operator:%%CHART_MAJOR%%.0.0_up0.2.1-%RELEASE% | ||||||
| apiVersion: v2 | apiVersion: v2 | ||||||
| appVersion: v0.2.0 | appVersion: v0.2.0 | ||||||
| description: A Helm chart for Kubernetes | description: A Helm chart for Kubernetes | ||||||
| name: endpoint-copier-operator | name: endpoint-copier-operator | ||||||
| type: application | type: application | ||||||
| version: 0.2.1 | version: "%%CHART_MAJOR%%.0.0+up0.2.1" | ||||||
|   | |||||||
| @@ -9,7 +9,9 @@ | |||||||
|   </service> |   </service> | ||||||
|   <service name="replace_using_env" mode="buildtime"> |   <service name="replace_using_env" mode="buildtime"> | ||||||
|     <param name="file">Chart.yaml</param> |     <param name="file">Chart.yaml</param> | ||||||
|     <param name="eval">IMG_PREFIX=$(rpm --macros=/root/.rpmmacros -E %{?img_prefix})</param> |     <param name="eval">CHART_PREFIX=$(rpm --macros=/root/.rpmmacros -E %{?chart_prefix})</param> | ||||||
|     <param name="var">IMG_PREFIX</param> |     <param name="var">CHART_PREFIX</param> | ||||||
|  |     <param name="eval">CHART_MAJOR=$(rpm --macros=/root/.rpmmacros -E %{?chart_major})</param> | ||||||
|  |     <param name="var">CHART_MAJOR</param> | ||||||
|   </service> |   </service> | ||||||
| </services> | </services> | ||||||
|   | |||||||
| @@ -12,10 +12,8 @@ | |||||||
|     <param name="without-version">yes</param> |     <param name="without-version">yes</param> | ||||||
|     <param name="versionrewrite-replacement">\1</param> |     <param name="versionrewrite-replacement">\1</param> | ||||||
|   </service> |   </service> | ||||||
|   <service mode="buildtime" name="tar" /> |   <service mode="buildtime" name="tar"> | ||||||
|   <service mode="buildtime" name="recompress"> |     <param name="obsinfo">endpoint-copier-operator.obsinfo</param> | ||||||
|     <param name="file">*.tar</param> |  | ||||||
|     <param name="compression">gz</param> |  | ||||||
|   </service> |   </service> | ||||||
|   <service name="go_modules"> |   <service name="go_modules"> | ||||||
|   </service> |   </service> | ||||||
|   | |||||||
| @@ -22,7 +22,7 @@ Release:        0.2.0 | |||||||
| Summary:        Implements a Kubernetes API for copying endpoint resources | Summary:        Implements a Kubernetes API for copying endpoint resources | ||||||
| License:        Apache-2.0 | License:        Apache-2.0 | ||||||
| URL:            https://github.com/suse-edge/endpoint-copier-operator | URL:            https://github.com/suse-edge/endpoint-copier-operator | ||||||
| Source:         endpoint-copier-operator-%{version}.tar.gz | Source:         endpoint-copier-operator-%{version}.tar | ||||||
| Source1:        vendor.tar.gz | Source1:        vendor.tar.gz | ||||||
| BuildRequires:  golang(API) = 1.20 | BuildRequires:  golang(API) = 1.20 | ||||||
| ExcludeArch:    s390 | ExcludeArch:    s390 | ||||||
|   | |||||||
							
								
								
									
										58
									
								
								frr-image/Dockerfile
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										58
									
								
								frr-image/Dockerfile
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,58 @@ | |||||||
|  | # SPDX-License-Identifier: MIT | ||||||
|  | #!BuildTag: %%IMG_PREFIX%%frr:8.5.6 | ||||||
|  | #!BuildTag: %%IMG_PREFIX%%frr:8.5.6-%RELEASE% | ||||||
|  | #!BuildVersion: 15.6 | ||||||
|  | ARG SLE_VERSION | ||||||
|  | FROM registry.suse.com/bci/bci-micro:$SLE_VERSION AS micro | ||||||
|  |  | ||||||
|  | FROM registry.suse.com/bci/bci-base:$SLE_VERSION AS base | ||||||
|  | COPY --from=micro / /installroot/ | ||||||
|  | RUN zypper --installroot /installroot --non-interactive install --no-recommends tcpdump libpcap-devel iproute2 iputils strace socat frr python3 catatonit sed util-linux; zypper -n clean; rm -rf /var/log/* | ||||||
|  |  | ||||||
|  | FROM micro AS final | ||||||
|  | # Define labels according to https://en.opensuse.org/Building_derived_containers | ||||||
|  | # labelprefix=com.suse.application.frr | ||||||
|  | LABEL org.opencontainers.image.authors="SUSE LLC (https://www.suse.com/)" | ||||||
|  | LABEL org.opencontainers.image.title="FRR Container Image" | ||||||
|  | LABEL org.opencontainers.image.description="frr based on the SLE Base Container Image." | ||||||
|  | LABEL org.opencontainers.image.version="8.5.6" | ||||||
|  | LABEL org.opencontainers.image.url="https://www.suse.com/products/server/" | ||||||
|  | LABEL org.opencontainers.image.created="%BUILDTIME%" | ||||||
|  | LABEL org.opencontainers.image.vendor="SUSE LLC" | ||||||
|  | LABEL org.opensuse.reference="%%IMG_REPO%%/%%IMG_PREFIX%%frr:8.5.6-%RELEASE%" | ||||||
|  | LABEL org.openbuildservice.disturl="%DISTURL%" | ||||||
|  | LABEL com.suse.supportlevel="%%SUPPORT_LEVEL%%" | ||||||
|  | LABEL com.suse.eula="SUSE Combined EULA February 2024" | ||||||
|  | LABEL com.suse.lifecycle-url="https://www.suse.com/lifecycle" | ||||||
|  | LABEL com.suse.image-type="application" | ||||||
|  | LABEL com.suse.release-stage="released" | ||||||
|  | # endlabelprefix | ||||||
|  |  | ||||||
|  | COPY --from=base /installroot / | ||||||
|  |  | ||||||
|  | #Install frr | ||||||
|  | USER root | ||||||
|  |  | ||||||
|  | ENV PYTHONDONTWRITEBYTECODE yes | ||||||
|  |  | ||||||
|  | # frr.sh is the entry point. This script examines environment | ||||||
|  | # variables to direct operation and configure ovn | ||||||
|  | ADD frr.sh /root/ | ||||||
|  | ADD daemons /etc/frr | ||||||
|  | ADD frr.conf /etc/frr | ||||||
|  | ADD vtysh.conf /etc/frr | ||||||
|  |  | ||||||
|  | RUN chown frr:frr /etc/frr/daemons /etc/frr/frr.conf | ||||||
|  |  | ||||||
|  | RUN ln -s /usr/bin/catatonit /sbin/tini | ||||||
|  | RUN usermod -a -G frrvty frr | ||||||
|  |  | ||||||
|  | COPY docker-start /usr/libexec/frr/docker-start | ||||||
|  | RUN cp -r /usr/libexec/frr /usr/lib/ # required because of the different path on rhel | ||||||
|  |  | ||||||
|  | WORKDIR /root | ||||||
|  | ENTRYPOINT ["/sbin/tini", "--"] | ||||||
|  |  | ||||||
|  | COPY docker-start /usr/lib/frr/docker-start | ||||||
|  | RUN chmod +x /usr/lib/frr/docker-start | ||||||
|  | CMD ["/usr/lib/frr/docker-start"] | ||||||
| @@ -1,12 +1,6 @@ | |||||||
| <services> | <services> | ||||||
|   <service mode="buildtime" name="kiwi_metainfo_helper"/> |   <service mode="buildtime" name="kiwi_metainfo_helper"/> | ||||||
|   <service mode="buildtime" name="docker_label_helper"/> |   <service mode="buildtime" name="docker_label_helper"/> | ||||||
|   <service name="replace_using_package_version" mode="buildtime"> |  | ||||||
|     <param name="file">Dockerfile</param> |  | ||||||
|     <param name="regex">%%cluster-api-provider-metal3_version%%</param> |  | ||||||
|     <param name="package">cluster-api-provider-metal3</param> |  | ||||||
|     <param name="parse-version">patch</param> |  | ||||||
|   </service> |  | ||||||
|   <service name="replace_using_env" mode="buildtime"> |   <service name="replace_using_env" mode="buildtime"> | ||||||
|     <param name="file">Dockerfile</param> |     <param name="file">Dockerfile</param> | ||||||
|     <param name="eval">IMG_PREFIX=$(rpm --macros=/root/.rpmmacros -E %{?img_prefix})</param> |     <param name="eval">IMG_PREFIX=$(rpm --macros=/root/.rpmmacros -E %{?img_prefix})</param> | ||||||
							
								
								
									
										82
									
								
								frr-image/daemons
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										82
									
								
								frr-image/daemons
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,82 @@ | |||||||
|  | # This file tells the frr package which daemons to start. | ||||||
|  | # | ||||||
|  | # Entries are in the format: <daemon>=(yes|no|priority) | ||||||
|  | #   0, "no"  = disabled | ||||||
|  | #   1, "yes" = highest priority | ||||||
|  | #   2 .. 10  = lower priorities | ||||||
|  | # | ||||||
|  | # For daemons which support multiple instances, a 2nd line listing | ||||||
|  | # the instances can be added. Eg for ospfd: | ||||||
|  | #   ospfd=yes | ||||||
|  | #   ospfd_instances="1,2" | ||||||
|  | # | ||||||
|  | # Priorities were suggested by Dancer <dancer@zeor.simegen.com>. | ||||||
|  | # They're used to start the FRR daemons in more than one step | ||||||
|  | # (for example start one or two at network initialization and the | ||||||
|  | # rest later). The number of FRR daemons being small, priorities | ||||||
|  | # must be between 1 and 9, inclusive (or the initscript has to be | ||||||
|  | # changed). /etc/init.d/frr then can be started as | ||||||
|  | # | ||||||
|  | #   /etc/init.d/frr <start|stop|restart|<priority>> | ||||||
|  | # | ||||||
|  | # where priority 0 is the same as 'stop', priority 10 or 'start' | ||||||
|  | # means 'start all' | ||||||
|  | # | ||||||
|  | # Sample configurations for these daemons can be found in | ||||||
|  | # /usr/share/doc/frr/examples/. | ||||||
|  | # | ||||||
|  | # ATTENTION: | ||||||
|  | # | ||||||
|  | # When activation a daemon at the first time, a config file, even if it is | ||||||
|  | # empty, has to be present *and* be owned by the user and group "frr", else | ||||||
|  | # the daemon will not be started by /etc/init.d/frr. The permissions should | ||||||
|  | # be u=rw,g=r,o=. | ||||||
|  | # When using "vtysh" such a config file is also needed. It should be owned by | ||||||
|  | # group "frrvty" and set to ug=rw,o= though. Check /etc/pam.d/frr, too. | ||||||
|  | # | ||||||
|  | watchfrr_enable=yes | ||||||
|  | watchfrr_options="-r '/usr/lib/frr/frr restart %s' -s '/usr/lib/frr/frr start %s' -k '/usr/lib/frr/frr stop %s'" | ||||||
|  | # | ||||||
|  | zebra=yes | ||||||
|  | bgpd=yes | ||||||
|  | ospfd=no | ||||||
|  | ospf6d=no | ||||||
|  | ripd=no | ||||||
|  | ripngd=no | ||||||
|  | isisd=no | ||||||
|  | pimd=no | ||||||
|  | nhrpd=no | ||||||
|  | eigrpd=no | ||||||
|  | sharpd=no | ||||||
|  | pbrd=no | ||||||
|  | staticd=yes | ||||||
|  | bfdd=yes | ||||||
|  | fabricd=no | ||||||
|  |  | ||||||
|  | # | ||||||
|  | # Command line options for the daemons | ||||||
|  | # | ||||||
|  | zebra_options=("-A 127.0.0.1") | ||||||
|  | bgpd_options=("-A 127.0.0.1") | ||||||
|  | ospfd_options=("-A 127.0.0.1") | ||||||
|  | ospf6d_options=("-A ::1") | ||||||
|  | ripd_options=("-A 127.0.0.1") | ||||||
|  | ripngd_options=("-A ::1") | ||||||
|  | isisd_options=("-A 127.0.0.1") | ||||||
|  | pimd_options=("-A 127.0.0.1") | ||||||
|  | nhrpd_options=("-A 127.0.0.1") | ||||||
|  | eigrpd_options=("-A 127.0.0.1") | ||||||
|  | sharpd_options=("-A 127.0.0.1") | ||||||
|  | pbrd_options=("-A 127.0.0.1") | ||||||
|  | staticd_options=("-A 127.0.0.1") | ||||||
|  | bfdd_options=("-A 127.0.0.1") | ||||||
|  | fabricd_options=("-A 127.0.0.1") | ||||||
|  |  | ||||||
|  | # | ||||||
|  | # If the vtysh_enable is yes, then the unified config is read | ||||||
|  | # and applied if it exists.  If no unified frr.conf exists | ||||||
|  | # then the per-daemon <daemon>.conf files are used) | ||||||
|  | # If vtysh_enable is no or non-existant, the frr.conf is ignored. | ||||||
|  | # it is highly suggested to have this set to yes | ||||||
|  | vtysh_enable=yes | ||||||
|  |  | ||||||
							
								
								
									
										4
									
								
								frr-image/docker-start
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								frr-image/docker-start
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,4 @@ | |||||||
|  | #!/bin/bash | ||||||
|  |  | ||||||
|  | source /usr/lib/frr/frrcommon.sh | ||||||
|  | /usr/lib/frr/watchfrr $(daemon_list) | ||||||
							
								
								
									
										53
									
								
								frr-image/frr.conf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										53
									
								
								frr-image/frr.conf
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,53 @@ | |||||||
|  | frr defaults traditional | ||||||
|  | log file /var/log/frr/frr.log | ||||||
|  | log syslog informational | ||||||
|  | log stdout debugging | ||||||
|  | ipv6 forwarding | ||||||
|  | service integrated-vtysh-config | ||||||
|  | ! | ||||||
|  | debug bgp updates in | ||||||
|  | debug bgp updates out | ||||||
|  | debug bgp zebra | ||||||
|  | ! | ||||||
|  | interface eth0 | ||||||
|  |  no ipv6 nd suppress-ra | ||||||
|  |  ipv6 nd ra-interval 10 | ||||||
|  | ! | ||||||
|  | router bgp OCPASN | ||||||
|  |  bgp router-id OCPROUTERID | ||||||
|  |  bgp bestpath as-path multipath-relax | ||||||
|  |  bgp bestpath compare-routerid | ||||||
|  | ! | ||||||
|  |  neighbor OCPnodes peer-group | ||||||
|  |  neighbor OCPnodes description Internal OCP Nodes | ||||||
|  |  neighbor OCPnodes remote-as OCPASN | ||||||
|  |  neighbor OCPnodes bfd | ||||||
|  |  neighbor OCPnodes capability extended-nexthop  | ||||||
|  |  !neighbor eth0 interface peer-group OCPnodes | ||||||
|  |  !neighbor OCPPEER remote-as OCPASN peer-group OCPnodes | ||||||
|  |  neighbor OCPPEER peer-group OCPnodes | ||||||
|  |  ! | ||||||
|  |  address-family ipv4 unicast | ||||||
|  |   redistribute connected | ||||||
|  |   neighbor OCPnodes activate | ||||||
|  |  exit-address-family | ||||||
|  |  ! | ||||||
|  |  address-family ipv6 unicast | ||||||
|  |   redistribute connected | ||||||
|  |   neighbor OCPnodes activate | ||||||
|  |   neighbor OCPnodes nexthop-local unchanged | ||||||
|  |  exit-address-family | ||||||
|  |  ! | ||||||
|  | ! | ||||||
|  | bfd | ||||||
|  |  peer OCPPEER vrf default interface eth0 | ||||||
|  |    receive-interval 2000 | ||||||
|  |    transmit-interval 2000 | ||||||
|  |    echo-mode | ||||||
|  |    echo-interval 3000 | ||||||
|  |    no shutdown | ||||||
|  |  exit | ||||||
|  | ! | ||||||
|  | line vty | ||||||
|  | ! | ||||||
|  |  | ||||||
							
								
								
									
										124
									
								
								frr-image/frr.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										124
									
								
								frr-image/frr.sh
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,124 @@ | |||||||
|  | #!/bin/bash | ||||||
|  | #set -euo pipefail | ||||||
|  |  | ||||||
|  | # Enable verbose shell output if FRR_SH_VERBOSE is set to 'true' | ||||||
|  | if [[ "${FRR_SH_VERBOSE:-}" == "true" ]]; then | ||||||
|  |   set -x | ||||||
|  | fi | ||||||
|  |  | ||||||
|  | # The argument to the command is the operation to be performed | ||||||
|  | # frr-node display display_env  | ||||||
|  | # a cmd must be provided, there is no default | ||||||
|  | cmd=${1:-""} | ||||||
|  |  | ||||||
|  | # The frr user id, by default it is going to be frr:frr | ||||||
|  | frr_user_id=${FRR_USER_ID:-""} | ||||||
|  |  | ||||||
|  | # frr options | ||||||
|  | frr_options=${FRR_OPTIONS:-""} | ||||||
|  |  | ||||||
|  | # This script is the entrypoint to the image. | ||||||
|  | # frr.sh version (update when API between daemonset and script changes - v.x.y) | ||||||
|  | frr_version="3" | ||||||
|  |  | ||||||
|  | # The daemonset version must be compatible with this script. | ||||||
|  | # The default when FRR_DAEMONSET_VERSION is not set is version 3 | ||||||
|  | frr_daemonset_version=${FRR_DAEMONSET_VERSION:-"3"} | ||||||
|  |  | ||||||
|  | # hostname is the host's hostname when using host networking, | ||||||
|  | # This is useful on the master | ||||||
|  | # otherwise it is the container ID (useful for debugging). | ||||||
|  | frr_pod_host=${K8S_NODE:-$(hostname)} | ||||||
|  |  | ||||||
|  | # The ovs user id, by default it is going to be root:root | ||||||
|  | frr_user_id=${FRR_USER_ID:-""} | ||||||
|  |  | ||||||
|  | # frr options | ||||||
|  | frr_options=${FRR_OPTIONS:-""} | ||||||
|  |  | ||||||
|  | # frr.conf variables | ||||||
|  | ocp_asn=${OCPASN:-65000} | ||||||
|  | ocp_routerid=${OCPROUTERID:-"10.10.10.1"} | ||||||
|  | ocp_peer=${OCPPEER:-"10.10.10.1"} | ||||||
|  |  | ||||||
|  | FRR_ETCDIR=/etc/frr | ||||||
|  | FRR_RUNDIR=/var/run/frr | ||||||
|  | FRR_LOGDIR=/var/log/frr | ||||||
|  |  | ||||||
|  | # ========================================= | ||||||
|  |  | ||||||
|  | setup_frr_permissions() { | ||||||
|  |     chown -R ${frr_user_id} ${FRR_RUNDIR} | ||||||
|  |     chown -R ${frr_user_id} ${FRR_LOGDIR} | ||||||
|  |     chown -R ${frr_user_id} ${FRR_ETCDIR} | ||||||
|  | } | ||||||
|  |  | ||||||
|  | # ========================================= | ||||||
|  |  | ||||||
|  | display_version() { | ||||||
|  |   echo " =================== hostname: ${frr_pod_host}" | ||||||
|  |   echo " =================== daemonset version ${frr_daemonset_version}" | ||||||
|  |   if [[ -f /root/git_info ]]; then | ||||||
|  |     disp_ver=$(cat /root/git_info) | ||||||
|  |     return | ||||||
|  |   fi | ||||||
|  | } | ||||||
|  |  | ||||||
|  | display_env() { | ||||||
|  |   echo FRR_USER_ID ${frr_user_id} | ||||||
|  |   echo FRR_OPTIONS ${frr_options} | ||||||
|  |   echo frr.sh version ${frr_version} | ||||||
|  |   echo ocp_asn ${ocp_asn} | ||||||
|  |   echo ocp_routerid ${ocp_routerid} | ||||||
|  |   echo ocp_peer ${ocp_peer} | ||||||
|  | } | ||||||
|  |  | ||||||
|  | # frr-node - all nodes | ||||||
|  | frr-node() { | ||||||
|  |   trap 'kill $(jobs -p) ; exit 0' TERM | ||||||
|  |   rm -f ${FRR_RUNDIR}/frr.pid | ||||||
|  |   echo "=============== frr-node ========== update frr.conf" | ||||||
|  |   sed -i "s/OCPASN/$ocp_asn/" /etc/frr/frr.conf | ||||||
|  |   sed -i "s/OCPPEER/$ocp_peer/" /etc/frr/frr.conf | ||||||
|  |   sed -i "s/OCPROUTERID/$ocp_routerid/" /etc/frr/frr.conf | ||||||
|  |  | ||||||
|  |   #chown -R frr:frr /etc/frr | ||||||
|  |   chown -R frr:frr ${FRR_RUNDIR} | ||||||
|  |   echo "=============== frr-node ========== starting" | ||||||
|  |   # /usr/lib/frr/frrinit.sh start | ||||||
|  |   # bash -x /usr/lib/frr/frrinit.sh start | ||||||
|  |   bash -x  | ||||||
|  |   /usr/lib/frr/frrinit.sh start | ||||||
|  |   frrResult=$? | ||||||
|  |   echo "=============== frrinit result is ${frrResult} "  | ||||||
|  |   | ||||||
|  |   # Sleep forever | ||||||
|  |   exec tail -f /dev/null | ||||||
|  | } | ||||||
|  |  | ||||||
|  | echo "================== frr.sh --- version: ${frr_version} ================" | ||||||
|  |  | ||||||
|  | display_version | ||||||
|  |  | ||||||
|  | display_env | ||||||
|  |  | ||||||
|  | case ${cmd} in | ||||||
|  | "frr-node")  | ||||||
|  |   frr-node | ||||||
|  |   ;; | ||||||
|  | "display_env") | ||||||
|  |   display_env | ||||||
|  |   exit 0 | ||||||
|  |   ;; | ||||||
|  | "display") | ||||||
|  |   display | ||||||
|  |   exit 0 | ||||||
|  |   ;; | ||||||
|  | *) | ||||||
|  |   echo "invalid command ${cmd}" | ||||||
|  |   echo "valid v3 commands: frr-node display_env display "  | ||||||
|  |   exit 0 | ||||||
|  |   ;; | ||||||
|  | esac | ||||||
|  |  | ||||||
|  | exit 0 | ||||||
							
								
								
									
										0
									
								
								frr-image/vtysh.conf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								frr-image/vtysh.conf
									
									
									
									
									
										Normal file
									
								
							| @@ -1,26 +1,25 @@ | |||||||
| # SPDX-License-Identifier: Apache-2.0 | # SPDX-License-Identifier: Apache-2.0 | ||||||
| #!BuildTag: %%IMG_PREFIX%%ip-address-manager:v%%ip-address-manager_version%% | #!BuildTag: %%IMG_PREFIX%%frr-k8s:v%%frr-k8s_version%% | ||||||
| #!BuildTag: %%IMG_PREFIX%%ip-address-manager:%%ip-address-manager_version%% | #!BuildTag: %%IMG_PREFIX%%frr-k8s:v%%frr-k8s_version%%-%RELEASE% | ||||||
| #!BuildTag: %%IMG_PREFIX%%ip-address-manager:%%ip-address-manager_version%%-%RELEASE% |  | ||||||
| #!BuildVersion: 15.6 | #!BuildVersion: 15.6 | ||||||
| ARG SLE_VERSION | ARG SLE_VERSION | ||||||
| FROM registry.suse.com/bci/bci-micro:$SLE_VERSION AS micro | FROM registry.suse.com/bci/bci-micro:$SLE_VERSION AS micro | ||||||
| 
 | 
 | ||||||
| FROM registry.suse.com/bci/bci-base:$SLE_VERSION AS base | FROM registry.suse.com/bci/bci-base:$SLE_VERSION AS base | ||||||
| COPY --from=micro / /installroot/ | COPY --from=micro / /installroot/ | ||||||
| RUN zypper --installroot /installroot --non-interactive install --no-recommends ip-address-manager shadow; zypper -n clean; rm -rf /var/log/* | RUN zypper --installroot /installroot --non-interactive install --no-recommends frr-k8s; zypper -n clean; rm -rf /var/log/* | ||||||
| 
 | 
 | ||||||
| FROM micro AS final | FROM micro AS final | ||||||
| # Define labels according to https://en.opensuse.org/Building_derived_containers | # Define labels according to https://en.opensuse.org/Building_derived_containers | ||||||
| # labelprefix=com.suse.application.ip-address-manager | # labelprefix=com.suse.application.endpoint-copier-operator | ||||||
| LABEL org.opencontainers.image.authors="SUSE LLC (https://www.suse.com/)" | LABEL org.opencontainers.image.authors="SUSE LLC (https://www.suse.com/)" | ||||||
| LABEL org.opencontainers.image.title="SLE ip-address-manager Container Image" | LABEL org.opencontainers.image.title="SLE frr-k8s Container Image" | ||||||
| LABEL org.opencontainers.image.description="ip-address-manager based on the SLE Base Container Image." | LABEL org.opencontainers.image.description="frr-k8s based on the SLE Base Container Image." | ||||||
| LABEL org.opencontainers.image.version="%%ip-address-manager_version%%" | LABEL org.opencontainers.image.version="%%frr-k8s_version%%" | ||||||
| LABEL org.opencontainers.image.url="https://www.suse.com/products/server/" | LABEL org.opencontainers.image.url="https://www.suse.com/products/server/" | ||||||
| LABEL org.opencontainers.image.created="%BUILDTIME%" | LABEL org.opencontainers.image.created="%BUILDTIME%" | ||||||
| LABEL org.opencontainers.image.vendor="SUSE LLC" | LABEL org.opencontainers.image.vendor="SUSE LLC" | ||||||
| LABEL org.opensuse.reference="%%IMG_REPO%%/%%IMG_PREFIX%%ip-address-manager:%%ip-address-manager_version%%-%RELEASE%" | LABEL org.opensuse.reference="%%IMG_REPO%%/%%IMG_PREFIX%%frr-k8s:v%%frr-k8s_version%%-%RELEASE%" | ||||||
| LABEL org.openbuildservice.disturl="%DISTURL%" | LABEL org.openbuildservice.disturl="%DISTURL%" | ||||||
| LABEL com.suse.supportlevel="%%SUPPORT_LEVEL%%" | LABEL com.suse.supportlevel="%%SUPPORT_LEVEL%%" | ||||||
| LABEL com.suse.eula="SUSE Combined EULA February 2024" | LABEL com.suse.eula="SUSE Combined EULA February 2024" | ||||||
| @@ -29,8 +28,6 @@ LABEL com.suse.image-type="application" | |||||||
| LABEL com.suse.release-stage="released" | LABEL com.suse.release-stage="released" | ||||||
| # endlabelprefix | # endlabelprefix | ||||||
| 
 | 
 | ||||||
|  | #Install frr-k8s | ||||||
| COPY --from=base /installroot / | COPY --from=base /installroot / | ||||||
| RUN mv /usr/bin/ip-address-manager /manager | ENTRYPOINT ["/frr-k8s"] | ||||||
| # Use uid of nonroot user (65532) because kubernetes expects numeric user when applying pod security policies |  | ||||||
| USER 65532 |  | ||||||
| ENTRYPOINT [ "/manager" ] |  | ||||||
| @@ -3,8 +3,8 @@ | |||||||
|   <service mode="buildtime" name="docker_label_helper"/> |   <service mode="buildtime" name="docker_label_helper"/> | ||||||
|   <service name="replace_using_package_version" mode="buildtime"> |   <service name="replace_using_package_version" mode="buildtime"> | ||||||
|     <param name="file">Dockerfile</param> |     <param name="file">Dockerfile</param> | ||||||
|     <param name="regex">%%ip-address-manager_version%%</param> |     <param name="regex">%%frr-k8s_version%%</param> | ||||||
|     <param name="package">ip-address-manager</param> |     <param name="package">frr-k8s</param> | ||||||
|     <param name="parse-version">patch</param> |     <param name="parse-version">patch</param> | ||||||
|   </service> |   </service> | ||||||
|   <service name="replace_using_env" mode="buildtime"> |   <service name="replace_using_env" mode="buildtime"> | ||||||
| @@ -2,7 +2,7 @@ | |||||||
|  <service name="obs_scm"> |  <service name="obs_scm"> | ||||||
|     <param name="url">https://github.com/metallb/frr-k8s</param> |     <param name="url">https://github.com/metallb/frr-k8s</param> | ||||||
|     <param name="scm">git</param> |     <param name="scm">git</param> | ||||||
|     <param name="revision">v0.0.14</param> |     <param name="revision">v0.0.16</param> | ||||||
|     <param name="version">_auto_</param> |     <param name="version">_auto_</param> | ||||||
|     <param name="versionformat">@PARENT_TAG@</param> |     <param name="versionformat">@PARENT_TAG@</param> | ||||||
|     <param name="changesgenerate">enable</param> |     <param name="changesgenerate">enable</param> | ||||||
| @@ -12,10 +12,8 @@ | |||||||
|     <param name="without-version">yes</param> |     <param name="without-version">yes</param> | ||||||
|     <param name="versionrewrite-replacement">\1</param> |     <param name="versionrewrite-replacement">\1</param> | ||||||
|   </service> |   </service> | ||||||
|   <service mode="buildtime" name="tar" /> |   <service mode="buildtime" name="tar"> | ||||||
|   <service mode="buildtime" name="recompress"> |     <param name="obsinfo">frr-k8s.obsinfo</param> | ||||||
|     <param name="file">*.tar</param> |  | ||||||
|     <param name="compression">gz</param> |  | ||||||
|   </service> |   </service> | ||||||
|   <service name="go_modules"> |   <service name="go_modules"> | ||||||
|   </service> |   </service> | ||||||
|   | |||||||
| @@ -17,12 +17,12 @@ | |||||||
|  |  | ||||||
|  |  | ||||||
| Name:           frr-k8s | Name:           frr-k8s | ||||||
| Version:        0.0.14 | Version:        0.0.16 | ||||||
| Release:        0.0.14 | Release:        0.0.16 | ||||||
| Summary:        A kubernetes based daemonset that exposes a subset of the FRR API in a kubernetes compliant manner. | Summary:        A kubernetes based daemonset that exposes a subset of the FRR API in a kubernetes compliant manner. | ||||||
| License:        Apache-2.0 | License:        Apache-2.0 | ||||||
| URL:            https://github.com/metallb/frr-k8s | URL:            https://github.com/metallb/frr-k8s | ||||||
| Source:         frr-k8s-%{version}.tar.gz | Source:         frr-k8s-%{version}.tar | ||||||
| Source1:        vendor.tar.gz | Source1:        vendor.tar.gz | ||||||
| BuildRequires:  golang(API) = 1.22 | BuildRequires:  golang(API) = 1.22 | ||||||
| ExcludeArch:    s390 | ExcludeArch:    s390 | ||||||
|   | |||||||
| @@ -4,17 +4,24 @@ | |||||||
|     <param name="versionformat">@PARENT_TAG@</param> |     <param name="versionformat">@PARENT_TAG@</param> | ||||||
|     <param name="scm">git</param> |     <param name="scm">git</param> | ||||||
|     <param name="exclude">.get</param> |     <param name="exclude">.get</param> | ||||||
|     <param name="revision">v1.0.7</param> |     <param name="revision">v1.2.1</param> | ||||||
|     <param name="versionrewrite-pattern">v(.*)</param> |     <param name="versionrewrite-pattern">v(.*)</param> | ||||||
|     <param name="changesgenerate">enable</param> |     <param name="changesgenerate">enable</param> | ||||||
|   </service> |   </service> | ||||||
|   <service mode="buildtime" name="tar" /> |   <service mode="buildtime" name="tar"> | ||||||
|   <service mode="buildtime" name="recompress"> |     <param name="obsinfo">hauler.obsinfo</param> | ||||||
|     <param name="file">*.tar</param> |  | ||||||
|     <param name="compression">gz</param> |  | ||||||
|   </service> |   </service> | ||||||
|   <service mode="buildtime" name="set_version" /> |   <service mode="buildtime" name="set_version" /> | ||||||
|   <service name="go_modules"> |   <service name="go_modules"> | ||||||
|      <param name="compression">gz</param> |      <param name="compression">gz</param> | ||||||
|   </service> |   </service> | ||||||
|  |   <service mode="buildtime" name="replace_using_env"> | ||||||
|  |     <param name="file">hauler.spec</param> | ||||||
|  |     <param name="var">SOURCE_COMMIT</param> | ||||||
|  |     <param name="eval"> | ||||||
|  |       SOURCE_COMMIT=$(grep commit hauler.obsinfo | cut -d" " -f2) | ||||||
|  |     </param> | ||||||
|  |     <param name="verbose">1</param> | ||||||
|  |   </service> | ||||||
|  |   <service mode="buildtime" name="set_version" /> | ||||||
| </services> | </services> | ||||||
|   | |||||||
| @@ -18,15 +18,14 @@ | |||||||
| %define project github.com/hauler-dev/hauler | %define project github.com/hauler-dev/hauler | ||||||
|  |  | ||||||
| Name:           hauler | Name:           hauler | ||||||
| Version:        1.0.7 | Version:        1.2.1 | ||||||
| Release:        0 | Release:        0 | ||||||
| Summary:        Airgap Swiss Army Knife | Summary:        Airgap Swiss Army Knife | ||||||
| License:        Apache-2.0 | License:        Apache-2.0 | ||||||
| URL:            https://github.com/hauler-dev/hauler | URL:            https://github.com/hauler-dev/hauler | ||||||
| Source:         hauler-%{version}.tar.gz | Source:         hauler-%{version}.tar | ||||||
| Source1:        vendor.tar.gz | Source1:        vendor.tar.gz | ||||||
| BuildRequires:  golang-packaging | BuildRequires:  golang-packaging | ||||||
| BuildRequires:  cosign |  | ||||||
|  |  | ||||||
| %description | %description | ||||||
|  |  | ||||||
| @@ -38,10 +37,18 @@ BuildRequires:  cosign | |||||||
|  |  | ||||||
| tar -xf %{SOURCE1} | tar -xf %{SOURCE1} | ||||||
|  |  | ||||||
| mkdir cmd/hauler/binaries | MODULE=hauler.dev/go/hauler | ||||||
| cp `which cosign` cmd/hauler/binaries/cosign-linux-%{go_arch} | %define buildtime %(date +%%Y-%%m-%%dT%%H:%%M:%%S%%z) | ||||||
|  | %define buildcommit %%SOURCE_COMMIT%% | ||||||
|  |  | ||||||
| go build -mod=vendor -buildmode=pie -o hauler ./cmd/hauler |  | ||||||
|  | go build \ | ||||||
|  | -mod=vendor \ | ||||||
|  | -buildmode=pie \ | ||||||
|  | -o hauler \ | ||||||
|  | -ldflags \ | ||||||
|  | "-X $MODULE/internal/version.gitVersion=v%{version} -X $MODULE/internal/version.gitCommit=%{buildcommit} -X $MODULE/internal/version.buildDate=%{buildtime}" \ | ||||||
|  | ./cmd/hauler | ||||||
|  |  | ||||||
| %install | %install | ||||||
|  |  | ||||||
|   | |||||||
| @@ -1,23 +0,0 @@ | |||||||
| <services> |  | ||||||
|  <service name="obs_scm"> |  | ||||||
|     <param name="url">https://github.com/metal3-io/ip-address-manager</param> |  | ||||||
|     <param name="scm">git</param> |  | ||||||
|     <param name="revision">v1.7.2</param> |  | ||||||
|     <param name="version">_auto_</param> |  | ||||||
|     <param name="versionformat">@PARENT_TAG@</param> |  | ||||||
|     <param name="changesgenerate">enable</param> |  | ||||||
|     <param name="changesauthor">steven.hardy@suse.com</param> |  | ||||||
|     <param name="match-tag">v*</param> |  | ||||||
|     <param name="versionrewrite-pattern">v(\d+\.\d+\.\d+)</param> |  | ||||||
|     <param name="without-version">yes</param> |  | ||||||
|     <param name="versionrewrite-replacement">\1</param> |  | ||||||
|   </service> |  | ||||||
|   <service mode="buildtime" name="tar" /> |  | ||||||
|   <service mode="buildtime" name="recompress"> |  | ||||||
|     <param name="file">*.tar</param> |  | ||||||
|     <param name="compression">gz</param> |  | ||||||
|   </service> |  | ||||||
|    <service name="go_modules"> |  | ||||||
|   </service> |  | ||||||
|   <service mode="buildtime" name="set_version" /> |  | ||||||
| </services> |  | ||||||
| @@ -1,51 +0,0 @@ | |||||||
| # |  | ||||||
| # spec file for package ip-address-manager |  | ||||||
| # |  | ||||||
| # Copyright (c) 2023 SUSE LLC |  | ||||||
| # |  | ||||||
| # All modifications and additions to the file contributed by third parties |  | ||||||
| # remain the property of their copyright owners, unless otherwise agreed |  | ||||||
| # upon. The license for this file, and modifications and additions to the |  | ||||||
| # file, is the same license as for the pristine package itself (unless the |  | ||||||
| # license for the pristine package is not an Open Source License, in which |  | ||||||
| # case the license is the MIT License). An "Open Source License" is a |  | ||||||
| # license that conforms to the Open Source Definition (Version 1.9) |  | ||||||
| # published by the Open Source Initiative. |  | ||||||
|  |  | ||||||
| # Please submit bugfixes or comments via https://bugs.opensuse.org/ |  | ||||||
| # |  | ||||||
|  |  | ||||||
|  |  | ||||||
| Name:           ip-address-manager |  | ||||||
| Version:        1.7.2 |  | ||||||
| Release:        0 |  | ||||||
| Summary:        Metal3 IPAM controller |  | ||||||
| License:        Apache-2.0 |  | ||||||
| URL:            https://github.com/metal3-io/ip-address-manager |  | ||||||
| Source:         ip-address-manager-%{version}.tar.gz |  | ||||||
| Source1:        vendor.tar.gz |  | ||||||
| BuildRequires:  golang(API) = 1.22 |  | ||||||
| ExcludeArch:    s390 |  | ||||||
| ExcludeArch:    %{ix86} |  | ||||||
|  |  | ||||||
| %description |  | ||||||
|  |  | ||||||
| Metal3 IPAM controller |  | ||||||
|  |  | ||||||
| %prep |  | ||||||
| %autosetup -a1 -n ip-address-manager-%{version} |  | ||||||
|  |  | ||||||
| %build |  | ||||||
| go build \ |  | ||||||
|    -mod=vendor \ |  | ||||||
|    -buildmode=pie \ |  | ||||||
|  |  | ||||||
| %install |  | ||||||
| install -D -m0755 ip-address-manager %{buildroot}%{_bindir}/ip-address-manager |  | ||||||
|  |  | ||||||
| %files |  | ||||||
| %license LICENSE |  | ||||||
| %doc README.md |  | ||||||
| %{_bindir}/ip-address-manager |  | ||||||
|  |  | ||||||
| %changelog |  | ||||||
| @@ -1,6 +1,6 @@ | |||||||
| # SPDX-License-Identifier: Apache-2.0 | # SPDX-License-Identifier: Apache-2.0 | ||||||
| #!BuildTag: %%IMG_PREFIX%%ironic:26.1.2.0 | #!BuildTag: %%IMG_PREFIX%%ironic:26.1.2.4 | ||||||
| #!BuildTag: %%IMG_PREFIX%%ironic:26.1.2.0-%RELEASE% | #!BuildTag: %%IMG_PREFIX%%ironic:26.1.2.4-%RELEASE% | ||||||
| #!BuildVersion: 15.6 | #!BuildVersion: 15.6 | ||||||
|  |  | ||||||
| ARG SLE_VERSION | ARG SLE_VERSION | ||||||
| @@ -8,7 +8,8 @@ FROM registry.suse.com/bci/bci-micro:$SLE_VERSION AS micro | |||||||
|  |  | ||||||
| FROM registry.suse.com/bci/bci-base:$SLE_VERSION AS base | FROM registry.suse.com/bci/bci-base:$SLE_VERSION AS base | ||||||
|  |  | ||||||
| RUN set -euo pipefail; zypper -n  in --no-recommends gcc git make xz-devel shim dosfstools mtools glibc-extra grub2-x86_64-efi grub2; zypper -n clean; rm -rf /var/log/* | RUN zypper -n in --no-recommends shim-x86_64 shim-aarch64 grub2-x86_64-efi grub2-arm64-efi dosfstools mtools | ||||||
|  |  | ||||||
| WORKDIR /tmp | WORKDIR /tmp | ||||||
| COPY prepare-efi.sh /bin/ | COPY prepare-efi.sh /bin/ | ||||||
| RUN set -euo pipefail; chmod +x /bin/prepare-efi.sh | RUN set -euo pipefail; chmod +x /bin/prepare-efi.sh | ||||||
| @@ -16,8 +17,16 @@ RUN /bin/prepare-efi.sh | |||||||
|  |  | ||||||
| COPY --from=micro / /installroot/ | COPY --from=micro / /installroot/ | ||||||
| RUN sed -i -e 's%^# rpm.install.excludedocs = no.*%rpm.install.excludedocs = yes%g' /etc/zypp/zypp.conf | RUN sed -i -e 's%^# rpm.install.excludedocs = no.*%rpm.install.excludedocs = yes%g' /etc/zypp/zypp.conf | ||||||
| RUN zypper --installroot /installroot --non-interactive install --no-recommends python311-devel python311 python311-pip python-dracclient python311-sushy-oem-idrac python311-proliantutils python311-sushy python3-ironicclient git curl sles-release tar gzip vim gawk dnsmasq dosfstools apache2 inotify-tools ipcalc ipmitool iproute2 procps qemu-tools sqlite3 util-linux xorriso tftp syslinux ipxe-bootimgs crudini openstack-ironic |  | ||||||
|  |  | ||||||
|  | #!ArchExclusiveLine: x86_64 | ||||||
|  | RUN if [ "$(uname -m)" = "x86_64" ];then \ | ||||||
|  |       zypper --installroot /installroot --non-interactive install --no-recommends syslinux python311-devel python311 python311-pip python-dracclient python311-sushy-oem-idrac python311-proliantutils python311-sushy python3-ironicclient git curl sles-release tar gzip vim gawk dnsmasq dosfstools apache2 apache2-mod_wsgi inotify-tools ipcalc ipmitool iproute2 procps qemu-tools sqlite3 util-linux xorriso tftp ipxe-bootimgs python311-sushy-tools crudini openstack-ironic openstack-ironic-inspector-api; \ | ||||||
|  |     fi | ||||||
|  | #!ArchExclusiveLine: aarch64 | ||||||
|  | RUN if [ "$(uname -m)" = "aarch64" ];then \ | ||||||
|  |       zypper --installroot /installroot --non-interactive install --no-recommends python311-devel python311 python311-pip python-dracclient python311-sushy-oem-idrac python311-proliantutils python311-sushy python3-ironicclient git curl sles-release tar gzip vim gawk dnsmasq dosfstools apache2 apache2-mod_wsgi inotify-tools ipcalc ipmitool iproute2 procps qemu-tools sqlite3 util-linux xorriso tftp ipxe-bootimgs python311-sushy-tools crudini openstack-ironic openstack-ironic-inspector-api; \ | ||||||
|  |     fi | ||||||
|  |      | ||||||
| # DATABASE | # DATABASE | ||||||
| RUN mkdir -p /installroot/var/lib/ironic && \ | RUN mkdir -p /installroot/var/lib/ironic && \ | ||||||
|   /installroot/usr/bin/sqlite3 /installroot/var/lib/ironic/ironic.sqlite "pragma journal_mode=wal" && \ |   /installroot/usr/bin/sqlite3 /installroot/var/lib/ironic/ironic.sqlite "pragma journal_mode=wal" && \ | ||||||
| @@ -31,8 +40,8 @@ LABEL org.opencontainers.image.description="Openstack Ironic based on the SLE Ba | |||||||
| LABEL org.opencontainers.image.url="https://www.suse.com/products/server/" | LABEL org.opencontainers.image.url="https://www.suse.com/products/server/" | ||||||
| LABEL org.opencontainers.image.created="%BUILDTIME%" | LABEL org.opencontainers.image.created="%BUILDTIME%" | ||||||
| LABEL org.opencontainers.image.vendor="SUSE LLC" | LABEL org.opencontainers.image.vendor="SUSE LLC" | ||||||
| LABEL org.opencontainers.image.version="26.1.2.0" | LABEL org.opencontainers.image.version="26.1.2.4" | ||||||
| LABEL org.opensuse.reference="%%IMG_REPO%%/%%IMG_PREFIX%%ironic:26.1.2.0-%RELEASE%" | LABEL org.opensuse.reference="%%IMG_REPO%%/%%IMG_PREFIX%%ironic:26.1.2.4-%RELEASE%" | ||||||
| LABEL org.openbuildservice.disturl="%DISTURL%" | LABEL org.openbuildservice.disturl="%DISTURL%" | ||||||
| LABEL com.suse.supportlevel="%%SUPPORT_LEVEL%%" | LABEL com.suse.supportlevel="%%SUPPORT_LEVEL%%" | ||||||
| LABEL com.suse.eula="SUSE Combined EULA February 2024" | LABEL com.suse.eula="SUSE Combined EULA February 2024" | ||||||
| @@ -64,8 +73,17 @@ RUN mkdir -p $GRUB_DIR | |||||||
|  |  | ||||||
| # IRONIC # | # IRONIC # | ||||||
| RUN cp /usr/share/ipxe/undionly.kpxe /tftpboot/undionly.kpxe | RUN cp /usr/share/ipxe/undionly.kpxe /tftpboot/undionly.kpxe | ||||||
| RUN cp /usr/share/ipxe/ipxe-x86_64.efi /tftpboot/ipxe.efi | #!ArchExclusiveLine: x86_64 | ||||||
| COPY --from=base /tmp/esp.img /tmp/uefi_esp.img | RUN if [ "$(uname -m)" = "x86_64" ];then \ | ||||||
|  |       cp /usr/share/ipxe/ipxe-x86_64.efi /tftpboot/ipxe.efi ;\ | ||||||
|  |     fi | ||||||
|  | #!ArchExclusiveLine: x86_64 | ||||||
|  | RUN if [ "$(uname -m)" = "aarch64" ]; then\  | ||||||
|  |      cp /usr/share/ipxe/snp-arm64.efi /tftpboot/ipxe.efi; cp /usr/share/ipxe/snp-arm64.efi /tftpboot/snp-arm64.efi; cp /usr/share/ipxe/snp-arm64.efi /tftpboot/snp.efi ;\ | ||||||
|  |     fi | ||||||
|  |      | ||||||
|  | COPY --from=base /tmp/esp-x86_64.img /tmp/uefi_esp-x86_64.img | ||||||
|  | COPY --from=base /tmp/esp-aarch64.img /tmp/uefi_esp-arm64.img | ||||||
|  |  | ||||||
| COPY ironic.conf.j2 /etc/ironic/ | COPY ironic.conf.j2 /etc/ironic/ | ||||||
| COPY inspector.ipxe.j2 httpd-ironic-api.conf.j2 ipxe_config.template /tmp/ | COPY inspector.ipxe.j2 httpd-ironic-api.conf.j2 ipxe_config.template /tmp/ | ||||||
|   | |||||||
| @@ -10,17 +10,15 @@ Listen {{ env.VMEDIA_TLS_PORT }} | |||||||
|     SSLCertificateFile {{ env.IRONIC_VMEDIA_CERT_FILE }} |     SSLCertificateFile {{ env.IRONIC_VMEDIA_CERT_FILE }} | ||||||
|     SSLCertificateKeyFile {{ env.IRONIC_VMEDIA_KEY_FILE }} |     SSLCertificateKeyFile {{ env.IRONIC_VMEDIA_KEY_FILE }} | ||||||
|  |  | ||||||
|     <Directory ~ "/shared/html"> |     <Directory "/shared"> | ||||||
|          Order deny,allow |         AllowOverride None | ||||||
|          deny from all |         Require all granted | ||||||
|     </Directory> |     </Directory> | ||||||
|     <Directory ~ "/shared/html/(redfish|ilo)/"> |  | ||||||
|          Order allow,deny |     <Directory "/shared/html"> | ||||||
|          allow from all |         Options Indexes FollowSymLinks | ||||||
|     </Directory> |         AllowOverride None | ||||||
|     <Directory ~ "/shared/html/images/"> |         Require all granted | ||||||
|          Order allow,deny |  | ||||||
|          allow from all |  | ||||||
|     </Directory> |     </Directory> | ||||||
| </VirtualHost> | </VirtualHost> | ||||||
|  |  | ||||||
|   | |||||||
| @@ -68,7 +68,7 @@ if [[ -n "$IRONIC_EXTERNAL_IP" ]]; then | |||||||
|     fi |     fi | ||||||
| fi | fi | ||||||
|  |  | ||||||
| IMAGE_CACHE_PREFIX=/shared/html/images/ironic-python-agent | IMAGE_CACHE_PREFIX="/shared/html/images/ironic-python-agent-${DEPLOY_ARCHITECTURE}" | ||||||
| if [[ -f "${IMAGE_CACHE_PREFIX}.kernel" ]] && [[ -f "${IMAGE_CACHE_PREFIX}.initramfs" ]]; then | if [[ -f "${IMAGE_CACHE_PREFIX}.kernel" ]] && [[ -f "${IMAGE_CACHE_PREFIX}.initramfs" ]]; then | ||||||
|     export IRONIC_DEFAULT_KERNEL="${IMAGE_CACHE_PREFIX}.kernel" |     export IRONIC_DEFAULT_KERNEL="${IMAGE_CACHE_PREFIX}.kernel" | ||||||
|     export IRONIC_DEFAULT_RAMDISK="${IMAGE_CACHE_PREFIX}.initramfs" |     export IRONIC_DEFAULT_RAMDISK="${IMAGE_CACHE_PREFIX}.initramfs" | ||||||
|   | |||||||
| @@ -5,6 +5,6 @@ echo In inspector.ipxe | |||||||
| imgfree | imgfree | ||||||
| # NOTE(dtantsur): keep inspection kernel params in [mdns]params in | # NOTE(dtantsur): keep inspection kernel params in [mdns]params in | ||||||
| # ironic-inspector-image and configuration in configure-ironic.sh | # ironic-inspector-image and configuration in configure-ironic.sh | ||||||
| kernel --timeout 60000 http://{{ env.IRONIC_URL_HOST }}:{{ env.HTTP_PORT }}/images/ironic-python-agent.kernel ipa-insecure=1 ipa-inspection-collectors={{ env.IRONIC_IPA_COLLECTORS }} systemd.journald.forward_to_console=yes BOOTIF=${mac} ipa-debug=1 ipa-enable-vlan-interfaces={{ env.IRONIC_ENABLE_VLAN_INTERFACES }} ipa-inspection-dhcp-all-interfaces=1 ipa-collect-lldp=1 {{ env.INSPECTOR_EXTRA_ARGS }} initrd=ironic-python-agent.initramfs {% if env.IRONIC_RAMDISK_SSH_KEY %}sshkey="{{ env.IRONIC_RAMDISK_SSH_KEY|trim }}"{% endif %} {{ env.IRONIC_KERNEL_PARAMS|trim }} || goto retry_boot | kernel --timeout 60000 http://{{ env.IRONIC_URL_HOST }}:{{ env.HTTP_PORT }}/images/ironic-python-agent-${buildarch}.kernel ipa-insecure=1 ipa-inspection-collectors={{ env.IRONIC_IPA_COLLECTORS }} systemd.journald.forward_to_console=yes BOOTIF=${mac} ipa-debug=1 ipa-enable-vlan-interfaces={{ env.IRONIC_ENABLE_VLAN_INTERFACES }} ipa-inspection-dhcp-all-interfaces=1 ipa-collect-lldp=1 {{ env.INSPECTOR_EXTRA_ARGS }} initrd=ironic-python-agent.initramfs {% if env.IRONIC_RAMDISK_SSH_KEY %}sshkey="{{ env.IRONIC_RAMDISK_SSH_KEY|trim }}"{% endif %} {{ env.IRONIC_KERNEL_PARAMS|trim }} || goto retry_boot | ||||||
| initrd --timeout 60000 http://{{ env.IRONIC_URL_HOST }}:{{ env.HTTP_PORT }}/images/ironic-python-agent.initramfs || goto retry_boot | initrd --timeout 60000 http://{{ env.IRONIC_URL_HOST }}:{{ env.HTTP_PORT }}/images/ironic-python-agent-${buildarch}.initramfs || goto retry_boot | ||||||
| boot | boot | ||||||
|   | |||||||
| @@ -83,7 +83,7 @@ send_sensor_data = {{ env.SEND_SENSOR_DATA }} | |||||||
| # Power state is checked every 60 seconds and BMC activity should | # Power state is checked every 60 seconds and BMC activity should | ||||||
| # be avoided more often than once every sixty seconds. | # be avoided more often than once every sixty seconds. | ||||||
| send_sensor_data_interval = 160 | send_sensor_data_interval = 160 | ||||||
| bootloader = http://{{ env.IRONIC_URL_HOST }}:{{ env.HTTP_PORT }}/uefi_esp.img | bootloader = {{ env.IRONIC_BOOT_BASE_URL }}/uefi_esp-{{ env.DEPLOY_ARCHITECTURE }}.img | ||||||
| verify_step_priority_override = management.clear_job_queue:90 | verify_step_priority_override = management.clear_job_queue:90 | ||||||
| # We don't use this feature, and it creates an additional load on the database | # We don't use this feature, and it creates an additional load on the database | ||||||
| node_history = False | node_history = False | ||||||
| @@ -112,7 +112,7 @@ default_boot_option = local | |||||||
| erase_devices_metadata_priority = 10 | erase_devices_metadata_priority = 10 | ||||||
| erase_devices_priority = 0 | erase_devices_priority = 0 | ||||||
| http_root = /shared/html/ | http_root = /shared/html/ | ||||||
| http_url = http://{{ env.IRONIC_URL_HOST }}:{{ env.HTTP_PORT }} | http_url = {{ env.IRONIC_BOOT_BASE_URL }} | ||||||
| fast_track = {{ env.IRONIC_FAST_TRACK }} | fast_track = {{ env.IRONIC_FAST_TRACK }} | ||||||
| {% if env.IRONIC_BOOT_ISO_SOURCE %} | {% if env.IRONIC_BOOT_ISO_SOURCE %} | ||||||
| ramdisk_image_download_source = {{ env.IRONIC_BOOT_ISO_SOURCE }} | ramdisk_image_download_source = {{ env.IRONIC_BOOT_ISO_SOURCE }} | ||||||
|   | |||||||
| @@ -2,26 +2,26 @@ | |||||||
|  |  | ||||||
| set -euxo pipefail | set -euxo pipefail | ||||||
|  |  | ||||||
| ARCH=$(uname -m) | declare -A efi_arch=( | ||||||
| DEST=${2:-/tmp/esp.img} |   ["x86_64"]="X64" | ||||||
| OS=${1:-sles} |   ["aarch64"]="AA64" | ||||||
|  |   ) | ||||||
|  |  | ||||||
| BOOTEFI=BOOTX64.efi | for arch in "${!efi_arch[@]}"; do | ||||||
| GRUBEFI=grubx64.efi |    | ||||||
|  |   DEST=/tmp/esp-${arch}.img | ||||||
|  |  | ||||||
| dd bs=1024 count=6400 if=/dev/zero of=$DEST |   dd bs=1024 count=6400 if=/dev/zero of=$DEST | ||||||
| mkfs.msdos -F 12 -n 'ESP_IMAGE' $DEST |   mkfs.msdos -F 12 -n 'ESP_IMAGE' $DEST | ||||||
|  |  | ||||||
|  |   mmd -i $DEST EFI | ||||||
|  |   mmd -i $DEST EFI/BOOT | ||||||
|  |  | ||||||
|  |   mcopy -i $DEST -v /usr/share/efi/${arch}/shim.efi ::EFI/BOOT/BOOT${efi_arch[$arch]}.EFI | ||||||
|  |   mcopy -i $DEST -v /usr/share/efi/${arch}/grub.efi ::EFI/BOOT/GRUB.EFI | ||||||
|  |  | ||||||
|  |   mdir -i $DEST ::EFI/BOOT; | ||||||
|  | done | ||||||
|  |  | ||||||
| mkdir -p /boot/efi/EFI/BOOT |  | ||||||
| cp -L /usr/lib64/efi/shim.efi /boot/efi/EFI/BOOT/$BOOTEFI |  | ||||||
| mkdir -p /boot/efi/EFI/$OS |  | ||||||
| #cp /usr/share/grub2/x86_64-efi/grub.efi /boot/efi/EFI/$OS/$GRUBEFI |  | ||||||
| cp /usr/share/grub2/x86_64-efi/grub.efi /boot/efi/EFI/$OS/grub.efi |  | ||||||
|  |  | ||||||
| mmd -i $DEST EFI |  | ||||||
| mmd -i $DEST EFI/BOOT |  | ||||||
| mcopy -i $DEST -v /boot/efi/EFI/BOOT/$BOOTEFI ::EFI/BOOT |  | ||||||
| #mcopy -i $DEST -v /boot/efi/EFI/$OS/$GRUBEFI ::EFI/BOOT |  | ||||||
| mcopy -i $DEST -v /boot/efi/EFI/$OS/grub.efi ::EFI/BOOT |  | ||||||
| mdir -i $DEST ::EFI/BOOT; |  | ||||||
|  |  | ||||||
|   | |||||||
| @@ -39,7 +39,7 @@ export INSPECTOR_EXTRA_ARGS | |||||||
|  |  | ||||||
| # Copy files to shared mount | # Copy files to shared mount | ||||||
| render_j2_config /tmp/inspector.ipxe.j2 /shared/html/inspector.ipxe | render_j2_config /tmp/inspector.ipxe.j2 /shared/html/inspector.ipxe | ||||||
| cp /tmp/uefi_esp.img /shared/html/uefi_esp.img | cp /tmp/uefi_esp*.img /shared/html/ | ||||||
|  |  | ||||||
| # Render the core httpd config | # Render the core httpd config | ||||||
| render_j2_config /etc/httpd/conf/httpd.conf.j2 /etc/httpd/conf/httpd.conf | render_j2_config /etc/httpd/conf/httpd.conf.j2 /etc/httpd/conf/httpd.conf | ||||||
|   | |||||||
| @@ -3,6 +3,14 @@ | |||||||
| # Ramdisk logs path | # Ramdisk logs path | ||||||
| LOG_DIR="/shared/log/ironic/deploy" | LOG_DIR="/shared/log/ironic/deploy" | ||||||
|  |  | ||||||
|  | # The ironic container creates the directory, wait for | ||||||
|  | # it to exist before running inotifywait or it can fail causing | ||||||
|  | # a spurious restart | ||||||
|  | while [ ! -d "${LOG_DIR}" ]; do | ||||||
|  |   echo "Waiting for ${LOG_DIR}" | ||||||
|  |   sleep 5 | ||||||
|  | done | ||||||
|  |  | ||||||
| inotifywait -m "${LOG_DIR}" -e close_write | | inotifywait -m "${LOG_DIR}" -e close_write | | ||||||
|     while read -r path _action file; do |     while read -r path _action file; do | ||||||
|         echo "************ Contents of ${path}/${file} ramdisk log file bundle **************" |         echo "************ Contents of ${path}/${file} ramdisk log file bundle **************" | ||||||
|   | |||||||
| @@ -1,6 +1,6 @@ | |||||||
| # SPDX-License-Identifier: Apache-2.0 | # SPDX-License-Identifier: Apache-2.0 | ||||||
| #!BuildTag: %%IMG_PREFIX%%ironic-ipa-downloader:3.0.0 | #!BuildTag: %%IMG_PREFIX%%ironic-ipa-downloader:3.0.3 | ||||||
| #!BuildTag: %%IMG_PREFIX%%ironic-ipa-downloader:3.0.0-%RELEASE% | #!BuildTag: %%IMG_PREFIX%%ironic-ipa-downloader:3.0.3-%RELEASE% | ||||||
| #!BuildVersion: 15.6 | #!BuildVersion: 15.6 | ||||||
| ARG SLE_VERSION | ARG SLE_VERSION | ||||||
| FROM registry.suse.com/bci/bci-micro:$SLE_VERSION AS micro | FROM registry.suse.com/bci/bci-micro:$SLE_VERSION AS micro | ||||||
| @@ -8,8 +8,8 @@ FROM registry.suse.com/bci/bci-micro:$SLE_VERSION AS micro | |||||||
| FROM registry.suse.com/bci/bci-base:$SLE_VERSION AS base | FROM registry.suse.com/bci/bci-base:$SLE_VERSION AS base | ||||||
| COPY --from=micro / /installroot/ | COPY --from=micro / /installroot/ | ||||||
| RUN sed -i -e 's%^# rpm.install.excludedocs = no.*%rpm.install.excludedocs = yes%g' /etc/zypp/zypp.conf | RUN sed -i -e 's%^# rpm.install.excludedocs = no.*%rpm.install.excludedocs = yes%g' /etc/zypp/zypp.conf | ||||||
| RUN zypper --installroot /installroot --non-interactive install --no-recommends ironic-ipa-ramdisk-x86_64 python311-devel python311 python311-pip tar gawk git curl xz fakeroot shadow sed cpio; zypper -n clean; rm -rf /var/log/* | RUN zypper --installroot /installroot --non-interactive install --no-recommends ironic-ipa-ramdisk-x86_64 ironic-ipa-ramdisk-aarch64 tar gawk curl xz zstd shadow cpio findutils | ||||||
| #RUN zypper --installroot /installroot --non-interactive install --no-recommends sles-release; |  | ||||||
| RUN cp /usr/bin/getopt /installroot/ | RUN cp /usr/bin/getopt /installroot/ | ||||||
|  |  | ||||||
| FROM micro AS final | FROM micro AS final | ||||||
| @@ -19,11 +19,11 @@ FROM micro AS final | |||||||
| LABEL org.opencontainers.image.authors="SUSE LLC (https://www.suse.com/)" | LABEL org.opencontainers.image.authors="SUSE LLC (https://www.suse.com/)" | ||||||
| LABEL org.opencontainers.image.title="SLE Based Ironic IPA Downloader Container Image" | LABEL org.opencontainers.image.title="SLE Based Ironic IPA Downloader Container Image" | ||||||
| LABEL org.opencontainers.image.description="ironic-ipa-downloader based on the SLE Base Container Image." | LABEL org.opencontainers.image.description="ironic-ipa-downloader based on the SLE Base Container Image." | ||||||
| LABEL org.opencontainers.image.version="3.0.0" | LABEL org.opencontainers.image.version="3.0.3" | ||||||
| LABEL org.opencontainers.image.url="https://www.suse.com/solutions/edge-computing/" | LABEL org.opencontainers.image.url="https://www.suse.com/solutions/edge-computing/" | ||||||
| LABEL org.opencontainers.image.created="%BUILDTIME%" | LABEL org.opencontainers.image.created="%BUILDTIME%" | ||||||
| LABEL org.opencontainers.image.vendor="SUSE LLC" | LABEL org.opencontainers.image.vendor="SUSE LLC" | ||||||
| LABEL org.opensuse.reference="%%IMG_REPO%%/%%IMG_PREFIX%%ironic-ipa-downloader:3.0.0-%RELEASE%" | LABEL org.opensuse.reference="%%IMG_REPO%%/%%IMG_PREFIX%%ironic-ipa-downloader:3.0.3-%RELEASE%" | ||||||
| LABEL org.openbuildservice.disturl="%DISTURL%" | LABEL org.openbuildservice.disturl="%DISTURL%" | ||||||
| LABEL com.suse.supportlevel="%%SUPPORT_LEVEL%%" | LABEL com.suse.supportlevel="%%SUPPORT_LEVEL%%" | ||||||
| LABEL com.suse.eula="SUSE Combined EULA February 2024" | LABEL com.suse.eula="SUSE Combined EULA February 2024" | ||||||
| @@ -34,8 +34,9 @@ LABEL com.suse.release-stage="released" | |||||||
|  |  | ||||||
| COPY --from=base /installroot / | COPY --from=base /installroot / | ||||||
| RUN cp /getopt /usr/bin/ | RUN cp /getopt /usr/bin/ | ||||||
| RUN cp /srv/tftpboot/openstack-ironic-image/initrd.xz /tmp | RUN cp /srv/tftpboot/openstack-ironic-image/initrd*.zst /tmp | ||||||
| RUN cp /srv/tftpboot/openstack-ironic-image/openstack-ironic-image*.kernel /tmp | RUN cp /srv/tftpboot/openstack-ironic-image/openstack-ironic-image*.kernel /tmp | ||||||
|  | RUN sha256sum /srv/tftpboot/openstack-ironic-image/initrd*.zst /srv/tftpboot/openstack-ironic-image/openstack-ironic-image*.kernel > /tmp/images.sha256 | ||||||
| # configure non-root user | # configure non-root user | ||||||
| COPY configure-nonroot.sh /bin/ | COPY configure-nonroot.sh /bin/ | ||||||
| RUN set -euo pipefail; chmod +x /bin/configure-nonroot.sh | RUN set -euo pipefail; chmod +x /bin/configure-nonroot.sh | ||||||
|   | |||||||
| @@ -1,12 +1,6 @@ | |||||||
| <services> | <services> | ||||||
|   <service mode="buildtime" name="kiwi_metainfo_helper"/> |   <service mode="buildtime" name="kiwi_metainfo_helper"/> | ||||||
|   <service mode="buildtime" name="docker_label_helper"/> |   <service mode="buildtime" name="docker_label_helper"/> | ||||||
|   <service name="replace_using_package_version" mode="buildtime"> |  | ||||||
|     <param name="file">Dockerfile</param> |  | ||||||
|     <param name="regex">%%ironic-ipa-ramdisk-x86_64_version%%</param> |  | ||||||
|     <param name="package">ironic-ipa-ramdisk-x86_64</param> |  | ||||||
|     <param name="parse-version">patch</param> |  | ||||||
|   </service> |  | ||||||
|   <service name="replace_using_env" mode="buildtime"> |   <service name="replace_using_env" mode="buildtime"> | ||||||
|     <param name="file">Dockerfile</param> |     <param name="file">Dockerfile</param> | ||||||
|     <param name="eval">IMG_PREFIX=$(rpm --macros=/root/.rpmmacros -E %{?img_prefix})</param> |     <param name="eval">IMG_PREFIX=$(rpm --macros=/root/.rpmmacros -E %{?img_prefix})</param> | ||||||
|   | |||||||
| @@ -6,12 +6,33 @@ export http_proxy=${http_proxy:-$HTTP_PROXY} | |||||||
| export https_proxy=${https_proxy:-$HTTPS_PROXY} | export https_proxy=${https_proxy:-$HTTPS_PROXY} | ||||||
| export no_proxy=${no_proxy:-$NO_PROXY} | export no_proxy=${no_proxy:-$NO_PROXY} | ||||||
|  |  | ||||||
|  | if [ -d "/tmp/ironic-certificates" ]; then | ||||||
|  |   sha256sum /tmp/ironic-certificates/* > /tmp/certificates.sha256 | ||||||
|  |   if cmp "/shared/certificates.sha256" "/tmp/certificates.sha256"; then | ||||||
|  |     CERTS_CHANGED=0 | ||||||
|  |   else | ||||||
|  |     CERTS_CHANGED=1 | ||||||
|  |   fi | ||||||
|  | fi | ||||||
|  |  | ||||||
| # Which image should we use | # Which image should we use | ||||||
| if [ -z "${IPA_BASEURI}" ]; then | if [ -z "${IPA_BASEURI}" ]; then | ||||||
|   # SLES BASED IPA - openstack-ironic-image-x86_64 package |   if cmp "/shared/images.sha256" "/tmp/images.sha256"; then | ||||||
|  |     if [ "${CERTS_CHANGED:-0}" = "0" ]; then | ||||||
|  |       # everything is the same exit early | ||||||
|  |       exit 0 | ||||||
|  |     fi | ||||||
|  |   fi | ||||||
|  |   IMAGE_CHANGED=1 | ||||||
|  |   # SLES BASED IPA - ironic-ipa-ramdisk-x86_64 and ironic-ipa-ramdisk-aarch64 packages | ||||||
|   mkdir -p /shared/html/images |   mkdir -p /shared/html/images | ||||||
|   cp /tmp/initrd.xz /shared/html/images/ironic-python-agent.initramfs |   cp /tmp/initrd-x86_64.zst /shared/html/images/ironic-python-agent-x86_64.initramfs | ||||||
|   cp /tmp/openstack-ironic-image*.x86_64*.kernel /shared/html/images/ironic-python-agent.kernel |   cp /tmp/openstack-ironic-image.x86_64*.kernel /shared/html/images/ironic-python-agent-x86_64.kernel | ||||||
|  |   # Use arm64 as destination for iPXE compatibility | ||||||
|  |   cp /tmp/initrd-aarch64.zst /shared/html/images/ironic-python-agent-arm64.initramfs | ||||||
|  |   cp /tmp/openstack-ironic-image.aarch64*.kernel /shared/html/images/ironic-python-agent-arm64.kernel | ||||||
|  |  | ||||||
|  |   cp /tmp/images.sha256 /shared/images.sha256 | ||||||
| else | else | ||||||
|   FILENAME=ironic-python-agent |   FILENAME=ironic-python-agent | ||||||
|   FILENAME_EXT=.tar |   FILENAME_EXT=.tar | ||||||
| @@ -25,47 +46,56 @@ else | |||||||
|   # If we have a CACHEURL and nothing has yet been downloaded |   # If we have a CACHEURL and nothing has yet been downloaded | ||||||
|   # get header info from the cache |   # get header info from the cache | ||||||
|   ls -l |   ls -l | ||||||
|   if [ -n "$CACHEURL" -a ! -e $FFILENAME.headers ] ; then |   if [ -n "$CACHEURL" ] && [ ! -e $FFILENAME.headers ] ; then | ||||||
|       curl -g --verbose --fail -O "$CACHEURL/$FFILENAME.headers" || true |       curl -g --verbose --fail -O "$CACHEURL/$FFILENAME.headers" || true | ||||||
|   fi |   fi | ||||||
|    |    | ||||||
|   # Download the most recent version of IPA |   # Download the most recent version of IPA | ||||||
|   if [ -e $FFILENAME.headers ] ; then |   if [ -e $FFILENAME.headers ] ; then | ||||||
|       ETAG=$(awk '/ETag:/ {print $2}' $FFILENAME.headers | tr -d "\r") |       ETAG=$(awk '/ETag:/ {print $2}' $FFILENAME.headers | tr -d "\r") | ||||||
|       cd $TMPDIR |       cd "$TMPDIR" | ||||||
|       curl -g --verbose --dump-header $FFILENAME.headers -O $IPA_BASEURI/$FFILENAME --header "If-None-Match: $ETAG" || cp /shared/html/images/$FFILENAME.headers . |       curl -g --verbose --dump-header $FFILENAME.headers -O "$IPA_BASEURI/$FFILENAME" --header "If-None-Match: $ETAG" || cp /shared/html/images/$FFILENAME.headers . | ||||||
|       # curl didn't download anything because we have the ETag already |       # curl didn't download anything because we have the ETag already | ||||||
|       # but we don't have it in the images directory |       # but we don't have it in the images directory | ||||||
|       # Its in the cache, go get it |       # Its in the cache, go get it | ||||||
|       ETAG=$(awk '/ETag:/ {print $2}' $FFILENAME.headers | tr -d "\"\r") |       ETAG=$(awk '/ETag:/ {print $2}' $FFILENAME.headers | tr -d "\"\r") | ||||||
|       if [ ! -s $FFILENAME -a ! -e /shared/html/images/$FILENAME-$ETAG/$FFILENAME ] ; then |       if [ ! -s $FFILENAME ] && [ ! -e "/shared/html/images/$FILENAME-$ETAG/$FFILENAME" ] ; then | ||||||
|           mv /shared/html/images/$FFILENAME.headers . |           mv /shared/html/images/$FFILENAME.headers . | ||||||
|           curl -g --verbose -O "$CACHEURL/$FILENAME-$ETAG/$FFILENAME" |           curl -g --verbose -O "$CACHEURL/$FILENAME-$ETAG/$FFILENAME" | ||||||
|       fi |       fi | ||||||
|   else |   else | ||||||
|       cd $TMPDIR |       cd "$TMPDIR" | ||||||
|       curl -g --verbose --dump-header $FFILENAME.headers -O $IPA_BASEURI/$FFILENAME |       curl -g --verbose --dump-header $FFILENAME.headers -O "$IPA_BASEURI/$FFILENAME" | ||||||
|   fi |   fi | ||||||
|    |    | ||||||
|   if [ -s $FFILENAME ] ; then |   if [ -s $FFILENAME ] ; then | ||||||
|       tar -xf $FFILENAME |       tar -xf $FFILENAME | ||||||
|    |       xz -d -c -k --fast $FILENAME.initramfs | zstd -c > $FILENAME.initramfs.zstd | ||||||
|  |       mv $FILENAME.initramfs.zstd $FILENAME.initramfs | ||||||
|  |       ARCH=$(file -b ${FILENAME}.kernel | cut -d ' ' -f 3) | ||||||
|  |       if [ "$ARCH" = "x86" ]; then | ||||||
|  |         ARCH="x86_64" | ||||||
|  |       fi | ||||||
|       ETAG=$(awk '/ETag:/ {print $2}' $FFILENAME.headers | tr -d "\"\r") |       ETAG=$(awk '/ETag:/ {print $2}' $FFILENAME.headers | tr -d "\"\r") | ||||||
|       cd - |       cd - | ||||||
|       chmod 755 $TMPDIR |       chmod 755 "$TMPDIR" | ||||||
|       mv $TMPDIR $FILENAME-$ETAG |       mv "$TMPDIR" "$FILENAME-$ETAG" | ||||||
|       ln -sf $FILENAME-$ETAG/$FFILENAME.headers $FFILENAME.headers |       ln -sf "$FILENAME-$ETAG/$FFILENAME.headers" "$FFILENAME.headers" | ||||||
|       ln -sf $FILENAME-$ETAG/$FILENAME.initramfs $FILENAME.initramfs |       ln -sf "$FILENAME-$ETAG/$FILENAME.initramfs" "$FILENAME-${ARCH,,}.initramfs" | ||||||
|       ln -sf $FILENAME-$ETAG/$FILENAME.kernel $FILENAME.kernel |       ln -sf "$FILENAME-$ETAG/$FILENAME.kernel" "$FILENAME-${ARCH,,}.kernel" | ||||||
|  |        | ||||||
|  |       IMAGE_CHANGED=1 | ||||||
|   else |   else | ||||||
|       rm -rf $TMPDIR |       rm -rf "$TMPDIR" | ||||||
|   fi |   fi | ||||||
| fi | fi | ||||||
|  |  | ||||||
| if [ -d "/tmp/ironic-certificates" ]; then | if [ "${CERTS_CHANGED:-0}" = "1" ] || [ "${IMAGE_CHANGED:-0}" = "1" ]; then | ||||||
|   mkdir -p /tmp/ca/tmp-initrd && cd /tmp/ca/tmp-initrd |   mkdir -p /tmp/ca/tmp-initrd && cd /tmp/ca/tmp-initrd | ||||||
|   xz -d -c -k --fast /shared/html/images/ironic-python-agent.initramfs | fakeroot -s ../initrd.fakeroot cpio -i |  | ||||||
|   mkdir -p etc/ironic-python-agent.d/ca-certs |   mkdir -p etc/ironic-python-agent.d/ca-certs | ||||||
|   cp /tmp/ironic-certificates/* etc/ironic-python-agent.d/ca-certs/ |   cp /tmp/ironic-certificates/* etc/ironic-python-agent.d/ca-certs/ | ||||||
|   find . | fakeroot -i ../initrd.fakeroot cpio -o -H newc | xz --check=crc32 --x86 --lzma2 --fast > /shared/html/images/ironic-python-agent.initramfs |   for initramfs in /shared/html/images/ironic-python-agent-*.initramfs; do | ||||||
| fi |     find . | cpio -o -H newc --reproducible | zstd -c >> "${initramfs}" | ||||||
|  |   done | ||||||
|  |   cp /tmp/certificates.sha256 /shared/certificates.sha256 | ||||||
|  | fi | ||||||
|   | |||||||
| @@ -1,5 +1,5 @@ | |||||||
| <?xml version="1.0" encoding="utf-8"?> | <?xml version="1.0" encoding="utf-8"?> | ||||||
| <image schemaversion="7.4" name="openstack-ironic-image-201"> | <image schemaversion="7.4" name="openstack-ironic-image"> | ||||||
|     <description type="system"> |     <description type="system"> | ||||||
|         <author>Cloud developers</author> |         <author>Cloud developers</author> | ||||||
|         <contact>cloud-devel@suse.de</contact> |         <contact>cloud-devel@suse.de</contact> | ||||||
| @@ -116,8 +116,9 @@ | |||||||
|         <package name="vim"/> |         <package name="vim"/> | ||||||
|         <package name="grub2"/> |         <package name="grub2"/> | ||||||
|         <package name="grub2-x86_64-efi" arch="x86_64"/> |         <package name="grub2-x86_64-efi" arch="x86_64"/> | ||||||
|         <package name="grub2-i386-pc"/> |         <package name="grub2-arm64-efi" arch="aarch64"/> | ||||||
|         <package name="syslinux"/> |         <package name="grub2-i386-pc" arch="x86_64"/> | ||||||
|  |         <package name="syslinux" arch="x86_64"/> | ||||||
|         <package name="lvm2"/> |         <package name="lvm2"/> | ||||||
|         <package name="plymouth"/> |         <package name="plymouth"/> | ||||||
|         <package name="fontconfig"/> |         <package name="fontconfig"/> | ||||||
| @@ -135,12 +136,10 @@ | |||||||
|         <package name="openstack-ironic-python-agent"/> |         <package name="openstack-ironic-python-agent"/> | ||||||
|         <package name="hdparm"/> |         <package name="hdparm"/> | ||||||
|         <package name="qemu-tools"/> |         <package name="qemu-tools"/> | ||||||
|         <package name="python311-proliantutils" arch="x86_64"/> |         <package name="python311-proliantutils"/> | ||||||
|         <package name="lshw"/> |         <package name="lshw"/> | ||||||
|         <package name="dmidecode" arch="aarch64"/> |         <package name="dmidecode"/> | ||||||
|         <package name="dmidecode" arch="x86_64"/> |         <package name="efibootmgr"/> | ||||||
|         <package name="efibootmgr" arch="aarch64" /> |  | ||||||
|         <package name="efibootmgr" arch="x86_64" /> |  | ||||||
|         <package name="gptfdisk"/> |         <package name="gptfdisk"/> | ||||||
|         <package name="open-iscsi"/> |         <package name="open-iscsi"/> | ||||||
|         <package name="hwinfo"/> |         <package name="hwinfo"/> | ||||||
| @@ -157,7 +156,6 @@ | |||||||
|     </packages> |     </packages> | ||||||
|  |  | ||||||
|     <packages type="kis"> |     <packages type="kis"> | ||||||
|         <package name="gfxboot-branding-SLE"/> |  | ||||||
|         <package name="dracut-kiwi-oem-repart"/> |         <package name="dracut-kiwi-oem-repart"/> | ||||||
|         <package name="dracut-kiwi-oem-dump"/> |         <package name="dracut-kiwi-oem-dump"/> | ||||||
|     </packages>  |     </packages>  | ||||||
|   | |||||||
| @@ -19,7 +19,7 @@ | |||||||
|  |  | ||||||
|  |  | ||||||
| Name:           ironic-ipa-ramdisk | Name:           ironic-ipa-ramdisk | ||||||
| Version:        3.0.0 | Version:        3.0.3 | ||||||
| Release:        0 | Release:        0 | ||||||
| Summary:        Kernel and ramdisk image for OpenStack Ironic | Summary:        Kernel and ramdisk image for OpenStack Ironic | ||||||
| License:        SUSE-EULA | License:        SUSE-EULA | ||||||
| @@ -49,7 +49,12 @@ BuildRequires:  fontconfig | |||||||
| BuildRequires:  fonts-config | BuildRequires:  fonts-config | ||||||
| BuildRequires:  gptfdisk | BuildRequires:  gptfdisk | ||||||
| BuildRequires:  grub2 | BuildRequires:  grub2 | ||||||
|  | %ifarch x86_64 | ||||||
| BuildRequires:  grub2-x86_64-efi | BuildRequires:  grub2-x86_64-efi | ||||||
|  | %endif | ||||||
|  | %ifarch aarch64 | ||||||
|  | BuildRequires:  grub2-arm64-efi | ||||||
|  | %endif | ||||||
| BuildRequires:  haveged | BuildRequires:  haveged | ||||||
| BuildRequires:  hdparm | BuildRequires:  hdparm | ||||||
| BuildRequires:  hwinfo | BuildRequires:  hwinfo | ||||||
| @@ -93,19 +98,14 @@ BuildRequires:  plymouth-dracut | |||||||
| BuildRequires:  plymouth-theme-bgrt | BuildRequires:  plymouth-theme-bgrt | ||||||
| BuildRequires:  dracut-kiwi-oem-dump | BuildRequires:  dracut-kiwi-oem-dump | ||||||
| BuildRequires:  dracut-kiwi-oem-repart | BuildRequires:  dracut-kiwi-oem-repart | ||||||
| BuildRequires:  gfxboot-branding-SLE |  | ||||||
| BuildRequires:  grub2-branding-SLE | BuildRequires:  grub2-branding-SLE | ||||||
| BuildRequires:  open-iscsi | BuildRequires:  open-iscsi | ||||||
| BuildRequires:  plymouth-branding-SLE | BuildRequires:  plymouth-branding-SLE | ||||||
| BuildRequires:  lshw | BuildRequires:  lshw | ||||||
| BuildRequires:  kbd | BuildRequires:  kbd | ||||||
| %ifarch aarch64 |  | ||||||
| BuildRequires:  dmidecode | BuildRequires:  dmidecode | ||||||
| BuildRequires:  efibootmgr | BuildRequires:  efibootmgr | ||||||
| %endif |  | ||||||
| %ifarch x86_64 | %ifarch x86_64 | ||||||
| BuildRequires:  dmidecode |  | ||||||
| BuildRequires:  efibootmgr |  | ||||||
| BuildRequires:  syslinux | BuildRequires:  syslinux | ||||||
| %endif | %endif | ||||||
|  |  | ||||||
| @@ -148,10 +148,8 @@ TDIR=`mktemp -d /tmp/openstack-ironic-image.XXXXX` | |||||||
| cd /tmp/openstack-ironic-image/img/build/image-root  | cd /tmp/openstack-ironic-image/img/build/image-root  | ||||||
| find . | cpio --create --format=newc --quiet > $TDIR/initrdtmp | find . | cpio --create --format=newc --quiet > $TDIR/initrdtmp | ||||||
| cd $TDIR | cd $TDIR | ||||||
| gzip -9 -f initrdtmp | zstd initrdtmp -o initrd-%{_arch}.zst | ||||||
| INITRDGZ=`ls *.gz | head -1` | INITRD=`ls *.zst | head -1` | ||||||
| gzip -cd $INITRDGZ | xz --check=crc32 -c9 > initrd.xz |  | ||||||
| INITRD=`ls *.xz | head -1` |  | ||||||
|  |  | ||||||
| ls /tmp/openstack-ironic-image/img/openstack-ironic-image* | ls /tmp/openstack-ironic-image/img/openstack-ironic-image* | ||||||
| KERNEL=`ls /tmp/openstack-ironic-image/img/openstack-ironic-image*default*kernel | head -1` | KERNEL=`ls /tmp/openstack-ironic-image/img/openstack-ironic-image*default*kernel | head -1` | ||||||
|   | |||||||
										
											Binary file not shown.
										
									
								
							| @@ -1,17 +1,20 @@ | |||||||
| #!BuildTag: kiwi-builder:10.1 | #!BuildTag: %%IMG_PREFIX%%kiwi-builder:%%kiwi_version%%.0-%RELEASE% | ||||||
| FROM registry.suse.com/bci/kiwi:10.1.10 | #!BuildTag: %%IMG_PREFIX%%kiwi-builder:%%kiwi_version%%.0 | ||||||
| MAINTAINER SUSE LLC (https://www.suse.com/) |  | ||||||
|  | ARG KIWIVERSION="10.2.12" | ||||||
|  | FROM registry.suse.com/bci/kiwi:${KIWIVERSION} | ||||||
|  | ARG KIWIVERSION | ||||||
|  |  | ||||||
| # Define labels according to https://en.opensuse.org/Building_derived_containers | # Define labels according to https://en.opensuse.org/Building_derived_containers | ||||||
| # labelprefix=com.suse.application.akri | # labelprefix=com.suse.application.kiwi | ||||||
| LABEL org.opencontainers.image.authors="SUSE LLC (https://www.suse.com/)" | LABEL org.opencontainers.image.authors="SUSE LLC (https://www.suse.com/)" | ||||||
| LABEL org.opencontainers.image.title="SLE Kiwi Builder Container Image" | LABEL org.opencontainers.image.title="SLE Kiwi Builder Container Image" | ||||||
| LABEL org.opencontainers.image.description="kiwi-builder based on the SLE Base Container Image." | LABEL org.opencontainers.image.description="kiwi-builder based on the SLE Base Container Image." | ||||||
| LABEL org.opencontainers.image.version="%PACKAGE_VERSION%" | LABEL org.opencontainers.image.version="%%kiwi_version%%" | ||||||
| LABEL org.opencontainers.image.url="https://www.suse.com/solutions/edge-computing/" | LABEL org.opencontainers.image.url="https://www.suse.com/solutions/edge-computing/" | ||||||
| LABEL org.opencontainers.image.created="%BUILDTIME%" | LABEL org.opencontainers.image.created="%BUILDTIME%" | ||||||
| LABEL org.opencontainers.image.vendor="SUSE LLC" | LABEL org.opencontainers.image.vendor="SUSE LLC" | ||||||
| LABEL org.opensuse.reference="%%IMG_REPO%%/%%IMG_PREFIX%%kiwi-builder:10.1" | LABEL org.opensuse.reference="%%IMG_REPO%%/%%IMG_PREFIX%%kiwi-builder:%%kiwi_version%%.0-%RELEASE%" | ||||||
| LABEL org.openbuildservice.disturl="%DISTURL%" | LABEL org.openbuildservice.disturl="%DISTURL%" | ||||||
| LABEL com.suse.supportlevel="%%SUPPORT_LEVEL%%" | LABEL com.suse.supportlevel="%%SUPPORT_LEVEL%%" | ||||||
| LABEL com.suse.eula="SUSE Combined EULA February 2024" | LABEL com.suse.eula="SUSE Combined EULA February 2024" | ||||||
| @@ -20,12 +23,8 @@ LABEL com.suse.image-type="application" | |||||||
| LABEL com.suse.release-stage="released" | LABEL com.suse.release-stage="released" | ||||||
| # endlabelprefix | # endlabelprefix | ||||||
|  |  | ||||||
| # Install required packages for Kiwi to function as expected | # help the build service understand the need for python3-kiwi | ||||||
| # Should be provided via https://github.com/SUSE/BCI-dockerfile-generator/pull/1770 | RUN zypper -n install -d -D python3-kiwi; [ "%%kiwi_version%%" = "${KIWIVERSION}" ] || { echo "expected kiwi version ${KIWIVERSION}: version mismatch"; exit 1; } | ||||||
| # RUN zypper in -y gawk && zypper clean -a |  | ||||||
|  |  | ||||||
| # Configure Kiwi to use kpartx |  | ||||||
| RUN echo -e "mapper:\n  - part_mapper: kpartx" > /etc/kiwi.yml |  | ||||||
|  |  | ||||||
| # Copy build script into image and make it executable | # Copy build script into image and make it executable | ||||||
| ADD build-image.sh /usr/bin/build-image | ADD build-image.sh /usr/bin/build-image | ||||||
| @@ -36,3 +35,4 @@ RUN mkdir -p /micro-sdk/defs | |||||||
| ADD SL-Micro.kiwi /micro-sdk/defs | ADD SL-Micro.kiwi /micro-sdk/defs | ||||||
| ADD SL-Micro.kiwi.4096 /micro-sdk/defs | ADD SL-Micro.kiwi.4096 /micro-sdk/defs | ||||||
| ADD config.sh /micro-sdk/defs | ADD config.sh /micro-sdk/defs | ||||||
|  | ADD editbootinstall_rpi.sh /micro-sdk/defs | ||||||
|   | |||||||
| @@ -2,46 +2,54 @@ | |||||||
| Kiwi SDK Image Instructions | Kiwi SDK Image Instructions | ||||||
| ########################### | ########################### | ||||||
|  |  | ||||||
| Please ensure that you're running this on a registered SLE Micro 6.0 system, and make sure that SELinux is disabled: | Please ensure that you're running this on a registered SUSE Linux Micro 6.1 system, and make sure that SELinux is disabled: | ||||||
|  |  | ||||||
| # setenforce 0 | # setenforce 0 | ||||||
|  |  | ||||||
| Next, download the podman image: | Next, download the podman image: | ||||||
|  |  | ||||||
| # podman pull %%IMG_REPO%%/%%IMG_PREFIXkiwi-builder:10 | # podman pull %%IMG_REPO%%/%%IMG_PREFIXkiwi-builder:%%kiwi_version%%.0 | ||||||
|  |  | ||||||
| Make a local output directory (where the images will reside): | Make a local output directory (where the images will reside): | ||||||
|  |  | ||||||
| # mkdir output | # mkdir output | ||||||
|  |  | ||||||
|  | Then, to build a standard "Base" image, run the following in podman: | ||||||
|  |  | ||||||
|  | # podman run --privileged -v /etc/zypp/repos.d:/micro-sdk/repos/ -v ./output:/tmp/output -it %%IMG_REPO%%/%%IMG_PREFIXkiwi-builder:%%kiwi_version%%.0 build-image | ||||||
|  |  | ||||||
|  | To build a "Base" SelfInstall ISO, you can add additional flags, for example: | ||||||
|  |  | ||||||
|  | # podman run --privileged -v /etc/zypp/repos.d:/micro-sdk/repos/ -v ./output:/tmp/output -it %%IMG_REPO%%/%%IMG_PREFIXkiwi-builder:%%kiwi_version%%.0 build-image -p Base-SelfInstall | ||||||
|  |  | ||||||
| Then, to build a standard "Default" image, run the following in podman: | Then, to build a standard "Default" image, run the following in podman: | ||||||
|  |  | ||||||
| # podman run --privileged -v /etc/zypp/repos.d:/micro-sdk/repos/ -v ./output:/tmp/output -it %%IMG_REPO%%/%%IMG_PREFIXkiwi-builder:10 build-image | # podman run --privileged -v /etc/zypp/repos.d:/micro-sdk/repos/ -v ./output:/tmp/output -it %%IMG_REPO%%/%%IMG_PREFIXkiwi-builder:%%kiwi_version%%.0 build-image -p Default | ||||||
|  |  | ||||||
| To build a SelfInstall ISO, you can add additional flags, for example: | To build a "Default" SelfInstall ISO, you can add additional flags, for example: | ||||||
|  |  | ||||||
| # podman run --privileged -v /etc/zypp/repos.d:/micro-sdk/repos/ -v ./output:/tmp/output -it %%IMG_REPO%%/%%IMG_PREFIXkiwi-builder:10 build-image -p Default-SelfInstall | # podman run --privileged -v /etc/zypp/repos.d:/micro-sdk/repos/ -v ./output:/tmp/output -it %%IMG_REPO%%/%%IMG_PREFIXkiwi-builder:%%kiwi_version%%.0 build-image -p Default-SelfInstall | ||||||
|  |  | ||||||
| To build an image with a RealTime kernel, e.g. a RAW disk image ("Default"), use the following: | To build an image with a RealTime kernel, e.g. a RAW disk image ("Default"), use the following: | ||||||
|  |  | ||||||
| # podman run --privileged -v /etc/zypp/repos.d:/micro-sdk/repos/ -v ./output:/tmp/output -it %%IMG_REPO%%/%%IMG_PREFIXkiwi-builder:10 build-image -p Base-RT | # podman run --privileged -v /etc/zypp/repos.d:/micro-sdk/repos/ -v ./output:/tmp/output -it %%IMG_REPO%%/%%IMG_PREFIXkiwi-builder:%%kiwi_version%%.0 build-image -p Base-RT | ||||||
|  |  | ||||||
| To build an image that supports a large block/sectorsize (4096), use the "-b" flag, for example: | To build an image that supports a large block/sectorsize (4096), use the "-b" flag, for example: | ||||||
|  |  | ||||||
| # podman run --privileged -v /etc/zypp/repos.d:/micro-sdk/repos/ -v ./output:/tmp/output -it %%IMG_REPO%%/%%IMG_PREFIXkiwi-builder:10 build-image -p Default-SelfInstall -b | # podman run --privileged -v /etc/zypp/repos.d:/micro-sdk/repos/ -v ./output:/tmp/output -it %%IMG_REPO%%/%%IMG_PREFIXkiwi-builder:%%kiwi_version%%.0 build-image -p Default-SelfInstall -b | ||||||
|  |  | ||||||
| # mkdir mydefs/ | # mkdir mydefs/ | ||||||
| # cp /path/to/SL-Micro.kiwi mydefs/ | # cp /path/to/SL-Micro.kiwi mydefs/ | ||||||
| # cp /path/to/config.sh mydefs/ | # cp /path/to/config.sh mydefs/ | ||||||
| # podman run --privileged -v /etc/zypp/repos.d:/micro-sdk/repos/ -v ./output:/tmp/output -v ./mydefs/:/micro-sdk/defs/ -it %%IMG_REPO%%/%%IMG_PREFIXkiwi-builder:10 build-image | # podman run --privileged -v /etc/zypp/repos.d:/micro-sdk/repos/ -v ./output:/tmp/output -v ./mydefs/:/micro-sdk/defs/ -it %%IMG_REPO%%/%%IMG_PREFIXkiwi-builder:%%kiwi_version%%.0 build-image | ||||||
|  |  | ||||||
| All output will be in the local $(pwd)/output directory, for example: | All output will be in the local $(pwd)/output directory, for example: | ||||||
|  |  | ||||||
| # ls -1 output/ | # ls -1 output/ | ||||||
| SLE-Micro.x86_64-6.0.changes | SL-Micro.x86_64-6.1.changes | ||||||
| SLE-Micro.x86_64-6.0.packages | SL-Micro.x86_64-6.1.packages | ||||||
| SLE-Micro.x86_64-6.0.raw | SL-Micro.x86_64-6.1.raw | ||||||
| SLE-Micro.x86_64-6.0.verified | SL-Micro.x86_64-6.1.verified | ||||||
| build | build | ||||||
| kiwi.result | kiwi.result | ||||||
| kiwi.result.json | kiwi.result.json | ||||||
|   | |||||||
| @@ -30,9 +30,21 @@ | |||||||
|         <profile name="x86-self_install" description="Raw disk for x86_64 - uEFI" arch="x86_64"> |         <profile name="x86-self_install" description="Raw disk for x86_64 - uEFI" arch="x86_64"> | ||||||
|             <requires profile="bootloader"/> |             <requires profile="bootloader"/> | ||||||
|         </profile> |         </profile> | ||||||
|  |         <profile name="aarch64" description="Raw disk for aarch64 - uEFI" arch="aarch64"> | ||||||
|  |             <requires profile="bootloader"/> | ||||||
|  |         </profile> | ||||||
|         <profile name="aarch64-self_install" description="Raw disk for aarch64" arch="aarch64"> |         <profile name="aarch64-self_install" description="Raw disk for aarch64" arch="aarch64"> | ||||||
|             <requires profile="bootloader"/> |             <requires profile="bootloader"/> | ||||||
|         </profile> |         </profile> | ||||||
|  |         <profile name="aarch64-rt" description="Raw disk for aarch64 with RT kernel" arch="aarch64"> | ||||||
|  |             <requires profile="bootloader"/> | ||||||
|  |         </profile> | ||||||
|  |         <profile name="aarch64-rt-rpi" description="Raw disk for aarch64 with RT kernel on Raspberry Pi" arch="aarch64"> | ||||||
|  |             <requires profile="bootloader"/> | ||||||
|  |         </profile> | ||||||
|  |         <profile name="aarch64-rt-self_install" description="Raw disk for aarch64 with RT kernel" arch="aarch64"> | ||||||
|  |             <requires profile="bootloader"/> | ||||||
|  |         </profile> | ||||||
|         <profile name="x86-legacy" description="Raw disk for x86_64 - legacy boot" arch="x86_64"> |         <profile name="x86-legacy" description="Raw disk for x86_64 - legacy boot" arch="x86_64"> | ||||||
|             <requires profile="bootloader"/> |             <requires profile="bootloader"/> | ||||||
|         </profile> |         </profile> | ||||||
| @@ -63,6 +75,21 @@ | |||||||
|         <profile name="s390-fba" description="Raw disk for s390 - DASD" arch="s390x"> |         <profile name="s390-fba" description="Raw disk for s390 - DASD" arch="s390x"> | ||||||
|             <requires profile="bootloader"/> |             <requires profile="bootloader"/> | ||||||
|         </profile> |         </profile> | ||||||
|  |         <profile name="s390-fcp" description="Raw disk for s390 - SCSI" arch="s390x"> | ||||||
|  |             <requires profile="bootloader"/> | ||||||
|  |         </profile> | ||||||
|  |         <profile name="ppc64le-512ss" description="Raw disk for PPc64 - 512 sector size" arch="ppc64le"> | ||||||
|  |             <requires profile="bootloader"/> | ||||||
|  |         </profile> | ||||||
|  |         <profile name="ppc64le-4096ss" description="Raw disk for PPc64 - 4096 sector size" arch="ppc64le"> | ||||||
|  |             <requires profile="bootloader"/> | ||||||
|  |         </profile> | ||||||
|  |         <profile name="ppc64le-512ss-self_install" description="Raw disk for PPc64 - 512 sector size" arch="ppc64le"> | ||||||
|  |             <requires profile="bootloader"/> | ||||||
|  |         </profile> | ||||||
|  |         <profile name="ppc64le-4096ss-self_install" description="Raw disk for PPc64 - 4096 sector size" arch="ppc64le"> | ||||||
|  |             <requires profile="bootloader"/> | ||||||
|  |         </profile> | ||||||
|         <!-- Images (flavor + platform) --> |         <!-- Images (flavor + platform) --> | ||||||
|         <profile name="Default" description="SL Micro with Podman and KVM as raw image with uEFI boot" arch="x86_64"> |         <profile name="Default" description="SL Micro with Podman and KVM as raw image with uEFI boot" arch="x86_64"> | ||||||
|             <requires profile="full"/> |             <requires profile="full"/> | ||||||
| @@ -124,10 +151,18 @@ | |||||||
|             <requires profile="self_install"/> |             <requires profile="self_install"/> | ||||||
|         </profile> |         </profile> | ||||||
|         <profile name="Default" description="SL Micro with Podman and KVM as raw image with uEFI boot" arch="aarch64"> |         <profile name="Default" description="SL Micro with Podman and KVM as raw image with uEFI boot" arch="aarch64"> | ||||||
|  |             <requires profile="full"/> | ||||||
|  |             <requires profile="aarch64"/> | ||||||
|  |         </profile> | ||||||
|  |         <profile name="Default-RPi" description="SL Micro with Podman and KVM as raw image with uEFI boot" arch="aarch64"> | ||||||
|             <requires profile="full"/> |             <requires profile="full"/> | ||||||
|             <requires profile="rpi"/> |             <requires profile="rpi"/> | ||||||
|         </profile> |         </profile> | ||||||
|         <profile name="Base" description="SL Micro with Podman as raw image with uEFI boot" arch="aarch64"> |         <profile name="Base" description="SL Micro with Podman as raw image with uEFI boot" arch="aarch64"> | ||||||
|  |             <requires profile="container-host"/> | ||||||
|  |             <requires profile="aarch64"/> | ||||||
|  |         </profile> | ||||||
|  |         <profile name="Base-RPi" description="SL Micro with Podman as raw image with uEFI boot" arch="aarch64"> | ||||||
|             <requires profile="container-host"/> |             <requires profile="container-host"/> | ||||||
|             <requires profile="rpi"/> |             <requires profile="rpi"/> | ||||||
|         </profile> |         </profile> | ||||||
| @@ -140,6 +175,19 @@ | |||||||
|             <requires profile="x86-rt-self_install"/> |             <requires profile="x86-rt-self_install"/> | ||||||
|             <requires profile="self_install"/> |             <requires profile="self_install"/> | ||||||
|         </profile> |         </profile> | ||||||
|  |         <profile name="Base-RT" description="SL Micro with Podman as raw image with uEFI boot" arch="aarch64"> | ||||||
|  |             <requires profile="container-host"/> | ||||||
|  |             <requires profile="aarch64-rt"/> | ||||||
|  |         </profile> | ||||||
|  |         <profile name="Base-RT-RPi" description="SL Micro with Podman as raw image with uEFI boot" arch="aarch64"> | ||||||
|  |             <requires profile="container-host"/> | ||||||
|  |             <requires profile="aarch64-rt-rpi"/> | ||||||
|  |         </profile> | ||||||
|  |         <profile name="Base-RT-SelfInstall" description="SL Micro with Podman as raw image with uEFI boot - SelfInstall" arch="aarch64"> | ||||||
|  |             <requires profile="container-host"/> | ||||||
|  |             <requires profile="aarch64-rt-self_install"/> | ||||||
|  |             <requires profile="self_install"/> | ||||||
|  |         </profile> | ||||||
|         <profile name="Default-qcow" description="SL Micro with Podman and KVM as raw image for KVM on System z" arch="s390x"> |         <profile name="Default-qcow" description="SL Micro with Podman and KVM as raw image for KVM on System z" arch="s390x"> | ||||||
|             <requires profile="full"/> |             <requires profile="full"/> | ||||||
|             <requires profile="s390-kvm"/> |             <requires profile="s390-kvm"/> | ||||||
| @@ -164,6 +212,14 @@ | |||||||
|             <requires profile="container-host"/> |             <requires profile="container-host"/> | ||||||
|             <requires profile="s390-fba"/> |             <requires profile="s390-fba"/> | ||||||
|         </profile> |         </profile> | ||||||
|  |         <profile name="Default-fcp" description="SL Micro with Podman and KVM as raw image for zFCP on System z" arch="s390x"> | ||||||
|  |             <requires profile="full"/> | ||||||
|  |             <requires profile="s390-fcp"/> | ||||||
|  |         </profile> | ||||||
|  |         <profile name="Base-fcp" description="SL Micro with Podman as raw image for zFCP on System z" arch="s390x"> | ||||||
|  |             <requires profile="container-host"/> | ||||||
|  |             <requires profile="s390-fcp"/> | ||||||
|  |         </profile> | ||||||
|         <profile name="Default-legacy" description="SL Micro with Podman as raw image with legacy boot" arch="x86_64"> |         <profile name="Default-legacy" description="SL Micro with Podman as raw image with legacy boot" arch="x86_64"> | ||||||
|             <requires profile="full"/> |             <requires profile="full"/> | ||||||
|             <requires profile="x86-legacy"/> |             <requires profile="x86-legacy"/> | ||||||
| @@ -184,10 +240,47 @@ | |||||||
| 	    <requires profile="container-host"/> | 	    <requires profile="container-host"/> | ||||||
| 	    <requires profile="aarch64-qcow"/> | 	    <requires profile="aarch64-qcow"/> | ||||||
|         </profile> |         </profile> | ||||||
|  |  | ||||||
|  | 	<profile name="Base-512" description="SL Micro with Podman as raw image for ppc64le with 512b sector size" arch="ppc64le"> | ||||||
|  |             <requires profile="container-host"/> | ||||||
|  |             <requires profile="ppc64le-512ss"/> | ||||||
|  |         </profile> | ||||||
|  | 	<profile name="Base-4096" description="SL Micro with Podman as raw image for ppc64le with 4096b sector size" arch="ppc64le"> | ||||||
|  |             <requires profile="container-host"/> | ||||||
|  |             <requires profile="ppc64le-4096ss"/> | ||||||
|  |         </profile> | ||||||
|  | 	<profile name="Base-512-SelfInstall" description="SL Micro with Podman as self-install image for ppc64le with 512b sector size" arch="ppc64le"> | ||||||
|  |             <requires profile="container-host"/> | ||||||
|  |             <requires profile="ppc64le-512ss-self_install"/> | ||||||
|  |             <requires profile="self_install"/> | ||||||
|  |         </profile> | ||||||
|  | 	<profile name="Base-4096-SelfInstall" description="SL Micro with Podman as self-install image for ppc64le with 512b sector size" arch="ppc64le"> | ||||||
|  |             <requires profile="container-host"/> | ||||||
|  |             <requires profile="ppc64le-4096ss-self_install"/> | ||||||
|  |             <requires profile="self_install"/> | ||||||
|  |         </profile> | ||||||
|  | 	<profile name="Default-512" description="SL Micro with Podman and KVM as raw image for ppc64le with 512b sector size" arch="ppc64le"> | ||||||
|  |             <requires profile="full"/> | ||||||
|  |             <requires profile="ppc64le-512ss"/> | ||||||
|  |         </profile> | ||||||
|  | 	<profile name="Default-4096" description="SL Micro with Podman and KVM as raw image for ppc64le with 4096b sector size" arch="ppc64le"> | ||||||
|  |             <requires profile="full"/> | ||||||
|  |             <requires profile="ppc64le-4096ss"/> | ||||||
|  |         </profile> | ||||||
|  | 	<profile name="Default-512-SelfInstall" description="SL Micro with Podman and KVM as self-install image for ppc64le with 512b sector size" arch="ppc64le"> | ||||||
|  |             <requires profile="full"/> | ||||||
|  |             <requires profile="ppc64le-512ss-self_install"/> | ||||||
|  |             <requires profile="self_install"/> | ||||||
|  |         </profile> | ||||||
|  | 	<profile name="Default-4096-SelfInstall" description="SL Micro with Podman and KVM as self-install image for ppc64le with 512b sector size" arch="ppc64le"> | ||||||
|  |             <requires profile="full"/> | ||||||
|  |             <requires profile="ppc64le-4096ss-self_install"/> | ||||||
|  |             <requires profile="self_install"/> | ||||||
|  |         </profile> | ||||||
|     </profiles> |     </profiles> | ||||||
|  |  | ||||||
|     <preferences profiles="x86-encrypted,x86-rt-encrypted"> |     <preferences profiles="x86-encrypted,x86-rt-encrypted"> | ||||||
|         <version>6.0</version> |         <version>6.1</version> | ||||||
|         <packagemanager>zypper</packagemanager> |         <packagemanager>zypper</packagemanager> | ||||||
|         <bootsplash-theme>SLE</bootsplash-theme> |         <bootsplash-theme>SLE</bootsplash-theme> | ||||||
|         <bootloader-theme>SLE</bootloader-theme> |         <bootloader-theme>SLE</bootloader-theme> | ||||||
| @@ -198,7 +291,7 @@ | |||||||
|             initrd_system="dracut" |             initrd_system="dracut" | ||||||
|             filesystem="btrfs" |             filesystem="btrfs" | ||||||
|             firmware="uefi" |             firmware="uefi" | ||||||
|             kernelcmdline="console=ttyS0,115200 console=tty0 security=selinux selinux=1 quiet net.ifnames=0" |             kernelcmdline="console=ttyS0,115200 console=tty0 security=selinux selinux=1 quiet systemd.show_status=1 net.ifnames=0" | ||||||
|             bootpartition="false" |             bootpartition="false" | ||||||
|             bootkernel="custom" |             bootkernel="custom" | ||||||
|             devicepersistency="by-uuid" |             devicepersistency="by-uuid" | ||||||
| @@ -211,7 +304,7 @@ | |||||||
| 	    luks_pbkdf="pbkdf2" | 	    luks_pbkdf="pbkdf2" | ||||||
|         > |         > | ||||||
|             <luksformat> |             <luksformat> | ||||||
|                 <option name="--cipher" value="aes"/> |                 <option name="--cipher" value="aes-xts-plain64"/> | ||||||
|             </luksformat> |             </luksformat> | ||||||
|             <bootloader name="grub2" console="gfxterm" use_disk_password="true" /> |             <bootloader name="grub2" console="gfxterm" use_disk_password="true" /> | ||||||
|             <systemdisk> |             <systemdisk> | ||||||
| @@ -230,7 +323,7 @@ | |||||||
|         </type> |         </type> | ||||||
|     </preferences> |     </preferences> | ||||||
|     <preferences profiles="x86,x86-rt"> |     <preferences profiles="x86,x86-rt"> | ||||||
|         <version>6.0</version> |         <version>6.1</version> | ||||||
|         <packagemanager>zypper</packagemanager> |         <packagemanager>zypper</packagemanager> | ||||||
|         <bootsplash-theme>SLE</bootsplash-theme> |         <bootsplash-theme>SLE</bootsplash-theme> | ||||||
|         <bootloader-theme>SLE</bootloader-theme> |         <bootloader-theme>SLE</bootloader-theme> | ||||||
| @@ -241,7 +334,7 @@ | |||||||
|             initrd_system="dracut" |             initrd_system="dracut" | ||||||
|             filesystem="btrfs" |             filesystem="btrfs" | ||||||
|             firmware="uefi" |             firmware="uefi" | ||||||
|             kernelcmdline="console=ttyS0,115200 console=tty0 security=selinux selinux=1 quiet net.ifnames=0" |             kernelcmdline="console=ttyS0,115200 console=tty0 security=selinux selinux=1 quiet systemd.show_status=1 net.ifnames=0" | ||||||
|             bootpartition="false" |             bootpartition="false" | ||||||
|             bootkernel="custom" |             bootkernel="custom" | ||||||
|             devicepersistency="by-uuid" |             devicepersistency="by-uuid" | ||||||
| @@ -266,7 +359,7 @@ | |||||||
|     </preferences> |     </preferences> | ||||||
|  |  | ||||||
|     <preferences profiles="x86-self_install,x86-rt-self_install"> |     <preferences profiles="x86-self_install,x86-rt-self_install"> | ||||||
|         <version>6.0</version> |         <version>6.1</version> | ||||||
|         <packagemanager>zypper</packagemanager> |         <packagemanager>zypper</packagemanager> | ||||||
|         <bootsplash-theme>SLE</bootsplash-theme> |         <bootsplash-theme>SLE</bootsplash-theme> | ||||||
|         <bootloader-theme>SLE</bootloader-theme> |         <bootloader-theme>SLE</bootloader-theme> | ||||||
| @@ -276,11 +369,12 @@ | |||||||
|             image="oem" |             image="oem" | ||||||
|             initrd_system="dracut" |             initrd_system="dracut" | ||||||
|             installiso="true" |             installiso="true" | ||||||
|  |             installpxe="true" | ||||||
|             filesystem="btrfs" |             filesystem="btrfs" | ||||||
|             installboot="install" |             installboot="install" | ||||||
|             install_continue_on_timeout="false" |             install_continue_on_timeout="false" | ||||||
|             firmware="uefi" |             firmware="uefi" | ||||||
|             kernelcmdline="console=ttyS0,115200 console=tty0 security=selinux selinux=1 quiet net.ifnames=0" |             kernelcmdline="console=ttyS0,115200 console=tty0 security=selinux selinux=1 quiet systemd.show_status=1 net.ifnames=0" | ||||||
|             bootpartition="false" |             bootpartition="false" | ||||||
|             bootkernel="custom" |             bootkernel="custom" | ||||||
|             devicepersistency="by-uuid" |             devicepersistency="by-uuid" | ||||||
| @@ -304,8 +398,8 @@ | |||||||
|         </type> |         </type> | ||||||
|     </preferences> |     </preferences> | ||||||
|  |  | ||||||
|     <preferences profiles="rpi"> |     <preferences profiles="rpi,aarch64-rt-rpi"> | ||||||
|         <version>6.0</version> |         <version>6.1</version> | ||||||
|         <packagemanager>zypper</packagemanager> |         <packagemanager>zypper</packagemanager> | ||||||
|         <bootsplash-theme>SLE</bootsplash-theme> |         <bootsplash-theme>SLE</bootsplash-theme> | ||||||
|         <bootloader-theme>SLE</bootloader-theme> |         <bootloader-theme>SLE</bootloader-theme> | ||||||
| @@ -320,11 +414,11 @@ | |||||||
|             install_continue_on_timeout="false" |             install_continue_on_timeout="false" | ||||||
|             fsmountoptions="noatime" |             fsmountoptions="noatime" | ||||||
|             firmware="uefi" |             firmware="uefi" | ||||||
|             kernelcmdline="console=ttyS0,115200n8 console=tty0 security=selinux selinux=1 quiet net.ifnames=0" |             kernelcmdline="security=selinux selinux=1 quiet systemd.show_status=1 net.ifnames=0" | ||||||
|             bootpartition="false" |             bootpartition="false" | ||||||
|             devicepersistency="by-uuid" |             devicepersistency="by-uuid" | ||||||
|             btrfs_root_is_snapshot="true" |             btrfs_root_is_snapshot="true" | ||||||
|             efipartsize="128"      |             efipartsize="128" | ||||||
|             editbootinstall="editbootinstall_rpi.sh" |             editbootinstall="editbootinstall_rpi.sh" | ||||||
|             btrfs_root_is_readonly_snapshot="true" |             btrfs_root_is_readonly_snapshot="true" | ||||||
|             btrfs_quota_groups="false" |             btrfs_quota_groups="false" | ||||||
| @@ -344,8 +438,9 @@ | |||||||
|             </systemdisk> |             </systemdisk> | ||||||
|         </type> |         </type> | ||||||
|     </preferences> |     </preferences> | ||||||
|     <preferences profiles="aarch64-self_install"> |  | ||||||
|         <version>6.0</version> |     <preferences profiles="aarch64,aarch64-rt"> | ||||||
|  |         <version>6.1</version> | ||||||
|         <packagemanager>zypper</packagemanager> |         <packagemanager>zypper</packagemanager> | ||||||
|         <bootsplash-theme>SLE</bootsplash-theme> |         <bootsplash-theme>SLE</bootsplash-theme> | ||||||
|         <bootloader-theme>SLE</bootloader-theme> |         <bootloader-theme>SLE</bootloader-theme> | ||||||
| @@ -358,9 +453,49 @@ | |||||||
|             filesystem="btrfs" |             filesystem="btrfs" | ||||||
|             installboot="install" |             installboot="install" | ||||||
|             install_continue_on_timeout="false" |             install_continue_on_timeout="false" | ||||||
|  |             fsmountoptions="noatime" | ||||||
|             firmware="uefi" |             firmware="uefi" | ||||||
|             efipartsize="128"      |             kernelcmdline="security=selinux selinux=1 quiet systemd.show_status=1 net.ifnames=0" | ||||||
| 	    kernelcmdline="console=ttyS0,115200 console=tty0 security=selinux selinux=1 quiet net.ifnames=0" |             bootpartition="false" | ||||||
|  |             devicepersistency="by-uuid" | ||||||
|  |             btrfs_root_is_snapshot="true" | ||||||
|  |             efipartsize="128" | ||||||
|  |             btrfs_root_is_readonly_snapshot="true" | ||||||
|  |             btrfs_quota_groups="false" | ||||||
|  |             disk_start_sector="4096" | ||||||
|  |         > | ||||||
|  |             <bootloader name="grub2" console="gfxterm" timeout="3" /> | ||||||
|  |             <systemdisk> | ||||||
|  |                 <volume name="home"/> | ||||||
|  |                 <volume name="root"/> | ||||||
|  |                 <!-- on tmpfs jsc#SMO-2                <volume name="tmp"/> --> | ||||||
|  |                 <volume name="opt"/> | ||||||
|  |                 <volume name="srv"/> | ||||||
|  |                 <volume name="boot/grub2/arm64-efi" mountpoint="boot/grub2/arm64-efi"/> | ||||||
|  |                 <volume name="boot/writable"/> | ||||||
|  |                 <volume name="usr/local"/> | ||||||
|  |                 <volume name="var" copy_on_write="false"/> | ||||||
|  |             </systemdisk> | ||||||
|  |         </type> | ||||||
|  |     </preferences> | ||||||
|  |     <preferences profiles="aarch64-self_install,aarch64-rt-self_install"> | ||||||
|  |         <version>6.1</version> | ||||||
|  |         <packagemanager>zypper</packagemanager> | ||||||
|  |         <bootsplash-theme>SLE</bootsplash-theme> | ||||||
|  |         <bootloader-theme>SLE</bootloader-theme> | ||||||
|  |         <rpm-excludedocs>true</rpm-excludedocs> | ||||||
|  |         <locale>en_US</locale> | ||||||
|  |         <type | ||||||
|  |             image="oem" | ||||||
|  |             initrd_system="dracut" | ||||||
|  |             installiso="true" | ||||||
|  |             installpxe="true" | ||||||
|  |             filesystem="btrfs" | ||||||
|  |             installboot="install" | ||||||
|  |             install_continue_on_timeout="false" | ||||||
|  |             firmware="uefi" | ||||||
|  |             efipartsize="128" | ||||||
|  |             kernelcmdline="security=selinux selinux=1 quiet systemd.show_status=1 net.ifnames=0" | ||||||
|             bootpartition="false" |             bootpartition="false" | ||||||
|             bootkernel="custom" |             bootkernel="custom" | ||||||
|             devicepersistency="by-uuid" |             devicepersistency="by-uuid" | ||||||
| @@ -385,22 +520,22 @@ | |||||||
|     </preferences> |     </preferences> | ||||||
|  |  | ||||||
|     <preferences profiles="s390-kvm"> |     <preferences profiles="s390-kvm"> | ||||||
|         <version>6.0</version> |         <version>6.1</version> | ||||||
|         <packagemanager>zypper</packagemanager> |         <packagemanager>zypper</packagemanager> | ||||||
|         <bootsplash-theme>SLE</bootsplash-theme> |         <bootsplash-theme>SLE</bootsplash-theme> | ||||||
|         <bootloader-theme>SLE</bootloader-theme> |         <bootloader-theme>SLE</bootloader-theme> | ||||||
|         <rpm-excludedocs>true</rpm-excludedocs> |         <rpm-excludedocs>true</rpm-excludedocs> | ||||||
|         <locale>en_US</locale> |         <locale>en_US</locale> | ||||||
|  |         <!-- Use ignition.platform.id=metal to avoid bsc#1227689 --> | ||||||
|         <type |         <type | ||||||
|             image="oem" |             image="oem" | ||||||
|             filesystem="btrfs" |             filesystem="btrfs" | ||||||
|             bootpartition="true" |             bootpartition="true" | ||||||
|             bootpartsize="300" |             bootpartsize="300" | ||||||
|             bootfilesystem="ext2" |             bootfilesystem="ext4" | ||||||
|         initrd_system="dracut" |         initrd_system="dracut" | ||||||
|         format="qcow2" |         format="qcow2" | ||||||
|             kernelcmdline="hvc_iucv=8 TERM=dumb security=selinux selinux=1 quiet" |             kernelcmdline="security=selinux selinux=1 quiet systemd.show_status=1 ignition.platform.id=metal" | ||||||
|         devicepersistency="by-uuid" |         devicepersistency="by-uuid" | ||||||
|             btrfs_root_is_snapshot="true" |             btrfs_root_is_snapshot="true" | ||||||
|             btrfs_root_is_readonly_snapshot="true" |             btrfs_root_is_readonly_snapshot="true" | ||||||
| @@ -423,7 +558,7 @@ | |||||||
|  |  | ||||||
|  |  | ||||||
|     <preferences profiles="s390-dasd"> |     <preferences profiles="s390-dasd"> | ||||||
|         <version>6.0</version> |         <version>6.1</version> | ||||||
|         <packagemanager>zypper</packagemanager> |         <packagemanager>zypper</packagemanager> | ||||||
|         <bootsplash-theme>SLE</bootsplash-theme> |         <bootsplash-theme>SLE</bootsplash-theme> | ||||||
|         <bootloader-theme>SLE</bootloader-theme> |         <bootloader-theme>SLE</bootloader-theme> | ||||||
| @@ -434,9 +569,9 @@ | |||||||
|           filesystem="btrfs" |           filesystem="btrfs" | ||||||
|           bootpartition="true" |           bootpartition="true" | ||||||
|           bootpartsize="300" |           bootpartsize="300" | ||||||
|           bootfilesystem="ext2" |           bootfilesystem="ext4" | ||||||
|           initrd_system="dracut" |           initrd_system="dracut" | ||||||
|           kernelcmdline="hvc_iucv=8 TERM=dumb security=selinux selinux=1 quiet" |           kernelcmdline="hvc_iucv=8 TERM=dumb security=selinux selinux=1 quiet systemd.show_status=1" | ||||||
|           devicepersistency="by-uuid" |           devicepersistency="by-uuid" | ||||||
|           target_blocksize="4096" |           target_blocksize="4096" | ||||||
|           btrfs_root_is_snapshot="true" |           btrfs_root_is_snapshot="true" | ||||||
| @@ -461,7 +596,7 @@ | |||||||
|  |  | ||||||
|  |  | ||||||
|     <preferences profiles="s390-fba"> |     <preferences profiles="s390-fba"> | ||||||
|         <version>6.0</version> |         <version>6.1</version> | ||||||
|         <packagemanager>zypper</packagemanager> |         <packagemanager>zypper</packagemanager> | ||||||
|         <bootsplash-theme>SLE</bootsplash-theme> |         <bootsplash-theme>SLE</bootsplash-theme> | ||||||
|         <bootloader-theme>SLE</bootloader-theme> |         <bootloader-theme>SLE</bootloader-theme> | ||||||
| @@ -472,9 +607,9 @@ | |||||||
|           filesystem="btrfs" |           filesystem="btrfs" | ||||||
|           bootpartition="true" |           bootpartition="true" | ||||||
|           bootpartsize="300" |           bootpartsize="300" | ||||||
|           bootfilesystem="ext2" |           bootfilesystem="ext4" | ||||||
|           initrd_system="dracut" |           initrd_system="dracut" | ||||||
|           kernelcmdline="hvc_iucv=8 TERM=dumb security=selinux selinux=1 quiet" |           kernelcmdline="hvc_iucv=8 TERM=dumb security=selinux selinux=1 quiet systemd.show_status=1" | ||||||
|           devicepersistency="by-uuid" |           devicepersistency="by-uuid" | ||||||
|           btrfs_root_is_snapshot="true" |           btrfs_root_is_snapshot="true" | ||||||
|           btrfs_root_is_readonly_snapshot="true" |           btrfs_root_is_readonly_snapshot="true" | ||||||
| @@ -495,9 +630,47 @@ | |||||||
|         </type> |         </type> | ||||||
|     </preferences> |     </preferences> | ||||||
|  |  | ||||||
|  |     <preferences profiles="s390-fcp"> | ||||||
|  |         <version>6.1</version> | ||||||
|  |         <packagemanager>zypper</packagemanager> | ||||||
|  |         <bootsplash-theme>SLE</bootsplash-theme> | ||||||
|  |         <bootloader-theme>SLE</bootloader-theme> | ||||||
|  |         <rpm-excludedocs>true</rpm-excludedocs> | ||||||
|  |         <locale>en_US</locale> | ||||||
|  |         <type | ||||||
|  |           image="oem" | ||||||
|  |           filesystem="btrfs" | ||||||
|  |           installpxe="true" | ||||||
|  |           bootpartition="true" | ||||||
|  |           bootpartsize="300" | ||||||
|  |           bootfilesystem="ext4" | ||||||
|  |           initrd_system="dracut" | ||||||
|  |           kernelcmdline="hvc_iucv=8 TERM=dumb security=selinux selinux=1 quiet systemd.show_status=1" | ||||||
|  |           devicepersistency="by-uuid" | ||||||
|  |           btrfs_root_is_snapshot="true" | ||||||
|  |           btrfs_root_is_readonly_snapshot="true" | ||||||
|  |           btrfs_quota_groups="true" | ||||||
|  |         > | ||||||
|  |             <oemconfig> | ||||||
|  |                 <oem-multipath-scan>true</oem-multipath-scan> | ||||||
|  |             </oemconfig> | ||||||
|  |             <bootloader name="grub2_s390x_emu" console="serial" timeout="3" targettype="SCSI"/> | ||||||
|  |             <systemdisk> | ||||||
|  |                 <volume name="home"/> | ||||||
|  |                 <volume name="root"/> | ||||||
|  |                 <volume name="opt"/> | ||||||
|  |                 <volume name="srv"/> | ||||||
|  |                 <volume name="boot/grub2/s390x-emu" mountpoint="boot/grub2/s390x-emu"/> | ||||||
|  |                 <volume name="boot/writable"/> | ||||||
|  |                 <volume name="usr/local"/> | ||||||
|  |                 <volume name="var" copy_on_write="false"/> | ||||||
|  |             </systemdisk> | ||||||
|  |             <size unit="G">5</size> | ||||||
|  |         </type> | ||||||
|  |     </preferences> | ||||||
|  |  | ||||||
|     <preferences profiles="x86-vmware"> |     <preferences profiles="x86-vmware"> | ||||||
|         <version>6.0</version> |         <version>6.1</version> | ||||||
|         <packagemanager>zypper</packagemanager> |         <packagemanager>zypper</packagemanager> | ||||||
|         <bootsplash-theme>SLE</bootsplash-theme> |         <bootsplash-theme>SLE</bootsplash-theme> | ||||||
|         <bootloader-theme>SLE</bootloader-theme> |         <bootloader-theme>SLE</bootloader-theme> | ||||||
| @@ -532,7 +705,7 @@ | |||||||
|         </type> |         </type> | ||||||
|     </preferences> |     </preferences> | ||||||
|     <preferences profiles="x86-qcow"> |     <preferences profiles="x86-qcow"> | ||||||
|         <version>6.0</version> |         <version>6.1</version> | ||||||
|         <packagemanager>zypper</packagemanager> |         <packagemanager>zypper</packagemanager> | ||||||
|         <bootsplash-theme>SLE</bootsplash-theme> |         <bootsplash-theme>SLE</bootsplash-theme> | ||||||
|         <bootloader-theme>SLE</bootloader-theme> |         <bootloader-theme>SLE</bootloader-theme> | ||||||
| @@ -543,7 +716,7 @@ | |||||||
|             format="qcow2" |             format="qcow2" | ||||||
|             filesystem="btrfs" |             filesystem="btrfs" | ||||||
|             firmware="uefi" |             firmware="uefi" | ||||||
|             kernelcmdline="console=ttyS0,115200 console=tty0 security=selinux selinux=1 quiet net.ifnames=0 ignition.platform.id=qemu" |             kernelcmdline="console=ttyS0,115200 console=tty0 security=selinux selinux=1 quiet systemd.show_status=1 net.ifnames=0 ignition.platform.id=qemu" | ||||||
|             bootpartition="false" |             bootpartition="false" | ||||||
|             bootkernel="custom" |             bootkernel="custom" | ||||||
|             devicepersistency="by-uuid" |             devicepersistency="by-uuid" | ||||||
| @@ -567,9 +740,9 @@ | |||||||
|             <size unit="G">32</size> |             <size unit="G">32</size> | ||||||
|         </type> |         </type> | ||||||
|     </preferences> |     </preferences> | ||||||
|   |  | ||||||
|     <preferences profiles="aarch64-qcow"> |     <preferences profiles="aarch64-qcow"> | ||||||
|         <version>6.0</version> |         <version>6.1</version> | ||||||
|         <packagemanager>zypper</packagemanager> |         <packagemanager>zypper</packagemanager> | ||||||
|         <bootsplash-theme>SLE</bootsplash-theme> |         <bootsplash-theme>SLE</bootsplash-theme> | ||||||
|         <bootloader-theme>SLE</bootloader-theme> |         <bootloader-theme>SLE</bootloader-theme> | ||||||
| @@ -580,8 +753,8 @@ | |||||||
|             format="qcow2" |             format="qcow2" | ||||||
|             filesystem="btrfs" |             filesystem="btrfs" | ||||||
|             firmware="uefi" |             firmware="uefi" | ||||||
|             efipartsize="128"      |             efipartsize="128" | ||||||
|             kernelcmdline="console=ttyS0,115200 console=tty0 security=selinux selinux=1 quiet net.ifnames=0 ignition.platform.id=qemu" |             kernelcmdline="console=ttyS0,115200 console=tty0 security=selinux selinux=1 quiet systemd.show_status=1 net.ifnames=0 ignition.platform.id=qemu" | ||||||
|             bootpartition="false" |             bootpartition="false" | ||||||
|             bootkernel="custom" |             bootkernel="custom" | ||||||
|             devicepersistency="by-uuid" |             devicepersistency="by-uuid" | ||||||
| @@ -592,7 +765,7 @@ | |||||||
|             <systemdisk> |             <systemdisk> | ||||||
|                 <volume name="home"/> |                 <volume name="home"/> | ||||||
|                 <volume name="root"/> |                 <volume name="root"/> | ||||||
|  		<volume name="opt"/> |                 <volume name="opt"/> | ||||||
|                 <volume name="srv"/> |                 <volume name="srv"/> | ||||||
|                 <volume name="boot/grub2/arm64-efi" mountpoint="boot/grub2/arm64-efi"/> |                 <volume name="boot/grub2/arm64-efi" mountpoint="boot/grub2/arm64-efi"/> | ||||||
|                 <volume name="boot/writable"/> |                 <volume name="boot/writable"/> | ||||||
| @@ -603,6 +776,161 @@ | |||||||
|         </type> |         </type> | ||||||
|     </preferences> |     </preferences> | ||||||
|  |  | ||||||
|  |     <preferences profiles="ppc64le-512ss"> | ||||||
|  |         <version>6.1</version> | ||||||
|  |         <packagemanager>zypper</packagemanager> | ||||||
|  |         <bootsplash-theme>SLE</bootsplash-theme> | ||||||
|  |         <bootloader-theme>SLE</bootloader-theme> | ||||||
|  |         <rpm-excludedocs>true</rpm-excludedocs> | ||||||
|  |         <locale>en_US</locale> | ||||||
|  |         <!-- Use ignition.platform.id=metal to avoid bsc#1227689 --> | ||||||
|  |         <type | ||||||
|  |             image="oem" | ||||||
|  |             filesystem="btrfs" | ||||||
|  |             firmware="ofw" | ||||||
|  |             kernelcmdline="console=hvc0,115200 security=selinux selinux=1 quiet systemd.show_status=1 net.ifnames=0 ignition.platform.id=metal" | ||||||
|  |             bootpartition="false" | ||||||
|  |             bootkernel="custom" | ||||||
|  |             devicepersistency="by-uuid" | ||||||
|  |             btrfs_root_is_snapshot="true" | ||||||
|  |             btrfs_root_is_readonly_snapshot="true" | ||||||
|  |             btrfs_quota_groups="true" | ||||||
|  |         > | ||||||
|  |             <systemdisk> | ||||||
|  |                 <volume name="home"/> | ||||||
|  |                 <volume name="root"/> | ||||||
|  | 		<!-- on tmpfs jsc#SMO-2                <volume name="tmp"/> --> | ||||||
|  |                 <volume name="opt"/> | ||||||
|  |                 <volume name="srv"/> | ||||||
|  |                 <volume name="boot/grub2/powerpc-ieee1275"/> | ||||||
|  |                 <volume name="boot/writable"/> | ||||||
|  | 		<volume name="usr/local"/> | ||||||
|  | 		<volume name="var" copy_on_write="false"/> | ||||||
|  |             </systemdisk> | ||||||
|  |         </type> | ||||||
|  |     </preferences> | ||||||
|  |     <preferences profiles="ppc64le-4096ss"> | ||||||
|  |         <version>6.1</version> | ||||||
|  |         <packagemanager>zypper</packagemanager> | ||||||
|  |         <bootsplash-theme>SLE</bootsplash-theme> | ||||||
|  |         <bootloader-theme>SLE</bootloader-theme> | ||||||
|  |         <rpm-excludedocs>true</rpm-excludedocs> | ||||||
|  |         <locale>en_US</locale> | ||||||
|  |         <!-- TODO: supposedly this is needed as type attribute, but kiwi needs patching | ||||||
|  |              disk_start_sector="256" --> | ||||||
|  |         <!-- Use ignition.platform.id=metal to avoid bsc#1227689 --> | ||||||
|  |         <type | ||||||
|  |             image="oem" | ||||||
|  |             target_blocksize="4096" | ||||||
|  |             filesystem="btrfs" | ||||||
|  |             firmware="ofw" | ||||||
|  |             kernelcmdline="console=hvc0,115200 security=selinux selinux=1 quiet systemd.show_status=1 net.ifnames=0 ignition.platform.id=metal" | ||||||
|  |             bootpartition="false" | ||||||
|  |             bootkernel="custom" | ||||||
|  |             devicepersistency="by-uuid" | ||||||
|  |             btrfs_root_is_snapshot="true" | ||||||
|  |             btrfs_root_is_readonly_snapshot="true" | ||||||
|  |             btrfs_quota_groups="true" | ||||||
|  |         > | ||||||
|  |             <systemdisk> | ||||||
|  |                 <volume name="home"/> | ||||||
|  |                 <volume name="root"/> | ||||||
|  | 		<!-- on tmpfs jsc#SMO-2                <volume name="tmp"/> --> | ||||||
|  |                 <volume name="opt"/> | ||||||
|  |                 <volume name="srv"/> | ||||||
|  |                 <volume name="boot/grub2/powerpc-ieee1275"/> | ||||||
|  |                 <volume name="boot/writable"/> | ||||||
|  | 		<volume name="usr/local"/> | ||||||
|  | 		<volume name="var" copy_on_write="false"/> | ||||||
|  |             </systemdisk> | ||||||
|  |         </type> | ||||||
|  |     </preferences> | ||||||
|  |  | ||||||
|  |     <preferences profiles="ppc64le-512ss-self_install"> | ||||||
|  |         <version>6.1</version> | ||||||
|  |         <packagemanager>zypper</packagemanager> | ||||||
|  |         <bootsplash-theme>SLE</bootsplash-theme> | ||||||
|  |         <bootloader-theme>SLE</bootloader-theme> | ||||||
|  |         <rpm-excludedocs>true</rpm-excludedocs> | ||||||
|  |         <locale>en_US</locale> | ||||||
|  |         <!-- Use ignition.platform.id=metal to avoid bsc#1227689 --> | ||||||
|  |         <type | ||||||
|  |             image="oem" | ||||||
|  |             installiso="true" | ||||||
|  |             installpxe="true" | ||||||
|  |             filesystem="btrfs" | ||||||
|  |             firmware="ofw" | ||||||
|  |             kernelcmdline="console=hvc0,115200 security=selinux selinux=1 quiet net.ifnames=0 ignition.platform.id=metal" | ||||||
|  |             bootpartition="false" | ||||||
|  |             bootkernel="custom" | ||||||
|  |             devicepersistency="by-uuid" | ||||||
|  |             btrfs_root_is_snapshot="true" | ||||||
|  |             btrfs_root_is_readonly_snapshot="true" | ||||||
|  |             btrfs_quota_groups="true" | ||||||
|  |         > | ||||||
|  |             <installmedia> | ||||||
|  |                 <initrd action="omit"> | ||||||
|  |                     <dracut module="drm"/> | ||||||
|  |                 </initrd> | ||||||
|  |             </installmedia> | ||||||
|  |             <systemdisk> | ||||||
|  |                 <volume name="home"/> | ||||||
|  |                 <volume name="root"/> | ||||||
|  | 		<!-- on tmpfs jsc#SMO-2                <volume name="tmp"/> --> | ||||||
|  |                 <volume name="opt"/> | ||||||
|  |                 <volume name="srv"/> | ||||||
|  |                 <volume name="boot/grub2/powerpc-ieee1275"/> | ||||||
|  |                 <volume name="boot/writable"/> | ||||||
|  | 		<volume name="usr/local"/> | ||||||
|  | 		<volume name="var" copy_on_write="false"/> | ||||||
|  |             </systemdisk> | ||||||
|  |         </type> | ||||||
|  |     </preferences> | ||||||
|  |     <preferences profiles="ppc64le-4096ss-self_install"> | ||||||
|  |         <version>6.1</version> | ||||||
|  |         <packagemanager>zypper</packagemanager> | ||||||
|  |         <bootsplash-theme>SLE</bootsplash-theme> | ||||||
|  |         <bootloader-theme>SLE</bootloader-theme> | ||||||
|  |         <rpm-excludedocs>true</rpm-excludedocs> | ||||||
|  |         <locale>en_US</locale> | ||||||
|  |         <!-- TODO: supposedly this is needed as type attribute, but kiwi needs patching | ||||||
|  |              disk_start_sector="256" --> | ||||||
|  |         <!-- Use ignition.platform.id=metal to avoid bsc#1227689 --> | ||||||
|  |         <type | ||||||
|  |             image="oem" | ||||||
|  |             installiso="true" | ||||||
|  |             installpxe="true" | ||||||
|  |             target_blocksize="4096" | ||||||
|  |             filesystem="btrfs" | ||||||
|  |             firmware="ofw" | ||||||
|  |             kernelcmdline="console=hvc0,115200 security=selinux selinux=1 quiet systemd.show_status=1 net.ifnames=0 ignition.platform.id=metal" | ||||||
|  |             bootpartition="false" | ||||||
|  |             bootkernel="custom" | ||||||
|  |             devicepersistency="by-uuid" | ||||||
|  |             btrfs_root_is_snapshot="true" | ||||||
|  |             btrfs_root_is_readonly_snapshot="true" | ||||||
|  |             btrfs_quota_groups="true" | ||||||
|  |         > | ||||||
|  |             <installmedia> | ||||||
|  |                 <initrd action="omit"> | ||||||
|  |                     <dracut module="drm"/> | ||||||
|  |                 </initrd> | ||||||
|  |             </installmedia> | ||||||
|  |             <systemdisk> | ||||||
|  |                 <volume name="home"/> | ||||||
|  |                 <volume name="root"/> | ||||||
|  | 		<!-- on tmpfs jsc#SMO-2                <volume name="tmp"/> --> | ||||||
|  |                 <volume name="opt"/> | ||||||
|  |                 <volume name="srv"/> | ||||||
|  |                 <volume name="boot/grub2/powerpc-ieee1275"/> | ||||||
|  |                 <volume name="boot/writable"/> | ||||||
|  | 		<volume name="usr/local"/> | ||||||
|  | 		<volume name="var" copy_on_write="false"/> | ||||||
|  |             </systemdisk> | ||||||
|  |         </type> | ||||||
|  |     </preferences> | ||||||
|  |  | ||||||
|  |  | ||||||
|    <repository type="rpm-md" > |    <repository type="rpm-md" > | ||||||
|         <source path='obsrepositories:/'/> |         <source path='obsrepositories:/'/> | ||||||
|     </repository> |     </repository> | ||||||
| @@ -616,11 +944,12 @@ | |||||||
| 	<package name="patterns-base-kvm_host"/> | 	<package name="patterns-base-kvm_host"/> | ||||||
| 	<package name="lzop"/> | 	<package name="lzop"/> | ||||||
|         <namedCollection name="container_runtime_podman"/> |         <namedCollection name="container_runtime_podman"/> | ||||||
|         <package name="patterns-container-runtime_podman"/>  |         <package name="patterns-container-runtime_podman"/> | ||||||
|         <namedCollection name="cockpit"/> |         <namedCollection name="cockpit"/> | ||||||
|         <package name="patterns-base-cockpit"/> |         <package name="patterns-base-cockpit"/> | ||||||
|         <namedCollection name="selinux"/> |         <namedCollection name="selinux"/> | ||||||
|         <package name="patterns-base-selinux"/> |         <package name="patterns-base-selinux"/> | ||||||
|  |         <package name="policycoreutils-python-utils"/> | ||||||
|         <package name="suseconnect-ng"/> |         <package name="suseconnect-ng"/> | ||||||
|         <package name="SL-Micro-release"/> |         <package name="SL-Micro-release"/> | ||||||
|         <package name="grub2-branding-SLE" arch="x86_64,aarch64"/> |         <package name="grub2-branding-SLE" arch="x86_64,aarch64"/> | ||||||
| @@ -628,7 +957,6 @@ | |||||||
|         <package name="firewalld"/> |         <package name="firewalld"/> | ||||||
|         <package name="wpa_supplicant" arch="x86_64,aarch64"/> |         <package name="wpa_supplicant" arch="x86_64,aarch64"/> | ||||||
| 	<package name="libpwquality-tools"/> | 	<package name="libpwquality-tools"/> | ||||||
|         <!-- <package name="k3s-install"/> --> |  | ||||||
|     </packages> |     </packages> | ||||||
|  |  | ||||||
|     <packages type="image" profiles="x86-encrypted,x86-rt-encrypted"> |     <packages type="image" profiles="x86-encrypted,x86-rt-encrypted"> | ||||||
| @@ -647,11 +975,10 @@ | |||||||
|         <namedCollection name="base_transactional"/> |         <namedCollection name="base_transactional"/> | ||||||
|         <package name="patterns-base-transactional"/> |         <package name="patterns-base-transactional"/> | ||||||
|         <namedCollection name="container_runtime_podman"/> |         <namedCollection name="container_runtime_podman"/> | ||||||
|         <package name="patterns-container-runtime_podman"/>  |         <package name="patterns-container-runtime_podman"/> | ||||||
|         <namedCollection name="cockpit"/> |  | ||||||
|         <package name="patterns-base-cockpit"/> |  | ||||||
|         <namedCollection name="selinux"/> |         <namedCollection name="selinux"/> | ||||||
|         <package name="patterns-base-selinux"/> |         <package name="patterns-base-selinux"/> | ||||||
|  |         <package name="policycoreutils-python-utils"/> | ||||||
|         <package name="suseconnect-ng"/> |         <package name="suseconnect-ng"/> | ||||||
|         <package name="SL-Micro-release"/> |         <package name="SL-Micro-release"/> | ||||||
|         <package name="grub2-branding-SLE" arch="x86_64,aarch64"/> |         <package name="grub2-branding-SLE" arch="x86_64,aarch64"/> | ||||||
| @@ -703,7 +1030,7 @@ | |||||||
|         <package name="NetworkManager"/> |         <package name="NetworkManager"/> | ||||||
|         <package name="NetworkManager-branding-SLE"/> |         <package name="NetworkManager-branding-SLE"/> | ||||||
| 	<package name="ModemManager"/> | 	<package name="ModemManager"/> | ||||||
| 	<!-- FIXME does not build without control file which is obsolete  | 	<!-- FIXME does not build without control file which is obsolete | ||||||
| 	<package name="live-add-yast-repos"/> --> | 	<package name="live-add-yast-repos"/> --> | ||||||
| 	<package name="parted"/> <!-- seems missing to deploy the image --> | 	<package name="parted"/> <!-- seems missing to deploy the image --> | ||||||
|     </packages> |     </packages> | ||||||
| @@ -713,7 +1040,8 @@ | |||||||
|         <package name="grub2-x86_64-efi" arch="x86_64"/> |         <package name="grub2-x86_64-efi" arch="x86_64"/> | ||||||
|         <package name="grub2-arm64-efi" arch="aarch64"/> |         <package name="grub2-arm64-efi" arch="aarch64"/> | ||||||
|         <package name="grub2-s390x-emu" arch="s390x"/> |         <package name="grub2-s390x-emu" arch="s390x"/> | ||||||
|         <package name="grub2-branding-SLE" bootinclude="true" arch="x86_64,aarch64"/> |         <package name="grub2-powerpc-ieee1275" arch="ppc64le"/> | ||||||
|  |         <package name="grub2-branding-SLE" bootinclude="true" arch="x86_64,aarch64,ppc64le"/> | ||||||
|         <package name="grub2-snapper-plugin"/> |         <package name="grub2-snapper-plugin"/> | ||||||
|         <package name="shim" arch="x86_64,aarch64"/> |         <package name="shim" arch="x86_64,aarch64"/> | ||||||
| 	<package name="mokutil" arch="x86_64,aarch64"/> | 	<package name="mokutil" arch="x86_64,aarch64"/> | ||||||
| @@ -721,46 +1049,46 @@ | |||||||
| 	    <package name="kpartx" arch="s390x"/>--> <!-- previous releases picked it always, now kiwi picks partx instead --> | 	    <package name="kpartx" arch="s390x"/>--> <!-- previous releases picked it always, now kiwi picks partx instead --> | ||||||
|     </packages> |     </packages> | ||||||
|     <!-- rpi kernel-default-base does not provide all necessary drivers --> |     <!-- rpi kernel-default-base does not provide all necessary drivers --> | ||||||
|     <packages type="image" profiles="x86,x86-encrypted,x86-legacy,x86-self_install,x86-vmware,x86-qcow,aarch64-qcow,s390-kvm,s390-dasd,s390-fba"> |     <packages type="image" profiles="rpi,aarch64-self_install,x86,x86-encrypted,x86-legacy,x86-self_install,x86-vmware,x86-qcow,aarch64,aarch64-qcow,s390-kvm,s390-dasd,s390-fba,s390-fcp,ppc64le-512ss,ppc64le-4096ss,ppc64le-512ss-self_install,ppc64le-4096ss-self_install"> | ||||||
|         <package name="kernel-default"/> |         <package name="kernel-default"/> | ||||||
|         <package name="kernel-firmware-all"/> |         <package name="kernel-firmware-all"/> | ||||||
|     </packages> |     </packages> | ||||||
|     <packages type="image" profiles="x86-rt,x86-rt-self_install,x86-rt-encrypted"> |     <packages type="image" profiles="x86-rt,x86-rt-self_install,x86-rt-encrypted,aarch64-rt,aarch64-rt-rpi,aarch64-rt-self_install"> | ||||||
|         <package name="kernel-rt"/> |         <package name="kernel-rt"/> | ||||||
| 	<package name="kernel-firmware-all"/> |         <package name="kernel-firmware-all"/> | ||||||
| 	<!-- FIXME intentionally removed from ALP code stream  | 	<!-- FIXME intentionally removed from ALP code stream | ||||||
| 	<package name="cpuset"/> --> |         <package name="cpuset"/> --> | ||||||
|     </packages> |     </packages> | ||||||
|     <!-- makes the image build, but also include kernel-default |     <packages type="image" profiles="s390-kvm,s390-dasd,s390-fba,s390-fcp"> | ||||||
|     <packages type="image" profiles="x86-rt-encrypted"> |         <package name="dracut-kiwi-oem-dump"/> | ||||||
|         <package name="kernel-default-extra"/> |  | ||||||
|     </packages> --> |  | ||||||
|     <packages type="image" profiles="s390-kvm,s390-dasd,s390-fba"> |  | ||||||
|         <package name="dracut-kiwi-oem-repart"/> |         <package name="dracut-kiwi-oem-repart"/> | ||||||
|         <package name="blog"/> |         <package name="blog"/> | ||||||
|     </packages> |     </packages> | ||||||
|     <packages type="image" profiles="x86,x86-encrypted,x86-rt-encrypted,x86-self_install,x86-legacy,x86-vmware,x86-rt,x86-rt-self_install,x86-qcow,aarch64-qcow,rpi,aarch64-self_install"> |     <!-- FCP is usually used multipathed. --> | ||||||
|  |     <packages type="image" profiles="s390-fcp"> | ||||||
|  |         <package name="multipath-tools"/> | ||||||
|  |     </packages> | ||||||
|  |     <packages type="image" profiles="x86,x86-encrypted,x86-rt-encrypted,x86-self_install,x86-legacy,x86-vmware,x86-rt,x86-rt-self_install,x86-qcow,aarch64,aarch64-qcow,rpi,aarch64-self_install,aarch64-rt,aarch64-rt-rpi,aarch64-rt-self_install,ppc64le-512ss,ppc64le-4096ss,ppc64le-512ss-self_install,ppc64le-4096ss-self_install"> | ||||||
|         <package name="dracut-kiwi-oem-repart"/> |         <package name="dracut-kiwi-oem-repart"/> | ||||||
|         <package name="dracut-kiwi-oem-dump"/> |         <package name="dracut-kiwi-oem-dump"/> | ||||||
|     </packages> |     </packages> | ||||||
|     <packages type="image" profiles="rpi,aarch64-self_install"> |     <packages type="image" profiles="rpi,aarch64-self_install,aarch64-rt,aarch64-rt-rpi,aarch64-rt-self_install"> | ||||||
|         <package name="raspberrypi-firmware" arch="aarch64"/> |         <package name="raspberrypi-firmware" arch="aarch64"/> | ||||||
|         <package name="raspberrypi-firmware-config" arch="aarch64"/> |         <package name="raspberrypi-firmware-config" arch="aarch64"/> | ||||||
|         <package name="raspberrypi-firmware-dt" arch="aarch64"/> |         <package name="raspberrypi-firmware-dt" arch="aarch64"/> | ||||||
|         <package name="u-boot-rpiarm64" arch="aarch64"/> |         <package name="u-boot-rpiarm64" arch="aarch64"/> | ||||||
|  |     </packages> | ||||||
|  |     <packages type="image" profiles="rpi,aarch64-self_install,aarch64-rt,aarch64-rt-self_install"> | ||||||
|         <package name="dracut-kiwi-oem-repart"/> |         <package name="dracut-kiwi-oem-repart"/> | ||||||
|         <package name="bcm43xx-firmware"/> |         <package name="bcm43xx-firmware"/> | ||||||
|         <package name="kernel-firmware-all"/><!-- Fix choice between kernel-firmware and kernel-firmware-all --> |  | ||||||
|         <package name="wireless-regdb"/> |         <package name="wireless-regdb"/> | ||||||
|         <package name="wireless-tools"/> |         <package name="wireless-tools"/> | ||||||
|         <package name="wpa_supplicant"/> |         <package name="wpa_supplicant"/> | ||||||
|         <package name="grub2-arm64-efi"/> |         <package name="grub2-arm64-efi"/> | ||||||
|         <!-- kernel-default-base does not have all required drivers --> |  | ||||||
|         <package name="kernel-default"/> |  | ||||||
|     </packages> |     </packages> | ||||||
|     <packages type="bootstrap"> |     <packages type="bootstrap"> | ||||||
|         <package name="coreutils"/> |  | ||||||
|         <package name="filesystem"/> |         <package name="filesystem"/> | ||||||
|  |         <package name="coreutils"/> | ||||||
|         <package name="ca-certificates"/> |         <package name="ca-certificates"/> | ||||||
|         <package name="ca-certificates-mozilla"/> |         <package name="ca-certificates-mozilla"/> | ||||||
|     </packages> |     </packages> | ||||||
| @@ -774,4 +1102,14 @@ | |||||||
|     <packages type="image" profiles="x86-qcow,aarch64-qcow"> |     <packages type="image" profiles="x86-qcow,aarch64-qcow"> | ||||||
|         <package name="qemu-guest-agent"/> |         <package name="qemu-guest-agent"/> | ||||||
|     </packages> |     </packages> | ||||||
|  |  | ||||||
|  |     <!-- jsc#PED-8599 --> | ||||||
|  |     <packages type="image" profiles="Base,Base-encrypted,Base-RT,Base-RT-encrypted,Base-fba,Base-dasd,Base-fcp,Base-512,Base-4096,Default,Default-encrypted,Default-fba,Default-dasd,Default-fcp,Default-512,Default-4096"> | ||||||
|  |         <package name="usbguard"/> | ||||||
|  |     </packages> | ||||||
|  |  | ||||||
|  |     <!-- jsc#PED-8788 --> | ||||||
|  |     <packages type="image" profiles="Base-RT,Base-RT-encrypted,x86-rt-encrypted,x86-rt,x86-rt-self_install,aarch64-rt,aarch64-rt-self_install"> | ||||||
|  |         <package name="stalld"/> | ||||||
|  |     </packages> | ||||||
| </image> | </image> | ||||||
|   | |||||||
| @@ -30,9 +30,21 @@ | |||||||
|         <profile name="x86-self_install" description="Raw disk for x86_64 - uEFI" arch="x86_64"> |         <profile name="x86-self_install" description="Raw disk for x86_64 - uEFI" arch="x86_64"> | ||||||
|             <requires profile="bootloader"/> |             <requires profile="bootloader"/> | ||||||
|         </profile> |         </profile> | ||||||
|  |         <profile name="aarch64" description="Raw disk for aarch64 - uEFI" arch="aarch64"> | ||||||
|  |             <requires profile="bootloader"/> | ||||||
|  |         </profile> | ||||||
|         <profile name="aarch64-self_install" description="Raw disk for aarch64" arch="aarch64"> |         <profile name="aarch64-self_install" description="Raw disk for aarch64" arch="aarch64"> | ||||||
|             <requires profile="bootloader"/> |             <requires profile="bootloader"/> | ||||||
|         </profile> |         </profile> | ||||||
|  |         <profile name="aarch64-rt" description="Raw disk for aarch64 with RT kernel" arch="aarch64"> | ||||||
|  |             <requires profile="bootloader"/> | ||||||
|  |         </profile> | ||||||
|  |         <profile name="aarch64-rt-rpi" description="Raw disk for aarch64 with RT kernel on Raspberry Pi" arch="aarch64"> | ||||||
|  |             <requires profile="bootloader"/> | ||||||
|  |         </profile> | ||||||
|  |         <profile name="aarch64-rt-self_install" description="Raw disk for aarch64 with RT kernel" arch="aarch64"> | ||||||
|  |             <requires profile="bootloader"/> | ||||||
|  |         </profile> | ||||||
|         <profile name="x86-legacy" description="Raw disk for x86_64 - legacy boot" arch="x86_64"> |         <profile name="x86-legacy" description="Raw disk for x86_64 - legacy boot" arch="x86_64"> | ||||||
|             <requires profile="bootloader"/> |             <requires profile="bootloader"/> | ||||||
|         </profile> |         </profile> | ||||||
| @@ -63,6 +75,21 @@ | |||||||
|         <profile name="s390-fba" description="Raw disk for s390 - DASD" arch="s390x"> |         <profile name="s390-fba" description="Raw disk for s390 - DASD" arch="s390x"> | ||||||
|             <requires profile="bootloader"/> |             <requires profile="bootloader"/> | ||||||
|         </profile> |         </profile> | ||||||
|  |         <profile name="s390-fcp" description="Raw disk for s390 - SCSI" arch="s390x"> | ||||||
|  |             <requires profile="bootloader"/> | ||||||
|  |         </profile> | ||||||
|  |         <profile name="ppc64le-512ss" description="Raw disk for PPc64 - 512 sector size" arch="ppc64le"> | ||||||
|  |             <requires profile="bootloader"/> | ||||||
|  |         </profile> | ||||||
|  |         <profile name="ppc64le-4096ss" description="Raw disk for PPc64 - 4096 sector size" arch="ppc64le"> | ||||||
|  |             <requires profile="bootloader"/> | ||||||
|  |         </profile> | ||||||
|  |         <profile name="ppc64le-512ss-self_install" description="Raw disk for PPc64 - 512 sector size" arch="ppc64le"> | ||||||
|  |             <requires profile="bootloader"/> | ||||||
|  |         </profile> | ||||||
|  |         <profile name="ppc64le-4096ss-self_install" description="Raw disk for PPc64 - 4096 sector size" arch="ppc64le"> | ||||||
|  |             <requires profile="bootloader"/> | ||||||
|  |         </profile> | ||||||
|         <!-- Images (flavor + platform) --> |         <!-- Images (flavor + platform) --> | ||||||
|         <profile name="Default" description="SL Micro with Podman and KVM as raw image with uEFI boot" arch="x86_64"> |         <profile name="Default" description="SL Micro with Podman and KVM as raw image with uEFI boot" arch="x86_64"> | ||||||
|             <requires profile="full"/> |             <requires profile="full"/> | ||||||
| @@ -124,10 +151,18 @@ | |||||||
|             <requires profile="self_install"/> |             <requires profile="self_install"/> | ||||||
|         </profile> |         </profile> | ||||||
|         <profile name="Default" description="SL Micro with Podman and KVM as raw image with uEFI boot" arch="aarch64"> |         <profile name="Default" description="SL Micro with Podman and KVM as raw image with uEFI boot" arch="aarch64"> | ||||||
|  |             <requires profile="full"/> | ||||||
|  |             <requires profile="aarch64"/> | ||||||
|  |         </profile> | ||||||
|  |         <profile name="Default-RPi" description="SL Micro with Podman and KVM as raw image with uEFI boot" arch="aarch64"> | ||||||
|             <requires profile="full"/> |             <requires profile="full"/> | ||||||
|             <requires profile="rpi"/> |             <requires profile="rpi"/> | ||||||
|         </profile> |         </profile> | ||||||
|         <profile name="Base" description="SL Micro with Podman as raw image with uEFI boot" arch="aarch64"> |         <profile name="Base" description="SL Micro with Podman as raw image with uEFI boot" arch="aarch64"> | ||||||
|  |             <requires profile="container-host"/> | ||||||
|  |             <requires profile="aarch64"/> | ||||||
|  |         </profile> | ||||||
|  |         <profile name="Base-RPi" description="SL Micro with Podman as raw image with uEFI boot" arch="aarch64"> | ||||||
|             <requires profile="container-host"/> |             <requires profile="container-host"/> | ||||||
|             <requires profile="rpi"/> |             <requires profile="rpi"/> | ||||||
|         </profile> |         </profile> | ||||||
| @@ -140,6 +175,19 @@ | |||||||
|             <requires profile="x86-rt-self_install"/> |             <requires profile="x86-rt-self_install"/> | ||||||
|             <requires profile="self_install"/> |             <requires profile="self_install"/> | ||||||
|         </profile> |         </profile> | ||||||
|  |         <profile name="Base-RT" description="SL Micro with Podman as raw image with uEFI boot" arch="aarch64"> | ||||||
|  |             <requires profile="container-host"/> | ||||||
|  |             <requires profile="aarch64-rt"/> | ||||||
|  |         </profile> | ||||||
|  |         <profile name="Base-RT-RPi" description="SL Micro with Podman as raw image with uEFI boot" arch="aarch64"> | ||||||
|  |             <requires profile="container-host"/> | ||||||
|  |             <requires profile="aarch64-rt-rpi"/> | ||||||
|  |         </profile> | ||||||
|  |         <profile name="Base-RT-SelfInstall" description="SL Micro with Podman as raw image with uEFI boot - SelfInstall" arch="aarch64"> | ||||||
|  |             <requires profile="container-host"/> | ||||||
|  |             <requires profile="aarch64-rt-self_install"/> | ||||||
|  |             <requires profile="self_install"/> | ||||||
|  |         </profile> | ||||||
|         <profile name="Default-qcow" description="SL Micro with Podman and KVM as raw image for KVM on System z" arch="s390x"> |         <profile name="Default-qcow" description="SL Micro with Podman and KVM as raw image for KVM on System z" arch="s390x"> | ||||||
|             <requires profile="full"/> |             <requires profile="full"/> | ||||||
|             <requires profile="s390-kvm"/> |             <requires profile="s390-kvm"/> | ||||||
| @@ -164,6 +212,14 @@ | |||||||
|             <requires profile="container-host"/> |             <requires profile="container-host"/> | ||||||
|             <requires profile="s390-fba"/> |             <requires profile="s390-fba"/> | ||||||
|         </profile> |         </profile> | ||||||
|  |         <profile name="Default-fcp" description="SL Micro with Podman and KVM as raw image for zFCP on System z" arch="s390x"> | ||||||
|  |             <requires profile="full"/> | ||||||
|  |             <requires profile="s390-fcp"/> | ||||||
|  |         </profile> | ||||||
|  |         <profile name="Base-fcp" description="SL Micro with Podman as raw image for zFCP on System z" arch="s390x"> | ||||||
|  |             <requires profile="container-host"/> | ||||||
|  |             <requires profile="s390-fcp"/> | ||||||
|  |         </profile> | ||||||
|         <profile name="Default-legacy" description="SL Micro with Podman as raw image with legacy boot" arch="x86_64"> |         <profile name="Default-legacy" description="SL Micro with Podman as raw image with legacy boot" arch="x86_64"> | ||||||
|             <requires profile="full"/> |             <requires profile="full"/> | ||||||
|             <requires profile="x86-legacy"/> |             <requires profile="x86-legacy"/> | ||||||
| @@ -184,10 +240,47 @@ | |||||||
| 	    <requires profile="container-host"/> | 	    <requires profile="container-host"/> | ||||||
| 	    <requires profile="aarch64-qcow"/> | 	    <requires profile="aarch64-qcow"/> | ||||||
|         </profile> |         </profile> | ||||||
|  |  | ||||||
|  | 	<profile name="Base-512" description="SL Micro with Podman as raw image for ppc64le with 512b sector size" arch="ppc64le"> | ||||||
|  |             <requires profile="container-host"/> | ||||||
|  |             <requires profile="ppc64le-512ss"/> | ||||||
|  |         </profile> | ||||||
|  | 	<profile name="Base-4096" description="SL Micro with Podman as raw image for ppc64le with 4096b sector size" arch="ppc64le"> | ||||||
|  |             <requires profile="container-host"/> | ||||||
|  |             <requires profile="ppc64le-4096ss"/> | ||||||
|  |         </profile> | ||||||
|  | 	<profile name="Base-512-SelfInstall" description="SL Micro with Podman as self-install image for ppc64le with 512b sector size" arch="ppc64le"> | ||||||
|  |             <requires profile="container-host"/> | ||||||
|  |             <requires profile="ppc64le-512ss-self_install"/> | ||||||
|  |             <requires profile="self_install"/> | ||||||
|  |         </profile> | ||||||
|  | 	<profile name="Base-4096-SelfInstall" description="SL Micro with Podman as self-install image for ppc64le with 512b sector size" arch="ppc64le"> | ||||||
|  |             <requires profile="container-host"/> | ||||||
|  |             <requires profile="ppc64le-4096ss-self_install"/> | ||||||
|  |             <requires profile="self_install"/> | ||||||
|  |         </profile> | ||||||
|  | 	<profile name="Default-512" description="SL Micro with Podman and KVM as raw image for ppc64le with 512b sector size" arch="ppc64le"> | ||||||
|  |             <requires profile="full"/> | ||||||
|  |             <requires profile="ppc64le-512ss"/> | ||||||
|  |         </profile> | ||||||
|  | 	<profile name="Default-4096" description="SL Micro with Podman and KVM as raw image for ppc64le with 4096b sector size" arch="ppc64le"> | ||||||
|  |             <requires profile="full"/> | ||||||
|  |             <requires profile="ppc64le-4096ss"/> | ||||||
|  |         </profile> | ||||||
|  | 	<profile name="Default-512-SelfInstall" description="SL Micro with Podman and KVM as self-install image for ppc64le with 512b sector size" arch="ppc64le"> | ||||||
|  |             <requires profile="full"/> | ||||||
|  |             <requires profile="ppc64le-512ss-self_install"/> | ||||||
|  |             <requires profile="self_install"/> | ||||||
|  |         </profile> | ||||||
|  | 	<profile name="Default-4096-SelfInstall" description="SL Micro with Podman and KVM as self-install image for ppc64le with 512b sector size" arch="ppc64le"> | ||||||
|  |             <requires profile="full"/> | ||||||
|  |             <requires profile="ppc64le-4096ss-self_install"/> | ||||||
|  |             <requires profile="self_install"/> | ||||||
|  |         </profile> | ||||||
|     </profiles> |     </profiles> | ||||||
|  |  | ||||||
|     <preferences profiles="x86-encrypted,x86-rt-encrypted"> |     <preferences profiles="x86-encrypted,x86-rt-encrypted"> | ||||||
|         <version>6.0</version> |         <version>6.1</version> | ||||||
|         <packagemanager>zypper</packagemanager> |         <packagemanager>zypper</packagemanager> | ||||||
|         <bootsplash-theme>SLE</bootsplash-theme> |         <bootsplash-theme>SLE</bootsplash-theme> | ||||||
|         <bootloader-theme>SLE</bootloader-theme> |         <bootloader-theme>SLE</bootloader-theme> | ||||||
| @@ -198,7 +291,7 @@ | |||||||
|             initrd_system="dracut" |             initrd_system="dracut" | ||||||
|             filesystem="btrfs" |             filesystem="btrfs" | ||||||
|             firmware="uefi" |             firmware="uefi" | ||||||
|             kernelcmdline="console=ttyS0,115200 console=tty0 security=selinux selinux=1 quiet net.ifnames=0" |             kernelcmdline="console=ttyS0,115200 console=tty0 security=selinux selinux=1 quiet systemd.show_status=1 net.ifnames=0" | ||||||
|             bootpartition="false" |             bootpartition="false" | ||||||
|             bootkernel="custom" |             bootkernel="custom" | ||||||
|             devicepersistency="by-uuid" |             devicepersistency="by-uuid" | ||||||
| @@ -213,7 +306,7 @@ | |||||||
|             efipartsize="200" |             efipartsize="200" | ||||||
|         > |         > | ||||||
|             <luksformat> |             <luksformat> | ||||||
|                 <option name="--cipher" value="aes"/> |                 <option name="--cipher" value="aes-xts-plain64"/> | ||||||
|             </luksformat> |             </luksformat> | ||||||
|             <bootloader name="grub2" console="gfxterm" use_disk_password="true" /> |             <bootloader name="grub2" console="gfxterm" use_disk_password="true" /> | ||||||
|             <systemdisk> |             <systemdisk> | ||||||
| @@ -232,7 +325,7 @@ | |||||||
|         </type> |         </type> | ||||||
|     </preferences> |     </preferences> | ||||||
|     <preferences profiles="x86,x86-rt"> |     <preferences profiles="x86,x86-rt"> | ||||||
|         <version>6.0</version> |         <version>6.1</version> | ||||||
|         <packagemanager>zypper</packagemanager> |         <packagemanager>zypper</packagemanager> | ||||||
|         <bootsplash-theme>SLE</bootsplash-theme> |         <bootsplash-theme>SLE</bootsplash-theme> | ||||||
|         <bootloader-theme>SLE</bootloader-theme> |         <bootloader-theme>SLE</bootloader-theme> | ||||||
| @@ -243,7 +336,7 @@ | |||||||
|             initrd_system="dracut" |             initrd_system="dracut" | ||||||
|             filesystem="btrfs" |             filesystem="btrfs" | ||||||
|             firmware="uefi" |             firmware="uefi" | ||||||
|             kernelcmdline="console=ttyS0,115200 console=tty0 security=selinux selinux=1 quiet net.ifnames=0" |             kernelcmdline="console=ttyS0,115200 console=tty0 security=selinux selinux=1 quiet systemd.show_status=1 net.ifnames=0" | ||||||
|             bootpartition="false" |             bootpartition="false" | ||||||
|             bootkernel="custom" |             bootkernel="custom" | ||||||
|             devicepersistency="by-uuid" |             devicepersistency="by-uuid" | ||||||
| @@ -270,7 +363,7 @@ | |||||||
|     </preferences> |     </preferences> | ||||||
|  |  | ||||||
|     <preferences profiles="x86-self_install,x86-rt-self_install"> |     <preferences profiles="x86-self_install,x86-rt-self_install"> | ||||||
|         <version>6.0</version> |         <version>6.1</version> | ||||||
|         <packagemanager>zypper</packagemanager> |         <packagemanager>zypper</packagemanager> | ||||||
|         <bootsplash-theme>SLE</bootsplash-theme> |         <bootsplash-theme>SLE</bootsplash-theme> | ||||||
|         <bootloader-theme>SLE</bootloader-theme> |         <bootloader-theme>SLE</bootloader-theme> | ||||||
| @@ -280,11 +373,12 @@ | |||||||
|             image="oem" |             image="oem" | ||||||
|             initrd_system="dracut" |             initrd_system="dracut" | ||||||
|             installiso="true" |             installiso="true" | ||||||
|  |             installpxe="true" | ||||||
|             filesystem="btrfs" |             filesystem="btrfs" | ||||||
|             installboot="install" |             installboot="install" | ||||||
|             install_continue_on_timeout="false" |             install_continue_on_timeout="false" | ||||||
|             firmware="uefi" |             firmware="uefi" | ||||||
|             kernelcmdline="console=ttyS0,115200 console=tty0 security=selinux selinux=1 quiet net.ifnames=0" |             kernelcmdline="console=ttyS0,115200 console=tty0 security=selinux selinux=1 quiet systemd.show_status=1 net.ifnames=0" | ||||||
|             bootpartition="false" |             bootpartition="false" | ||||||
|             bootkernel="custom" |             bootkernel="custom" | ||||||
|             devicepersistency="by-uuid" |             devicepersistency="by-uuid" | ||||||
| @@ -310,8 +404,8 @@ | |||||||
|         </type> |         </type> | ||||||
|     </preferences> |     </preferences> | ||||||
|  |  | ||||||
|     <preferences profiles="rpi"> |     <preferences profiles="rpi,aarch64-rt-rpi"> | ||||||
|         <version>6.0</version> |         <version>6.1</version> | ||||||
|         <packagemanager>zypper</packagemanager> |         <packagemanager>zypper</packagemanager> | ||||||
|         <bootsplash-theme>SLE</bootsplash-theme> |         <bootsplash-theme>SLE</bootsplash-theme> | ||||||
|         <bootloader-theme>SLE</bootloader-theme> |         <bootloader-theme>SLE</bootloader-theme> | ||||||
| @@ -326,7 +420,7 @@ | |||||||
|             install_continue_on_timeout="false" |             install_continue_on_timeout="false" | ||||||
|             fsmountoptions="noatime" |             fsmountoptions="noatime" | ||||||
|             firmware="uefi" |             firmware="uefi" | ||||||
|             kernelcmdline="console=ttyS0,115200n8 console=tty0 security=selinux selinux=1 quiet net.ifnames=0" |             kernelcmdline="security=selinux selinux=1 quiet systemd.show_status=1 net.ifnames=0" | ||||||
|             bootpartition="false" |             bootpartition="false" | ||||||
|             devicepersistency="by-uuid" |             devicepersistency="by-uuid" | ||||||
|             btrfs_root_is_snapshot="true" |             btrfs_root_is_snapshot="true" | ||||||
| @@ -350,8 +444,9 @@ | |||||||
|             </systemdisk> |             </systemdisk> | ||||||
|         </type> |         </type> | ||||||
|     </preferences> |     </preferences> | ||||||
|     <preferences profiles="aarch64-self_install"> |  | ||||||
|         <version>6.0</version> |     <preferences profiles="aarch64,aarch64-rt"> | ||||||
|  |         <version>6.1</version> | ||||||
|         <packagemanager>zypper</packagemanager> |         <packagemanager>zypper</packagemanager> | ||||||
|         <bootsplash-theme>SLE</bootsplash-theme> |         <bootsplash-theme>SLE</bootsplash-theme> | ||||||
|         <bootloader-theme>SLE</bootloader-theme> |         <bootloader-theme>SLE</bootloader-theme> | ||||||
| @@ -364,9 +459,49 @@ | |||||||
|             filesystem="btrfs" |             filesystem="btrfs" | ||||||
|             installboot="install" |             installboot="install" | ||||||
|             install_continue_on_timeout="false" |             install_continue_on_timeout="false" | ||||||
|  |             fsmountoptions="noatime" | ||||||
|  |             firmware="uefi" | ||||||
|  |             kernelcmdline="security=selinux selinux=1 quiet systemd.show_status=1 net.ifnames=0" | ||||||
|  |             bootpartition="false" | ||||||
|  |             devicepersistency="by-uuid" | ||||||
|  |             btrfs_root_is_snapshot="true" | ||||||
|  |             efipartsize="128" | ||||||
|  |             btrfs_root_is_readonly_snapshot="true" | ||||||
|  |             btrfs_quota_groups="false" | ||||||
|  |             disk_start_sector="4096" | ||||||
|  |         > | ||||||
|  |             <bootloader name="grub2" console="gfxterm" timeout="3" /> | ||||||
|  |             <systemdisk> | ||||||
|  |                 <volume name="home"/> | ||||||
|  |                 <volume name="root"/> | ||||||
|  |                 <!-- on tmpfs jsc#SMO-2                <volume name="tmp"/> --> | ||||||
|  |                 <volume name="opt"/> | ||||||
|  |                 <volume name="srv"/> | ||||||
|  |                 <volume name="boot/grub2/arm64-efi" mountpoint="boot/grub2/arm64-efi"/> | ||||||
|  |                 <volume name="boot/writable"/> | ||||||
|  |                 <volume name="usr/local"/> | ||||||
|  |                 <volume name="var" copy_on_write="false"/> | ||||||
|  |             </systemdisk> | ||||||
|  |         </type> | ||||||
|  |     </preferences> | ||||||
|  |     <preferences profiles="aarch64-self_install,aarch64-rt-self_install"> | ||||||
|  |         <version>6.1</version> | ||||||
|  |         <packagemanager>zypper</packagemanager> | ||||||
|  |         <bootsplash-theme>SLE</bootsplash-theme> | ||||||
|  |         <bootloader-theme>SLE</bootloader-theme> | ||||||
|  |         <rpm-excludedocs>true</rpm-excludedocs> | ||||||
|  |         <locale>en_US</locale> | ||||||
|  |         <type | ||||||
|  |             image="oem" | ||||||
|  |             initrd_system="dracut" | ||||||
|  |             installiso="true" | ||||||
|  |             installpxe="true" | ||||||
|  |             filesystem="btrfs" | ||||||
|  |             installboot="install" | ||||||
|  |             install_continue_on_timeout="false" | ||||||
|             firmware="uefi" |             firmware="uefi" | ||||||
|             efipartsize="128" |             efipartsize="128" | ||||||
| 	    kernelcmdline="console=ttyS0,115200 console=tty0 security=selinux selinux=1 quiet net.ifnames=0" |             kernelcmdline="security=selinux selinux=1 quiet systemd.show_status=1 net.ifnames=0" | ||||||
|             bootpartition="false" |             bootpartition="false" | ||||||
|             bootkernel="custom" |             bootkernel="custom" | ||||||
|             devicepersistency="by-uuid" |             devicepersistency="by-uuid" | ||||||
| @@ -391,22 +526,22 @@ | |||||||
|     </preferences> |     </preferences> | ||||||
|  |  | ||||||
|     <preferences profiles="s390-kvm"> |     <preferences profiles="s390-kvm"> | ||||||
|         <version>6.0</version> |         <version>6.1</version> | ||||||
|         <packagemanager>zypper</packagemanager> |         <packagemanager>zypper</packagemanager> | ||||||
|         <bootsplash-theme>SLE</bootsplash-theme> |         <bootsplash-theme>SLE</bootsplash-theme> | ||||||
|         <bootloader-theme>SLE</bootloader-theme> |         <bootloader-theme>SLE</bootloader-theme> | ||||||
|         <rpm-excludedocs>true</rpm-excludedocs> |         <rpm-excludedocs>true</rpm-excludedocs> | ||||||
|         <locale>en_US</locale> |         <locale>en_US</locale> | ||||||
|  |         <!-- Use ignition.platform.id=metal to avoid bsc#1227689 --> | ||||||
|         <type |         <type | ||||||
|             image="oem" |             image="oem" | ||||||
|             filesystem="btrfs" |             filesystem="btrfs" | ||||||
|             bootpartition="true" |             bootpartition="true" | ||||||
|             bootpartsize="300" |             bootpartsize="300" | ||||||
|             bootfilesystem="ext2" |             bootfilesystem="ext4" | ||||||
|         initrd_system="dracut" |         initrd_system="dracut" | ||||||
|         format="qcow2" |         format="qcow2" | ||||||
|             kernelcmdline="hvc_iucv=8 TERM=dumb security=selinux selinux=1 quiet" |             kernelcmdline="security=selinux selinux=1 quiet systemd.show_status=1 ignition.platform.id=metal" | ||||||
|         devicepersistency="by-uuid" |         devicepersistency="by-uuid" | ||||||
|             btrfs_root_is_snapshot="true" |             btrfs_root_is_snapshot="true" | ||||||
|             btrfs_root_is_readonly_snapshot="true" |             btrfs_root_is_readonly_snapshot="true" | ||||||
| @@ -429,7 +564,7 @@ | |||||||
|  |  | ||||||
|  |  | ||||||
|     <preferences profiles="s390-dasd"> |     <preferences profiles="s390-dasd"> | ||||||
|         <version>6.0</version> |         <version>6.1</version> | ||||||
|         <packagemanager>zypper</packagemanager> |         <packagemanager>zypper</packagemanager> | ||||||
|         <bootsplash-theme>SLE</bootsplash-theme> |         <bootsplash-theme>SLE</bootsplash-theme> | ||||||
|         <bootloader-theme>SLE</bootloader-theme> |         <bootloader-theme>SLE</bootloader-theme> | ||||||
| @@ -440,9 +575,9 @@ | |||||||
|           filesystem="btrfs" |           filesystem="btrfs" | ||||||
|           bootpartition="true" |           bootpartition="true" | ||||||
|           bootpartsize="300" |           bootpartsize="300" | ||||||
|           bootfilesystem="ext2" |           bootfilesystem="ext4" | ||||||
|           initrd_system="dracut" |           initrd_system="dracut" | ||||||
|           kernelcmdline="hvc_iucv=8 TERM=dumb security=selinux selinux=1 quiet" |           kernelcmdline="hvc_iucv=8 TERM=dumb security=selinux selinux=1 quiet systemd.show_status=1" | ||||||
|           devicepersistency="by-uuid" |           devicepersistency="by-uuid" | ||||||
|           target_blocksize="4096" |           target_blocksize="4096" | ||||||
|           btrfs_root_is_snapshot="true" |           btrfs_root_is_snapshot="true" | ||||||
| @@ -467,7 +602,7 @@ | |||||||
|  |  | ||||||
|  |  | ||||||
|     <preferences profiles="s390-fba"> |     <preferences profiles="s390-fba"> | ||||||
|         <version>6.0</version> |         <version>6.1</version> | ||||||
|         <packagemanager>zypper</packagemanager> |         <packagemanager>zypper</packagemanager> | ||||||
|         <bootsplash-theme>SLE</bootsplash-theme> |         <bootsplash-theme>SLE</bootsplash-theme> | ||||||
|         <bootloader-theme>SLE</bootloader-theme> |         <bootloader-theme>SLE</bootloader-theme> | ||||||
| @@ -478,9 +613,9 @@ | |||||||
|           filesystem="btrfs" |           filesystem="btrfs" | ||||||
|           bootpartition="true" |           bootpartition="true" | ||||||
|           bootpartsize="300" |           bootpartsize="300" | ||||||
|           bootfilesystem="ext2" |           bootfilesystem="ext4" | ||||||
|           initrd_system="dracut" |           initrd_system="dracut" | ||||||
|           kernelcmdline="hvc_iucv=8 TERM=dumb security=selinux selinux=1 quiet" |           kernelcmdline="hvc_iucv=8 TERM=dumb security=selinux selinux=1 quiet systemd.show_status=1" | ||||||
|           devicepersistency="by-uuid" |           devicepersistency="by-uuid" | ||||||
|           btrfs_root_is_snapshot="true" |           btrfs_root_is_snapshot="true" | ||||||
|           btrfs_root_is_readonly_snapshot="true" |           btrfs_root_is_readonly_snapshot="true" | ||||||
| @@ -501,9 +636,47 @@ | |||||||
|         </type> |         </type> | ||||||
|     </preferences> |     </preferences> | ||||||
|  |  | ||||||
|  |     <preferences profiles="s390-fcp"> | ||||||
|  |         <version>6.1</version> | ||||||
|  |         <packagemanager>zypper</packagemanager> | ||||||
|  |         <bootsplash-theme>SLE</bootsplash-theme> | ||||||
|  |         <bootloader-theme>SLE</bootloader-theme> | ||||||
|  |         <rpm-excludedocs>true</rpm-excludedocs> | ||||||
|  |         <locale>en_US</locale> | ||||||
|  |         <type | ||||||
|  |           image="oem" | ||||||
|  |           filesystem="btrfs" | ||||||
|  |           installpxe="true" | ||||||
|  |           bootpartition="true" | ||||||
|  |           bootpartsize="300" | ||||||
|  |           bootfilesystem="ext4" | ||||||
|  |           initrd_system="dracut" | ||||||
|  |           kernelcmdline="hvc_iucv=8 TERM=dumb security=selinux selinux=1 quiet systemd.show_status=1" | ||||||
|  |           devicepersistency="by-uuid" | ||||||
|  |           btrfs_root_is_snapshot="true" | ||||||
|  |           btrfs_root_is_readonly_snapshot="true" | ||||||
|  |           btrfs_quota_groups="true" | ||||||
|  |         > | ||||||
|  |             <oemconfig> | ||||||
|  |                 <oem-multipath-scan>true</oem-multipath-scan> | ||||||
|  |             </oemconfig> | ||||||
|  |             <bootloader name="grub2_s390x_emu" console="serial" timeout="3" targettype="SCSI"/> | ||||||
|  |             <systemdisk> | ||||||
|  |                 <volume name="home"/> | ||||||
|  |                 <volume name="root"/> | ||||||
|  |                 <volume name="opt"/> | ||||||
|  |                 <volume name="srv"/> | ||||||
|  |                 <volume name="boot/grub2/s390x-emu" mountpoint="boot/grub2/s390x-emu"/> | ||||||
|  |                 <volume name="boot/writable"/> | ||||||
|  |                 <volume name="usr/local"/> | ||||||
|  |                 <volume name="var" copy_on_write="false"/> | ||||||
|  |             </systemdisk> | ||||||
|  |             <size unit="G">5</size> | ||||||
|  |         </type> | ||||||
|  |     </preferences> | ||||||
|  |  | ||||||
|     <preferences profiles="x86-vmware"> |     <preferences profiles="x86-vmware"> | ||||||
|         <version>6.0</version> |         <version>6.1</version> | ||||||
|         <packagemanager>zypper</packagemanager> |         <packagemanager>zypper</packagemanager> | ||||||
|         <bootsplash-theme>SLE</bootsplash-theme> |         <bootsplash-theme>SLE</bootsplash-theme> | ||||||
|         <bootloader-theme>SLE</bootloader-theme> |         <bootloader-theme>SLE</bootloader-theme> | ||||||
| @@ -538,7 +711,7 @@ | |||||||
|         </type> |         </type> | ||||||
|     </preferences> |     </preferences> | ||||||
|     <preferences profiles="x86-qcow"> |     <preferences profiles="x86-qcow"> | ||||||
|         <version>6.0</version> |         <version>6.1</version> | ||||||
|         <packagemanager>zypper</packagemanager> |         <packagemanager>zypper</packagemanager> | ||||||
|         <bootsplash-theme>SLE</bootsplash-theme> |         <bootsplash-theme>SLE</bootsplash-theme> | ||||||
|         <bootloader-theme>SLE</bootloader-theme> |         <bootloader-theme>SLE</bootloader-theme> | ||||||
| @@ -549,7 +722,7 @@ | |||||||
|             format="qcow2" |             format="qcow2" | ||||||
|             filesystem="btrfs" |             filesystem="btrfs" | ||||||
|             firmware="uefi" |             firmware="uefi" | ||||||
|             kernelcmdline="console=ttyS0,115200 console=tty0 security=selinux selinux=1 quiet net.ifnames=0 ignition.platform.id=qemu" |             kernelcmdline="console=ttyS0,115200 console=tty0 security=selinux selinux=1 quiet systemd.show_status=1 net.ifnames=0 ignition.platform.id=qemu" | ||||||
|             bootpartition="false" |             bootpartition="false" | ||||||
|             bootkernel="custom" |             bootkernel="custom" | ||||||
|             devicepersistency="by-uuid" |             devicepersistency="by-uuid" | ||||||
| @@ -577,7 +750,7 @@ | |||||||
|     </preferences> |     </preferences> | ||||||
|  |  | ||||||
|     <preferences profiles="aarch64-qcow"> |     <preferences profiles="aarch64-qcow"> | ||||||
|         <version>6.0</version> |         <version>6.1</version> | ||||||
|         <packagemanager>zypper</packagemanager> |         <packagemanager>zypper</packagemanager> | ||||||
|         <bootsplash-theme>SLE</bootsplash-theme> |         <bootsplash-theme>SLE</bootsplash-theme> | ||||||
|         <bootloader-theme>SLE</bootloader-theme> |         <bootloader-theme>SLE</bootloader-theme> | ||||||
| @@ -589,7 +762,7 @@ | |||||||
|             filesystem="btrfs" |             filesystem="btrfs" | ||||||
|             firmware="uefi" |             firmware="uefi" | ||||||
|             efipartsize="128" |             efipartsize="128" | ||||||
|             kernelcmdline="console=ttyS0,115200 console=tty0 security=selinux selinux=1 quiet net.ifnames=0 ignition.platform.id=qemu" |             kernelcmdline="console=ttyS0,115200 console=tty0 security=selinux selinux=1 quiet systemd.show_status=1 net.ifnames=0 ignition.platform.id=qemu" | ||||||
|             bootpartition="false" |             bootpartition="false" | ||||||
|             bootkernel="custom" |             bootkernel="custom" | ||||||
|             devicepersistency="by-uuid" |             devicepersistency="by-uuid" | ||||||
| @@ -600,7 +773,7 @@ | |||||||
|             <systemdisk> |             <systemdisk> | ||||||
|                 <volume name="home"/> |                 <volume name="home"/> | ||||||
|                 <volume name="root"/> |                 <volume name="root"/> | ||||||
|  		<volume name="opt"/> |                 <volume name="opt"/> | ||||||
|                 <volume name="srv"/> |                 <volume name="srv"/> | ||||||
|                 <volume name="boot/grub2/arm64-efi" mountpoint="boot/grub2/arm64-efi"/> |                 <volume name="boot/grub2/arm64-efi" mountpoint="boot/grub2/arm64-efi"/> | ||||||
|                 <volume name="boot/writable"/> |                 <volume name="boot/writable"/> | ||||||
| @@ -611,6 +784,161 @@ | |||||||
|         </type> |         </type> | ||||||
|     </preferences> |     </preferences> | ||||||
|  |  | ||||||
|  |     <preferences profiles="ppc64le-512ss"> | ||||||
|  |         <version>6.1</version> | ||||||
|  |         <packagemanager>zypper</packagemanager> | ||||||
|  |         <bootsplash-theme>SLE</bootsplash-theme> | ||||||
|  |         <bootloader-theme>SLE</bootloader-theme> | ||||||
|  |         <rpm-excludedocs>true</rpm-excludedocs> | ||||||
|  |         <locale>en_US</locale> | ||||||
|  |         <!-- Use ignition.platform.id=metal to avoid bsc#1227689 --> | ||||||
|  |         <type | ||||||
|  |             image="oem" | ||||||
|  |             filesystem="btrfs" | ||||||
|  |             firmware="ofw" | ||||||
|  |             kernelcmdline="console=hvc0,115200 security=selinux selinux=1 quiet systemd.show_status=1 net.ifnames=0 ignition.platform.id=metal" | ||||||
|  |             bootpartition="false" | ||||||
|  |             bootkernel="custom" | ||||||
|  |             devicepersistency="by-uuid" | ||||||
|  |             btrfs_root_is_snapshot="true" | ||||||
|  |             btrfs_root_is_readonly_snapshot="true" | ||||||
|  |             btrfs_quota_groups="true" | ||||||
|  |         > | ||||||
|  |             <systemdisk> | ||||||
|  |                 <volume name="home"/> | ||||||
|  |                 <volume name="root"/> | ||||||
|  | 		<!-- on tmpfs jsc#SMO-2                <volume name="tmp"/> --> | ||||||
|  |                 <volume name="opt"/> | ||||||
|  |                 <volume name="srv"/> | ||||||
|  |                 <volume name="boot/grub2/powerpc-ieee1275"/> | ||||||
|  |                 <volume name="boot/writable"/> | ||||||
|  | 		<volume name="usr/local"/> | ||||||
|  | 		<volume name="var" copy_on_write="false"/> | ||||||
|  |             </systemdisk> | ||||||
|  |         </type> | ||||||
|  |     </preferences> | ||||||
|  |     <preferences profiles="ppc64le-4096ss"> | ||||||
|  |         <version>6.1</version> | ||||||
|  |         <packagemanager>zypper</packagemanager> | ||||||
|  |         <bootsplash-theme>SLE</bootsplash-theme> | ||||||
|  |         <bootloader-theme>SLE</bootloader-theme> | ||||||
|  |         <rpm-excludedocs>true</rpm-excludedocs> | ||||||
|  |         <locale>en_US</locale> | ||||||
|  |         <!-- TODO: supposedly this is needed as type attribute, but kiwi needs patching | ||||||
|  |              disk_start_sector="256" --> | ||||||
|  |         <!-- Use ignition.platform.id=metal to avoid bsc#1227689 --> | ||||||
|  |         <type | ||||||
|  |             image="oem" | ||||||
|  |             target_blocksize="4096" | ||||||
|  |             filesystem="btrfs" | ||||||
|  |             firmware="ofw" | ||||||
|  |             kernelcmdline="console=hvc0,115200 security=selinux selinux=1 quiet systemd.show_status=1 net.ifnames=0 ignition.platform.id=metal" | ||||||
|  |             bootpartition="false" | ||||||
|  |             bootkernel="custom" | ||||||
|  |             devicepersistency="by-uuid" | ||||||
|  |             btrfs_root_is_snapshot="true" | ||||||
|  |             btrfs_root_is_readonly_snapshot="true" | ||||||
|  |             btrfs_quota_groups="true" | ||||||
|  |         > | ||||||
|  |             <systemdisk> | ||||||
|  |                 <volume name="home"/> | ||||||
|  |                 <volume name="root"/> | ||||||
|  | 		<!-- on tmpfs jsc#SMO-2                <volume name="tmp"/> --> | ||||||
|  |                 <volume name="opt"/> | ||||||
|  |                 <volume name="srv"/> | ||||||
|  |                 <volume name="boot/grub2/powerpc-ieee1275"/> | ||||||
|  |                 <volume name="boot/writable"/> | ||||||
|  | 		<volume name="usr/local"/> | ||||||
|  | 		<volume name="var" copy_on_write="false"/> | ||||||
|  |             </systemdisk> | ||||||
|  |         </type> | ||||||
|  |     </preferences> | ||||||
|  |  | ||||||
|  |     <preferences profiles="ppc64le-512ss-self_install"> | ||||||
|  |         <version>6.1</version> | ||||||
|  |         <packagemanager>zypper</packagemanager> | ||||||
|  |         <bootsplash-theme>SLE</bootsplash-theme> | ||||||
|  |         <bootloader-theme>SLE</bootloader-theme> | ||||||
|  |         <rpm-excludedocs>true</rpm-excludedocs> | ||||||
|  |         <locale>en_US</locale> | ||||||
|  |         <!-- Use ignition.platform.id=metal to avoid bsc#1227689 --> | ||||||
|  |         <type | ||||||
|  |             image="oem" | ||||||
|  |             installiso="true" | ||||||
|  |             installpxe="true" | ||||||
|  |             filesystem="btrfs" | ||||||
|  |             firmware="ofw" | ||||||
|  |             kernelcmdline="console=hvc0,115200 security=selinux selinux=1 quiet net.ifnames=0 ignition.platform.id=metal" | ||||||
|  |             bootpartition="false" | ||||||
|  |             bootkernel="custom" | ||||||
|  |             devicepersistency="by-uuid" | ||||||
|  |             btrfs_root_is_snapshot="true" | ||||||
|  |             btrfs_root_is_readonly_snapshot="true" | ||||||
|  |             btrfs_quota_groups="true" | ||||||
|  |         > | ||||||
|  |             <installmedia> | ||||||
|  |                 <initrd action="omit"> | ||||||
|  |                     <dracut module="drm"/> | ||||||
|  |                 </initrd> | ||||||
|  |             </installmedia> | ||||||
|  |             <systemdisk> | ||||||
|  |                 <volume name="home"/> | ||||||
|  |                 <volume name="root"/> | ||||||
|  | 		<!-- on tmpfs jsc#SMO-2                <volume name="tmp"/> --> | ||||||
|  |                 <volume name="opt"/> | ||||||
|  |                 <volume name="srv"/> | ||||||
|  |                 <volume name="boot/grub2/powerpc-ieee1275"/> | ||||||
|  |                 <volume name="boot/writable"/> | ||||||
|  | 		<volume name="usr/local"/> | ||||||
|  | 		<volume name="var" copy_on_write="false"/> | ||||||
|  |             </systemdisk> | ||||||
|  |         </type> | ||||||
|  |     </preferences> | ||||||
|  |     <preferences profiles="ppc64le-4096ss-self_install"> | ||||||
|  |         <version>6.1</version> | ||||||
|  |         <packagemanager>zypper</packagemanager> | ||||||
|  |         <bootsplash-theme>SLE</bootsplash-theme> | ||||||
|  |         <bootloader-theme>SLE</bootloader-theme> | ||||||
|  |         <rpm-excludedocs>true</rpm-excludedocs> | ||||||
|  |         <locale>en_US</locale> | ||||||
|  |         <!-- TODO: supposedly this is needed as type attribute, but kiwi needs patching | ||||||
|  |              disk_start_sector="256" --> | ||||||
|  |         <!-- Use ignition.platform.id=metal to avoid bsc#1227689 --> | ||||||
|  |         <type | ||||||
|  |             image="oem" | ||||||
|  |             installiso="true" | ||||||
|  |             installpxe="true" | ||||||
|  |             target_blocksize="4096" | ||||||
|  |             filesystem="btrfs" | ||||||
|  |             firmware="ofw" | ||||||
|  |             kernelcmdline="console=hvc0,115200 security=selinux selinux=1 quiet systemd.show_status=1 net.ifnames=0 ignition.platform.id=metal" | ||||||
|  |             bootpartition="false" | ||||||
|  |             bootkernel="custom" | ||||||
|  |             devicepersistency="by-uuid" | ||||||
|  |             btrfs_root_is_snapshot="true" | ||||||
|  |             btrfs_root_is_readonly_snapshot="true" | ||||||
|  |             btrfs_quota_groups="true" | ||||||
|  |         > | ||||||
|  |             <installmedia> | ||||||
|  |                 <initrd action="omit"> | ||||||
|  |                     <dracut module="drm"/> | ||||||
|  |                 </initrd> | ||||||
|  |             </installmedia> | ||||||
|  |             <systemdisk> | ||||||
|  |                 <volume name="home"/> | ||||||
|  |                 <volume name="root"/> | ||||||
|  | 		<!-- on tmpfs jsc#SMO-2                <volume name="tmp"/> --> | ||||||
|  |                 <volume name="opt"/> | ||||||
|  |                 <volume name="srv"/> | ||||||
|  |                 <volume name="boot/grub2/powerpc-ieee1275"/> | ||||||
|  |                 <volume name="boot/writable"/> | ||||||
|  | 		<volume name="usr/local"/> | ||||||
|  | 		<volume name="var" copy_on_write="false"/> | ||||||
|  |             </systemdisk> | ||||||
|  |         </type> | ||||||
|  |     </preferences> | ||||||
|  |  | ||||||
|  |  | ||||||
|    <repository type="rpm-md" > |    <repository type="rpm-md" > | ||||||
|         <source path='obsrepositories:/'/> |         <source path='obsrepositories:/'/> | ||||||
|     </repository> |     </repository> | ||||||
| @@ -629,6 +957,7 @@ | |||||||
|         <package name="patterns-base-cockpit"/> |         <package name="patterns-base-cockpit"/> | ||||||
|         <namedCollection name="selinux"/> |         <namedCollection name="selinux"/> | ||||||
|         <package name="patterns-base-selinux"/> |         <package name="patterns-base-selinux"/> | ||||||
|  |         <package name="policycoreutils-python-utils"/> | ||||||
|         <package name="suseconnect-ng"/> |         <package name="suseconnect-ng"/> | ||||||
|         <package name="SL-Micro-release"/> |         <package name="SL-Micro-release"/> | ||||||
|         <package name="grub2-branding-SLE" arch="x86_64,aarch64"/> |         <package name="grub2-branding-SLE" arch="x86_64,aarch64"/> | ||||||
| @@ -655,10 +984,9 @@ | |||||||
|         <package name="patterns-base-transactional"/> |         <package name="patterns-base-transactional"/> | ||||||
|         <namedCollection name="container_runtime_podman"/> |         <namedCollection name="container_runtime_podman"/> | ||||||
|         <package name="patterns-container-runtime_podman"/> |         <package name="patterns-container-runtime_podman"/> | ||||||
|         <namedCollection name="cockpit"/> |  | ||||||
|         <package name="patterns-base-cockpit"/> |  | ||||||
|         <namedCollection name="selinux"/> |         <namedCollection name="selinux"/> | ||||||
|         <package name="patterns-base-selinux"/> |         <package name="patterns-base-selinux"/> | ||||||
|  |         <package name="policycoreutils-python-utils"/> | ||||||
|         <package name="suseconnect-ng"/> |         <package name="suseconnect-ng"/> | ||||||
|         <package name="SL-Micro-release"/> |         <package name="SL-Micro-release"/> | ||||||
|         <package name="grub2-branding-SLE" arch="x86_64,aarch64"/> |         <package name="grub2-branding-SLE" arch="x86_64,aarch64"/> | ||||||
| @@ -720,7 +1048,8 @@ | |||||||
|         <package name="grub2-x86_64-efi" arch="x86_64"/> |         <package name="grub2-x86_64-efi" arch="x86_64"/> | ||||||
|         <package name="grub2-arm64-efi" arch="aarch64"/> |         <package name="grub2-arm64-efi" arch="aarch64"/> | ||||||
|         <package name="grub2-s390x-emu" arch="s390x"/> |         <package name="grub2-s390x-emu" arch="s390x"/> | ||||||
|         <package name="grub2-branding-SLE" bootinclude="true" arch="x86_64,aarch64"/> |         <package name="grub2-powerpc-ieee1275" arch="ppc64le"/> | ||||||
|  |         <package name="grub2-branding-SLE" bootinclude="true" arch="x86_64,aarch64,ppc64le"/> | ||||||
|         <package name="grub2-snapper-plugin"/> |         <package name="grub2-snapper-plugin"/> | ||||||
|         <package name="shim" arch="x86_64,aarch64"/> |         <package name="shim" arch="x86_64,aarch64"/> | ||||||
| 	<package name="mokutil" arch="x86_64,aarch64"/> | 	<package name="mokutil" arch="x86_64,aarch64"/> | ||||||
| @@ -728,46 +1057,46 @@ | |||||||
| 	    <package name="kpartx" arch="s390x"/>--> <!-- previous releases picked it always, now kiwi picks partx instead --> | 	    <package name="kpartx" arch="s390x"/>--> <!-- previous releases picked it always, now kiwi picks partx instead --> | ||||||
|     </packages> |     </packages> | ||||||
|     <!-- rpi kernel-default-base does not provide all necessary drivers --> |     <!-- rpi kernel-default-base does not provide all necessary drivers --> | ||||||
|     <packages type="image" profiles="x86,x86-encrypted,x86-legacy,x86-self_install,x86-vmware,x86-qcow,aarch64-qcow,s390-kvm,s390-dasd,s390-fba"> |     <packages type="image" profiles="rpi,aarch64-self_install,x86,x86-encrypted,x86-legacy,x86-self_install,x86-vmware,x86-qcow,aarch64,aarch64-qcow,s390-kvm,s390-dasd,s390-fba,s390-fcp,ppc64le-512ss,ppc64le-4096ss,ppc64le-512ss-self_install,ppc64le-4096ss-self_install"> | ||||||
|         <package name="kernel-default"/> |         <package name="kernel-default"/> | ||||||
|         <package name="kernel-firmware-all"/> |         <package name="kernel-firmware-all"/> | ||||||
|     </packages> |     </packages> | ||||||
|     <packages type="image" profiles="x86-rt,x86-rt-self_install,x86-rt-encrypted"> |     <packages type="image" profiles="x86-rt,x86-rt-self_install,x86-rt-encrypted,aarch64-rt,aarch64-rt-rpi,aarch64-rt-self_install"> | ||||||
|         <package name="kernel-rt"/> |         <package name="kernel-rt"/> | ||||||
| 	<package name="kernel-firmware-all"/> |         <package name="kernel-firmware-all"/> | ||||||
| 	<!-- FIXME intentionally removed from ALP code stream | 	<!-- FIXME intentionally removed from ALP code stream | ||||||
| 	<package name="cpuset"/> --> |         <package name="cpuset"/> --> | ||||||
|     </packages> |     </packages> | ||||||
|     <!-- makes the image build, but also include kernel-default |     <packages type="image" profiles="s390-kvm,s390-dasd,s390-fba,s390-fcp"> | ||||||
|     <packages type="image" profiles="x86-rt-encrypted"> |         <package name="dracut-kiwi-oem-dump"/> | ||||||
|         <package name="kernel-default-extra"/> |  | ||||||
|     </packages> --> |  | ||||||
|     <packages type="image" profiles="s390-kvm,s390-dasd,s390-fba"> |  | ||||||
|         <package name="dracut-kiwi-oem-repart"/> |         <package name="dracut-kiwi-oem-repart"/> | ||||||
|         <package name="blog"/> |         <package name="blog"/> | ||||||
|     </packages> |     </packages> | ||||||
|     <packages type="image" profiles="x86,x86-encrypted,x86-rt-encrypted,x86-self_install,x86-legacy,x86-vmware,x86-rt,x86-rt-self_install,x86-qcow,aarch64-qcow,rpi,aarch64-self_install"> |     <!-- FCP is usually used multipathed. --> | ||||||
|  |     <packages type="image" profiles="s390-fcp"> | ||||||
|  |         <package name="multipath-tools"/> | ||||||
|  |     </packages> | ||||||
|  |     <packages type="image" profiles="x86,x86-encrypted,x86-rt-encrypted,x86-self_install,x86-legacy,x86-vmware,x86-rt,x86-rt-self_install,x86-qcow,aarch64,aarch64-qcow,rpi,aarch64-self_install,aarch64-rt,aarch64-rt-rpi,aarch64-rt-self_install,ppc64le-512ss,ppc64le-4096ss,ppc64le-512ss-self_install,ppc64le-4096ss-self_install"> | ||||||
|         <package name="dracut-kiwi-oem-repart"/> |         <package name="dracut-kiwi-oem-repart"/> | ||||||
|         <package name="dracut-kiwi-oem-dump"/> |         <package name="dracut-kiwi-oem-dump"/> | ||||||
|     </packages> |     </packages> | ||||||
|     <packages type="image" profiles="rpi,aarch64-self_install"> |     <packages type="image" profiles="rpi,aarch64-self_install,aarch64-rt,aarch64-rt-rpi,aarch64-rt-self_install"> | ||||||
|         <package name="raspberrypi-firmware" arch="aarch64"/> |         <package name="raspberrypi-firmware" arch="aarch64"/> | ||||||
|         <package name="raspberrypi-firmware-config" arch="aarch64"/> |         <package name="raspberrypi-firmware-config" arch="aarch64"/> | ||||||
|         <package name="raspberrypi-firmware-dt" arch="aarch64"/> |         <package name="raspberrypi-firmware-dt" arch="aarch64"/> | ||||||
|         <package name="u-boot-rpiarm64" arch="aarch64"/> |         <package name="u-boot-rpiarm64" arch="aarch64"/> | ||||||
|  |     </packages> | ||||||
|  |     <packages type="image" profiles="rpi,aarch64-self_install,aarch64-rt,aarch64-rt-self_install"> | ||||||
|         <package name="dracut-kiwi-oem-repart"/> |         <package name="dracut-kiwi-oem-repart"/> | ||||||
|         <package name="bcm43xx-firmware"/> |         <package name="bcm43xx-firmware"/> | ||||||
|         <package name="kernel-firmware-all"/><!-- Fix choice between kernel-firmware and kernel-firmware-all --> |  | ||||||
|         <package name="wireless-regdb"/> |         <package name="wireless-regdb"/> | ||||||
|         <package name="wireless-tools"/> |         <package name="wireless-tools"/> | ||||||
|         <package name="wpa_supplicant"/> |         <package name="wpa_supplicant"/> | ||||||
|         <package name="grub2-arm64-efi"/> |         <package name="grub2-arm64-efi"/> | ||||||
|         <!-- kernel-default-base does not have all required drivers --> |  | ||||||
|         <package name="kernel-default"/> |  | ||||||
|     </packages> |     </packages> | ||||||
|     <packages type="bootstrap"> |     <packages type="bootstrap"> | ||||||
|         <package name="coreutils"/> |  | ||||||
|         <package name="filesystem"/> |         <package name="filesystem"/> | ||||||
|  |         <package name="coreutils"/> | ||||||
|         <package name="ca-certificates"/> |         <package name="ca-certificates"/> | ||||||
|         <package name="ca-certificates-mozilla"/> |         <package name="ca-certificates-mozilla"/> | ||||||
|     </packages> |     </packages> | ||||||
| @@ -781,4 +1110,14 @@ | |||||||
|     <packages type="image" profiles="x86-qcow,aarch64-qcow"> |     <packages type="image" profiles="x86-qcow,aarch64-qcow"> | ||||||
|         <package name="qemu-guest-agent"/> |         <package name="qemu-guest-agent"/> | ||||||
|     </packages> |     </packages> | ||||||
| </image> |  | ||||||
|  |     <!-- jsc#PED-8599 --> | ||||||
|  |     <packages type="image" profiles="Base,Base-encrypted,Base-RT,Base-RT-encrypted,Base-fba,Base-dasd,Base-fcp,Base-512,Base-4096,Default,Default-encrypted,Default-fba,Default-dasd,Default-fcp,Default-512,Default-4096"> | ||||||
|  |         <package name="usbguard"/> | ||||||
|  |     </packages> | ||||||
|  |  | ||||||
|  |     <!-- jsc#PED-8788 --> | ||||||
|  |     <packages type="image" profiles="Base-RT,Base-RT-encrypted,x86-rt-encrypted,x86-rt,x86-rt-self_install,aarch64-rt,aarch64-rt-self_install"> | ||||||
|  |         <package name="stalld"/> | ||||||
|  |     </packages> | ||||||
|  | </image> | ||||||
|   | |||||||
| @@ -1,5 +1,6 @@ | |||||||
| <services> | <services> | ||||||
|   <service mode="buildtime" name="kiwi_metainfo_helper"/> |   <service mode="buildtime" name="kiwi_metainfo_helper"/> | ||||||
|  |   <service name="docker_label_helper" mode="buildtime"/> | ||||||
|   <service name="replace_using_env" mode="buildtime"> |   <service name="replace_using_env" mode="buildtime"> | ||||||
|     <param name="file">README</param> |     <param name="file">README</param> | ||||||
|     <param name="eval">IMG_REPO=$(rpm --macros=/root/.rpmmacros -E %img_repo)</param> |     <param name="eval">IMG_REPO=$(rpm --macros=/root/.rpmmacros -E %img_repo)</param> | ||||||
| @@ -16,4 +17,14 @@ | |||||||
|     <param name="eval">SUPPORT_LEVEL=$(rpm --macros=/root/.rpmmacros -E %support_level)</param> |     <param name="eval">SUPPORT_LEVEL=$(rpm --macros=/root/.rpmmacros -E %support_level)</param> | ||||||
|     <param name="var">SUPPORT_LEVEL</param> |     <param name="var">SUPPORT_LEVEL</param> | ||||||
|   </service> |   </service> | ||||||
|  |   <service mode="buildtime" name="replace_using_package_version"> | ||||||
|  |     <param name="file">Dockerfile</param> | ||||||
|  |     <param name="regex">%%kiwi_version%%</param> | ||||||
|  |     <param name="package">python3-kiwi</param> | ||||||
|  |   </service> | ||||||
|  |   <service mode="buildtime" name="replace_using_package_version"> | ||||||
|  |     <param name="file">README</param> | ||||||
|  |     <param name="regex">%%kiwi_version%%</param> | ||||||
|  |     <param name="package">python3-kiwi</param> | ||||||
|  |   </service> | ||||||
| </services> | </services> | ||||||
|   | |||||||
| @@ -1,5 +1,5 @@ | |||||||
| #!/usr/bin/env bash | #!/usr/bin/env bash | ||||||
| # Copyright (c) 2024 SUSE LLC | # Copyright (c) 2025 SUSE LLC | ||||||
| # | # | ||||||
| # Permission is hereby granted, free of charge, to any person obtaining a copy | # Permission is hereby granted, free of charge, to any person obtaining a copy | ||||||
| # of this software and associated documentation files (the "Software"), to deal | # of this software and associated documentation files (the "Software"), to deal | ||||||
| @@ -21,43 +21,48 @@ | |||||||
| # | # | ||||||
|  |  | ||||||
| # Set image build defaults, blocksize is an empty string | # Set image build defaults, blocksize is an empty string | ||||||
| PROFILE="Default" | PROFILE="Base" | ||||||
| LARGEBLOCK=false | LARGEBLOCK=false | ||||||
|  |  | ||||||
| # Print usage | # Print usage | ||||||
| usage(){ | usage(){ | ||||||
| 	cat <<-EOF |   cat <<-EOF | ||||||
| 	============================== |   ===================================== | ||||||
| 	SLE Micro 6.0 Kiwi SDK Builder |   SUSE Linux Micro 6.1 Kiwi SDK Builder | ||||||
| 	============================== |   ===================================== | ||||||
|  |  | ||||||
| 	Usage: ${0} [-p <profile>] [-b] |   Usage: ${0} [-p <profile>] [-b] | ||||||
|  |  | ||||||
| 	Profile Options (-p): |   Profile Options (-p): | ||||||
| 	* Default: RAW Disk Image with kernel-default |   * Default: RAW Disk Image with default packages (incl. Podman & KVM) | ||||||
| 	* Default-SelfInstall: SelfInstall ISO with kernel-default |   * Default-SelfInstall: SelfInstall ISO with default packages | ||||||
| 	* Base-RT: RAW Disk Image with kernel-rt |   * Default-RPi: RAW Disk Image for Raspberry Pi (aarch64 only with MBR) | ||||||
| 	* Base-RT-SelfInstall: SelfInstall ISO with kernel-rt |   * Base: RAW Disk Image with reduced package set (no KVM) | ||||||
|  |   * Base-SelfInstall: SelfInstall ISO with reduced packages | ||||||
|  |   * Base-RT: RAW Disk Image with reduced packages and kernel-rt | ||||||
|  |   * Base-RT-SelfInstall: SelfInstall ISO with reduced packages and kernel-rt | ||||||
|  |   * Base-RT-RPi: RAW Disk image for Raspberry Pi with kernel-rt (aarch64 only with MBR) | ||||||
|  |   * Base-RPi: RAW Disk Image for Raspberry Pi with reduced packages (aarch64 only with MBR) | ||||||
|  |  | ||||||
| 	4096 Blocksize (-b): If specified, use a 4096 blocksize (rather than 512) when generating the image. |   4096 Blocksize (-b): If specified, use a 4096 blocksize (rather than 512) when generating the image. | ||||||
|  |  | ||||||
| 	NOTE: If both options are omitted, the "Default" profile with a standard "512" blocksize is used. |   NOTE: If both options are omitted, the "Base" profile with a standard "512" blocksize is used. | ||||||
| 	EOF | EOF | ||||||
| } | } | ||||||
|  |  | ||||||
| # Grab CLI options and handle | # Grab CLI options and handle | ||||||
| while getopts 'p:bh' OPTION; do | while getopts 'p:bh' OPTION; do | ||||||
| 	case "${OPTION}" in |   case "${OPTION}" in | ||||||
| 		p) |     p) | ||||||
| 			PROFILE="${OPTARG}" |       PROFILE="${OPTARG}" | ||||||
| 			;; |       ;; | ||||||
| 		b) |     b) | ||||||
| 			LARGEBLOCK=true |       LARGEBLOCK=true | ||||||
| 			;; |       ;; | ||||||
| 		?) |     ?) | ||||||
| 			usage && exit 2 |       usage && exit 2 | ||||||
| 			;; |       ;; | ||||||
| 	esac |   esac | ||||||
| done | done | ||||||
|  |  | ||||||
| # To avoid wasting time, perform the loop creation test first, and exit with a warning to re-run. | # To avoid wasting time, perform the loop creation test first, and exit with a warning to re-run. | ||||||
| @@ -88,4 +93,4 @@ if [ $RESULT -eq 0 ]; then | |||||||
|   echo -e "\n\nINFO: Image build successful, generated images are available in the 'output' directory." |   echo -e "\n\nINFO: Image build successful, generated images are available in the 'output' directory." | ||||||
| else | else | ||||||
|   echo -e "\n\nERROR: Failed to build the image, please see above logs." |   echo -e "\n\nERROR: Failed to build the image, please see above logs." | ||||||
| fi | fi | ||||||
|   | |||||||
| @@ -35,14 +35,6 @@ mkdir /var/lib/misc/reconfig_system | |||||||
| #-------------------------------------- | #-------------------------------------- | ||||||
| echo "Configure image: [$kiwi_iname]-[$kiwi_profiles]..." | echo "Configure image: [$kiwi_iname]-[$kiwi_profiles]..." | ||||||
|  |  | ||||||
| #====================================== |  | ||||||
| # This is a workaround - someone, |  | ||||||
| # somewhere needs to load the xts crypto |  | ||||||
| # module, otherwise luksOpen will fail while |  | ||||||
| # creating the image. |  | ||||||
| #-------------------------------------- |  | ||||||
| modprobe xts || true |  | ||||||
|  |  | ||||||
| #====================================== | #====================================== | ||||||
| # add missing fonts | # add missing fonts | ||||||
| #-------------------------------------- | #-------------------------------------- | ||||||
| @@ -139,9 +131,6 @@ for i in /usr/lib/rpm/gnupg/keys/gpg-pubkey*asc; do | |||||||
|     rpm --import $i || true |     rpm --import $i || true | ||||||
| done | done | ||||||
|  |  | ||||||
| # Temporary workaround for bsc#1212187 |  | ||||||
| echo "techpreview.ZYPP_MEDIANETWORK=1" >> /etc/zypp/zypp.conf |  | ||||||
|  |  | ||||||
| #====================================== | #====================================== | ||||||
| # Enable kubelet if installed | # Enable kubelet if installed | ||||||
| #-------------------------------------- | #-------------------------------------- | ||||||
| @@ -170,8 +159,18 @@ if [ "${kiwi_btrfs_root_is_snapshot-false}" = 'true' ]; then | |||||||
| 	sed -i'' 's/^NUMBER_LIMIT_IMPORTANT=.*$/NUMBER_LIMIT_IMPORTANT="4-10"/g' /etc/snapper/configs/root | 	sed -i'' 's/^NUMBER_LIMIT_IMPORTANT=.*$/NUMBER_LIMIT_IMPORTANT="4-10"/g' /etc/snapper/configs/root | ||||||
| fi | fi | ||||||
|  |  | ||||||
| # Enable jeos-firstboot if installed, disabled by combustion/ignition | # Enable multipathd for MP images | ||||||
| if rpm -q --whatprovides jeos-firstboot >/dev/null; then | if [ "${kiwi_oemmultipath_scan-false}" = 'true' ]; then | ||||||
|  |         systemctl enable multipathd.service | ||||||
|  | fi | ||||||
|  |  | ||||||
|  | # On those s390 targets the console is not capable of running jeos-firstboot, | ||||||
|  | # use systemd-firstboot as minimal alternative. | ||||||
|  | if [[ "$kiwi_profiles" =~ s390-(dasd|fba|fcp) ]]; then | ||||||
|  | 	systemctl enable systemd-firstboot | ||||||
|  | 	# Enable prompting for the root password | ||||||
|  | 	echo 'root:!unprovisioned' | chpasswd -e | ||||||
|  | elif rpm -q --whatprovides jeos-firstboot >/dev/null; then | ||||||
|         mkdir -p /var/lib/YaST2 |         mkdir -p /var/lib/YaST2 | ||||||
|         touch /var/lib/YaST2/reconfig_system |         touch /var/lib/YaST2/reconfig_system | ||||||
|         systemctl enable jeos-firstboot.service |         systemctl enable jeos-firstboot.service | ||||||
| @@ -281,7 +280,7 @@ if [[ "$kiwi_profiles" == *"RaspberryPi"* ]]; then | |||||||
| 		options smsc95xx turbo_mode=N | 		options smsc95xx turbo_mode=N | ||||||
| 	EOF | 	EOF | ||||||
|  |  | ||||||
| 	cat > /usr/lib/sysctl.d/50-rpi3.conf <<-EOF | 	cat > /etc/sysctl.d/50-rpi3.conf <<-EOF | ||||||
| 		# Avoid running out of DMA pages for smsc95xx (bsc#1012449) | 		# Avoid running out of DMA pages for smsc95xx (bsc#1012449) | ||||||
| 		vm.min_free_kbytes = 2048 | 		vm.min_free_kbytes = 2048 | ||||||
| 	EOF | 	EOF | ||||||
|   | |||||||
							
								
								
									
										47
									
								
								kiwi-builder-image/editbootinstall_rpi.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										47
									
								
								kiwi-builder-image/editbootinstall_rpi.sh
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,47 @@ | |||||||
|  | #!/bin/bash | ||||||
|  | set -euxo pipefail | ||||||
|  |  | ||||||
|  | diskname=$1 | ||||||
|  | devname="$2" | ||||||
|  |  | ||||||
|  | loopname="${devname%*p?}" | ||||||
|  | loopdev=/dev/${loopname#/dev/*} | ||||||
|  |  | ||||||
|  | if [ ! -f $loopdev ]; then loopdev=/dev/${loopdev#/dev/mapper/}; fi | ||||||
|  |  | ||||||
|  | #========================================== | ||||||
|  | # copy Raspberry Pi firmware to EFI partition | ||||||
|  | #------------------------------------------ | ||||||
|  | echo "RPi EFI system, installing firmware on ESP" | ||||||
|  | mkdir -p ./mnt-pi | ||||||
|  | mount ${loopname}p1 ./mnt-pi | ||||||
|  | ( cd boot/vc; tar c . ) | ( cd ./mnt-pi/; tar x ) | ||||||
|  | umount ./mnt-pi | ||||||
|  | rmdir ./mnt-pi | ||||||
|  |  | ||||||
|  | #========================================== | ||||||
|  | # Change partition label type to MBR | ||||||
|  | #------------------------------------------ | ||||||
|  | # | ||||||
|  | # The target system doesn't support GPT, so let's move it to | ||||||
|  | # MBR partition layout instead. | ||||||
|  | # | ||||||
|  | # Also make sure to set the ESP partition to type 0xc so that | ||||||
|  | # broken firmware (Rpi) detects it as FAT. | ||||||
|  | # | ||||||
|  | # Use tabs, "<<-" strips tabs, but no other whitespace! | ||||||
|  | cat > gdisk.tmp <<-'EOF' | ||||||
|  | 		x | ||||||
|  | 		r | ||||||
|  | 		g | ||||||
|  | 		t | ||||||
|  | 		1 | ||||||
|  | 		c | ||||||
|  | 		w | ||||||
|  | 		y | ||||||
|  | 	EOF | ||||||
|  | dd if=$loopdev of=mbrid.bin bs=1 skip=440 count=4 | ||||||
|  | gdisk $loopdev < gdisk.tmp | ||||||
|  | dd of=$loopdev if=mbrid.bin bs=1 seek=440 count=4 | ||||||
|  | rm -f mbrid.bin | ||||||
|  | rm -f gdisk.tmp | ||||||
| @@ -12,10 +12,8 @@ | |||||||
|     <param name="without-version">yes</param> |     <param name="without-version">yes</param> | ||||||
|     <param name="versionrewrite-replacement">\1</param> |     <param name="versionrewrite-replacement">\1</param> | ||||||
|   </service> |   </service> | ||||||
|   <service mode="buildtime" name="tar" /> |   <service mode="buildtime" name="tar" > | ||||||
|   <service mode="buildtime" name="recompress"> |     <param name="obsinfo">kube-rbac-proxy.obsinfo</param> | ||||||
|     <param name="file">*.tar</param> |  | ||||||
|     <param name="compression">gz</param> |  | ||||||
|   </service> |   </service> | ||||||
|   <service name="go_modules"> |   <service name="go_modules"> | ||||||
|   </service> |   </service> | ||||||
|   | |||||||
Some files were not shown because too many files have changed in this diff Show More
		Reference in New Issue
	
	Block a user