42 files changed, 920 insertions, 1043 deletions
diff --git a/.gitmodules b/.gitmodules deleted file mode 100644 index e46f080..0000000 --- a/.gitmodules +++ /dev/null @@ -1,20 +0,0 @@ -[submodule "root/tmp/harrisonvanderbyl/surface-pro-12-inch-linux"] - path = root/tmp/harrisonvanderbyl/surface-pro-12-inch-linux - url = https://github.com/harrisonvanderbyl/surface-pro-12-inch-linux.git - branch = main -[submodule "root/tmp/harrisonvanderbyl/hexagonrpc"] - path = root/tmp/harrisonvanderbyl/hexagonrpc - url = https://github.com/harrisonvanderbyl/hexagonrpc - branch = main -[submodule "root/tmp/DylanVanAssche/libssc"] - path = root/tmp/DylanVanAssche/libssc - url = https://codeberg.org/DylanVanAssche/libssc - branch = main -[submodule "root/tmp/harrisonvanderbyl/iio-sensor-proxy"] - path = root/tmp/harrisonvanderbyl/iio-sensor-proxy - url = https://github.com/harrisonvanderbyl/iio-sensor-proxy - branch = master -[submodule "root/tmp/linux-msm/audioreach-topology"] - path = root/tmp/linux-msm/audioreach-topology - url = https://github.com/linux-msm/audioreach-topology - branch = main diff --git a/.zuul.yaml b/.zuul.yaml new file mode 100644 index 0000000..2661956 --- /dev/null +++ b/.zuul.yaml @@ -0,0 +1,425 @@ +--- + +- job: + name: build-images-x86_64/asahi/build-fex-rootfs + parent: tmt-test + vars: + tmt_url: "https://pagure.io/{{ zuul.project.name }}" + tmt_ref: "{{ zuul.ref }}" + tmt_plan: "/tmt/plans/asahi/build-fex-rootfs" + distro: fedora-rawhide + compose: Fedora-latest + tf_arch: x86_64 +- job: + name: build-images-x86_64/cloud/base/build-aws + parent: tmt-test + vars: + tmt_url: "https://pagure.io/{{ zuul.project.name }}" + tmt_ref: "{{ zuul.ref }}" + tmt_plan: "/tmt/plans/cloud/base/build-aws" + distro: fedora-rawhide + compose: Fedora-latest + tf_arch: x86_64 +- job: + name: build-images-x86_64/cloud/base/build-azure + parent: tmt-test + vars: + tmt_url: "https://pagure.io/{{ zuul.project.name }}" + tmt_ref: "{{ zuul.ref }}" + tmt_plan: "/tmt/plans/cloud/base/build-azure" + distro: fedora-rawhide + compose: Fedora-latest + tf_arch: x86_64 +- job: + name: build-images-x86_64/cloud/base/build-gcp + parent: tmt-test + vars: + tmt_url: "https://pagure.io/{{ zuul.project.name }}" + tmt_ref: "{{ zuul.ref }}" + tmt_plan: "/tmt/plans/cloud/base/build-gcp" + distro: fedora-rawhide + compose: Fedora-latest + tf_arch: x86_64 +- job: + name: build-images-x86_64/cloud/base/build-generic + parent: tmt-test + vars: + tmt_url: "https://pagure.io/{{ zuul.project.name }}" + tmt_ref: "{{ zuul.ref }}" + tmt_plan: "/tmt/plans/cloud/base/build-generic" + distro: fedora-rawhide + compose: Fedora-latest + tf_arch: x86_64 +- job: + name: build-images-x86_64/cloud/base/build-uefi-uki + parent: tmt-test + vars: + tmt_url: "https://pagure.io/{{ zuul.project.name }}" + tmt_ref: "{{ zuul.ref }}" + tmt_plan: "/tmt/plans/cloud/base/build-uefi-uki" + distro: fedora-rawhide + compose: Fedora-latest + tf_arch: x86_64 +- job: + name: build-images-x86_64/container/base/build-generic + parent: tmt-test + vars: + tmt_url: "https://pagure.io/{{ zuul.project.name }}" + tmt_ref: "{{ zuul.ref }}" + tmt_plan: "/tmt/plans/container/base/build-generic" + distro: fedora-rawhide + compose: Fedora-latest + tf_arch: x86_64 +- job: + name: build-images-x86_64/container/base/build-generic-init + parent: tmt-test + vars: + tmt_url: "https://pagure.io/{{ zuul.project.name }}" + tmt_ref: "{{ zuul.ref }}" + tmt_plan: "/tmt/plans/container/base/build-generic-init" + distro: fedora-rawhide + compose: Fedora-latest + tf_arch: x86_64 +- job: + name: build-images-x86_64/container/base/build-generic-minimal + parent: tmt-test + vars: + tmt_url: "https://pagure.io/{{ zuul.project.name }}" + tmt_ref: "{{ zuul.ref }}" + tmt_plan: "/tmt/plans/container/base/build-generic-minimal" + distro: fedora-rawhide + compose: Fedora-latest + tf_arch: x86_64 +- job: + name: build-images-x86_64/container/toolbox/build-toolbox + parent: tmt-test + vars: + tmt_url: "https://pagure.io/{{ zuul.project.name }}" + tmt_ref: "{{ zuul.ref }}" + tmt_plan: "/tmt/plans/container/toolbox/build-toolbox" + distro: fedora-rawhide + compose: Fedora-latest + tf_arch: x86_64 +- job: + name: build-images-x86_64/desktop/kde/build-desktop-disk + parent: tmt-test + vars: + tmt_url: "https://pagure.io/{{ zuul.project.name }}" + tmt_ref: "{{ zuul.ref }}" + tmt_plan: "/tmt/plans/desktop/kde/build-desktop-disk" + distro: fedora-rawhide + compose: Fedora-latest + tf_arch: x86_64 +- job: + name: build-images-x86_64/desktop/kde/build-desktop-live + parent: tmt-test + vars: + tmt_url: "https://pagure.io/{{ zuul.project.name }}" + tmt_ref: "{{ zuul.ref }}" + tmt_plan: "/tmt/plans/desktop/kde/build-desktop-live" + distro: fedora-rawhide + compose: Fedora-latest + tf_arch: x86_64 +- job: + name: build-images-x86_64/desktop/workstation/build-disk + parent: tmt-test + vars: + tmt_url: "https://pagure.io/{{ zuul.project.name }}" + tmt_ref: "{{ zuul.ref }}" + tmt_plan: "/tmt/plans/desktop/workstation/build-disk" + distro: fedora-rawhide + compose: Fedora-latest + tf_arch: x86_64 +- job: + name: build-images-x86_64/desktop/workstation/build-live + parent: tmt-test + vars: + tmt_url: "https://pagure.io/{{ zuul.project.name }}" + tmt_ref: "{{ zuul.ref }}" + tmt_plan: "/tmt/plans/desktop/workstation/build-live" + distro: fedora-rawhide + compose: Fedora-latest + tf_arch: x86_64 +- job: + name: build-images-x86_64/server/guest/build-generic + parent: tmt-test + vars: + tmt_url: "https://pagure.io/{{ zuul.project.name }}" + tmt_ref: "{{ zuul.ref }}" + tmt_plan: "/tmt/plans/server/guest/build-generic" + distro: fedora-rawhide + compose: Fedora-latest + tf_arch: x86_64 +- job: + name: build-images-x86_64/server/host/build-generic + parent: tmt-test + vars: + tmt_url: "https://pagure.io/{{ zuul.project.name }}" + tmt_ref: "{{ zuul.ref }}" + tmt_plan: "/tmt/plans/server/host/build-generic" + distro: fedora-rawhide + compose: Fedora-latest + tf_arch: x86_64 +- job: + name: build-images-x86_64/vagrant/base/build-libvirt + parent: tmt-test + vars: + tmt_url: "https://pagure.io/{{ zuul.project.name }}" + tmt_ref: "{{ zuul.ref }}" + tmt_plan: "/tmt/plans/vagrant/base/build-libvirt" + distro: fedora-rawhide + compose: Fedora-latest + tf_arch: x86_64 +- job: + name: build-images-x86_64/vagrant/base/build-virtualbox + parent: tmt-test + vars: + tmt_url: "https://pagure.io/{{ zuul.project.name }}" + tmt_ref: "{{ zuul.ref }}" + tmt_plan: "/tmt/plans/vagrant/base/build-virtualbox" + distro: fedora-rawhide + compose: Fedora-latest + tf_arch: x86_64 +- job: + name: build-images-x86_64/wsl/build + parent: tmt-test + vars: + tmt_url: "https://pagure.io/{{ zuul.project.name }}" + tmt_ref: "{{ zuul.ref }}" + tmt_plan: "/tmt/plans/wsl/build" + distro: fedora-rawhide + compose: Fedora-latest + tf_arch: x86_64 +- job: + name: build-images-aarch64/asahi/build-fex-rootfs + parent: tmt-test + vars: + tmt_url: "https://pagure.io/{{ zuul.project.name }}" + tmt_ref: "{{ zuul.ref }}" + tmt_plan: "/tmt/plans/asahi/build-fex-rootfs" + distro: fedora-rawhide + compose: Fedora-latest + tf_arch: aarch64 +- job: + name: build-images-aarch64/cloud/base/build-aws + parent: tmt-test + vars: + tmt_url: "https://pagure.io/{{ zuul.project.name }}" + tmt_ref: "{{ zuul.ref }}" + tmt_plan: "/tmt/plans/cloud/base/build-aws" + distro: fedora-rawhide + compose: Fedora-latest + tf_arch: aarch64 +- job: + name: build-images-aarch64/cloud/base/build-azure + parent: tmt-test + vars: + tmt_url: "https://pagure.io/{{ zuul.project.name }}" + tmt_ref: "{{ zuul.ref }}" + tmt_plan: "/tmt/plans/cloud/base/build-azure" + distro: fedora-rawhide + compose: Fedora-latest + tf_arch: aarch64 +- job: + name: build-images-aarch64/cloud/base/build-gcp + parent: tmt-test + vars: + tmt_url: "https://pagure.io/{{ zuul.project.name }}" + tmt_ref: "{{ zuul.ref }}" + tmt_plan: "/tmt/plans/cloud/base/build-gcp" + distro: fedora-rawhide + compose: Fedora-latest + tf_arch: aarch64 +- job: + name: build-images-aarch64/cloud/base/build-generic + parent: tmt-test + vars: + tmt_url: "https://pagure.io/{{ zuul.project.name }}" + tmt_ref: "{{ zuul.ref }}" + tmt_plan: "/tmt/plans/cloud/base/build-generic" + distro: fedora-rawhide + compose: Fedora-latest + tf_arch: aarch64 +- job: + name: build-images-aarch64/cloud/base/build-uefi-uki + parent: tmt-test + vars: + tmt_url: "https://pagure.io/{{ zuul.project.name }}" + tmt_ref: "{{ zuul.ref }}" + tmt_plan: "/tmt/plans/cloud/base/build-uefi-uki" + distro: fedora-rawhide + compose: Fedora-latest + tf_arch: aarch64 +- job: + name: build-images-aarch64/container/base/build-generic + parent: tmt-test + vars: + tmt_url: "https://pagure.io/{{ zuul.project.name }}" + tmt_ref: "{{ zuul.ref }}" + tmt_plan: "/tmt/plans/container/base/build-generic" + distro: fedora-rawhide + compose: Fedora-latest + tf_arch: aarch64 +- job: + name: build-images-aarch64/container/base/build-generic-init + parent: tmt-test + vars: + tmt_url: "https://pagure.io/{{ zuul.project.name }}" + tmt_ref: "{{ zuul.ref }}" + tmt_plan: "/tmt/plans/container/base/build-generic-init" + distro: fedora-rawhide + compose: Fedora-latest + tf_arch: aarch64 +- job: + name: build-images-aarch64/container/base/build-generic-minimal + parent: tmt-test + vars: + tmt_url: "https://pagure.io/{{ zuul.project.name }}" + tmt_ref: "{{ zuul.ref }}" + tmt_plan: "/tmt/plans/container/base/build-generic-minimal" + distro: fedora-rawhide + compose: Fedora-latest + tf_arch: aarch64 +- job: + name: build-images-aarch64/container/toolbox/build-toolbox + parent: tmt-test + vars: + tmt_url: "https://pagure.io/{{ zuul.project.name }}" + tmt_ref: "{{ zuul.ref }}" + tmt_plan: "/tmt/plans/container/toolbox/build-toolbox" + distro: fedora-rawhide + compose: Fedora-latest + tf_arch: aarch64 +- job: + name: build-images-aarch64/desktop/kde/build-desktop-disk + parent: tmt-test + vars: + tmt_url: "https://pagure.io/{{ zuul.project.name }}" + tmt_ref: "{{ zuul.ref }}" + tmt_plan: "/tmt/plans/desktop/kde/build-desktop-disk" + distro: fedora-rawhide + compose: Fedora-latest + tf_arch: aarch64 +- job: + name: build-images-aarch64/desktop/kde/build-desktop-live + parent: tmt-test + vars: + tmt_url: "https://pagure.io/{{ zuul.project.name }}" + tmt_ref: "{{ zuul.ref }}" + tmt_plan: "/tmt/plans/desktop/kde/build-desktop-live" + distro: fedora-rawhide + compose: Fedora-latest + tf_arch: aarch64 +- job: + name: build-images-aarch64/desktop/workstation/build-disk + parent: tmt-test + vars: + tmt_url: "https://pagure.io/{{ zuul.project.name }}" + tmt_ref: "{{ zuul.ref }}" + tmt_plan: "/tmt/plans/desktop/workstation/build-disk" + distro: fedora-rawhide + compose: Fedora-latest + tf_arch: aarch64 +- job: + name: build-images-aarch64/desktop/workstation/build-live + parent: tmt-test + vars: + tmt_url: "https://pagure.io/{{ zuul.project.name }}" + tmt_ref: "{{ zuul.ref }}" + tmt_plan: "/tmt/plans/desktop/workstation/build-live" + distro: fedora-rawhide + compose: Fedora-latest + tf_arch: aarch64 +- job: + name: build-images-aarch64/server/guest/build-generic + parent: tmt-test + vars: + tmt_url: "https://pagure.io/{{ zuul.project.name }}" + tmt_ref: "{{ zuul.ref }}" + tmt_plan: "/tmt/plans/server/guest/build-generic" + distro: fedora-rawhide + compose: Fedora-latest + tf_arch: aarch64 +- job: + name: build-images-aarch64/server/host/build-generic + parent: tmt-test + vars: + tmt_url: "https://pagure.io/{{ zuul.project.name }}" + tmt_ref: "{{ zuul.ref }}" + tmt_plan: "/tmt/plans/server/host/build-generic" + distro: fedora-rawhide + compose: Fedora-latest + tf_arch: aarch64 +- job: + name: build-images-aarch64/vagrant/base/build-libvirt + parent: tmt-test + vars: + tmt_url: "https://pagure.io/{{ zuul.project.name }}" + tmt_ref: "{{ zuul.ref }}" + tmt_plan: "/tmt/plans/vagrant/base/build-libvirt" + distro: fedora-rawhide + compose: Fedora-latest + tf_arch: aarch64 +- job: + name: build-images-aarch64/vagrant/base/build-virtualbox + parent: tmt-test + vars: + tmt_url: "https://pagure.io/{{ zuul.project.name }}" + tmt_ref: "{{ zuul.ref }}" + tmt_plan: "/tmt/plans/vagrant/base/build-virtualbox" + distro: fedora-rawhide + compose: Fedora-latest + tf_arch: aarch64 +- job: + name: build-images-aarch64/wsl/build + parent: tmt-test + vars: + tmt_url: "https://pagure.io/{{ zuul.project.name }}" + tmt_ref: "{{ zuul.ref }}" + tmt_plan: "/tmt/plans/wsl/build" + distro: fedora-rawhide + compose: Fedora-latest + tf_arch: aarch64 + +- project: + check: + jobs: + + - build-images-x86_64/asahi/build-fex-rootfs + - build-images-x86_64/cloud/base/build-aws + - build-images-x86_64/cloud/base/build-azure + - build-images-x86_64/cloud/base/build-gcp + - build-images-x86_64/cloud/base/build-generic + - build-images-x86_64/cloud/base/build-uefi-uki + - build-images-x86_64/container/base/build-generic + - build-images-x86_64/container/base/build-generic-init + - build-images-x86_64/container/base/build-generic-minimal + - build-images-x86_64/container/toolbox/build-toolbox + - build-images-x86_64/desktop/kde/build-desktop-disk + - build-images-x86_64/desktop/kde/build-desktop-live + - build-images-x86_64/desktop/workstation/build-disk + - build-images-x86_64/desktop/workstation/build-live + - build-images-x86_64/server/guest/build-generic + - build-images-x86_64/server/host/build-generic + - build-images-x86_64/vagrant/base/build-libvirt + - build-images-x86_64/vagrant/base/build-virtualbox + - build-images-x86_64/wsl/build + - build-images-aarch64/asahi/build-fex-rootfs + - build-images-aarch64/cloud/base/build-aws + - build-images-aarch64/cloud/base/build-azure + - build-images-aarch64/cloud/base/build-gcp + - build-images-aarch64/cloud/base/build-generic + - build-images-aarch64/cloud/base/build-uefi-uki + - build-images-aarch64/container/base/build-generic + - build-images-aarch64/container/base/build-generic-init + - build-images-aarch64/container/base/build-generic-minimal + - build-images-aarch64/container/toolbox/build-toolbox + - build-images-aarch64/desktop/kde/build-desktop-disk + - build-images-aarch64/desktop/kde/build-desktop-live + - build-images-aarch64/desktop/workstation/build-disk + - build-images-aarch64/desktop/workstation/build-live + - build-images-aarch64/server/guest/build-generic + - build-images-aarch64/server/host/build-generic + - build-images-aarch64/vagrant/base/build-libvirt + - build-images-aarch64/vagrant/base/build-virtualbox + - build-images-aarch64/wsl/build diff --git a/.zuul.yaml.j2 b/.zuul.yaml.j2 new file mode 100644 index 0000000..3e7b118 --- /dev/null +++ b/.zuul.yaml.j2 @@ -0,0 +1,26 @@ +--- +{% set arches = arches.split() -%} +{% set plans = plans.split() -%} +{% for arch in arches -%} + {% for plan in plans %} +- job: + name: build-images-{{ arch }}{{ plan | replace("/tmt/plans", "") }} + parent: tmt-test + vars: + tmt_url: "https://pagure.io/{{ '{{' }} zuul.project.name {{ '}}' }}" + tmt_ref: "{{ '{{' }} zuul.ref {{ '}}' }}" + tmt_plan: "{{ plan }}" + distro: fedora-rawhide + compose: Fedora-latest + tf_arch: {{ arch }} + {%- endfor %} +{%- endfor %} + +- project: + check: + jobs: +{% for arch in arches -%} + {% for plan in plans %} + - build-images-{{ arch }}{{ plan | replace("/tmt/plans", "") }} + {%- endfor %} +{%- endfor %} diff --git a/Fedora.kiwi b/Fedora.kiwi index 6ac2adb..14ae803 100644 --- a/Fedora.kiwi +++ b/Fedora.kiwi @@ -7,15 +7,14 @@ <specification>Fedora Linux</specification> </description> <preferences> - <version>45</version> + <version>Rawhide</version> <packagemanager>dnf5</packagemanager> <locale>en_US</locale> <keytable>us</keytable> <timezone>UTC</timezone> - <release-version>45</release-version> + <release-version>rawhide</release-version> </preferences> <include from="this://./repositories/core.xml"/> - <include from="this://./repositories/kernel-sp12in.xml"/> <include from="this://./components/common.xml"/> <include from="this://./components/boot.xml"/> <include from="this://./components/desktops/common.xml"/> @@ -63,6 +62,7 @@ <include from="this://./teams/games.xml"/> <include from="this://./teams/security.xml"/> <include from="this://./teams/jam.xml"/> + <include from="this://./teams/robotics.xml"/> <packages type="bootstrap"> <package name="filesystem"/> </packages> diff --git a/Jenkinsfile b/Jenkinsfile deleted file mode 100644 index 1732307..0000000 --- a/Jenkinsfile +++ /dev/null @@ -1,163 +0,0 @@ -pipeline { - agent none - - options { - timestamps() - } - - environment { - KIWI_FILE = 'Fedora.kiwi' - IMAGE_TYPE = 'iso' - IMAGE_PROFILE = 'Workstation-Live' - IMAGE_VERSION = '45' - OUTPUT_DIR = 'outdir' - - B2_ENDPOINT = 'https://s3.eu-central-003.backblazeb2.com' - AWS_DEFAULT_REGION = 'eu-central-003' - ISO_BUCKET = 'dist-sayagit-fedora-iso' - - // Must match the <source path="..."/> in - // repositories/kernel-sp12in.xml. - KERNEL_SURFACE_REPO_URL = 'https://rpm.sayag.it/kernel-sp12in/fedora/45/aarch64' - - // awscli2 sends CRC32 checksums by default, which B2 rejects. Ask for - // them only where the S3 API requires them. - AWS_REQUEST_CHECKSUM_CALCULATION = 'when_required' - AWS_RESPONSE_CHECKSUM_VALIDATION = 'when_required' - } - - stages { - stage('Build Fedora Workstation Live ISO (ARM64)') { - agent { - kubernetes { - defaultContainer 'kiwi' - yaml """ -apiVersion: v1 -kind: Pod -metadata: - namespace: jenkins -spec: - nodeSelector: - kubernetes.io/arch: arm64 - containers: - - name: kiwi - image: fedora:44 - imagePullPolicy: Always - command: [ 'sleep' ] - args: [ 'infinity' ] - tty: true - securityContext: - privileged: true - resources: - requests: - cpu: "2" - memory: 4Gi - ephemeral-storage: 20Gi - limits: - memory: 12Gi - ephemeral-storage: 50Gi -""" - } - } - steps { - checkout scm - container('kiwi') { - script { - try { - // The kernel-surface RPM is a build input, not - // something this repository can produce: the image - // installs kernel-surface by name and <ignore>s - // Fedora's kernel packages. Its pipeline publishes - // it to rpm.sayag.it, which repositories/kernel-sp12in.xml - // points at directly, so there is nothing to stage - // here. Fail now rather than several minutes into - // kiwi on an unresolvable package name. - sh ''' - set -eux - - dnf --assumeyes install curl - - repomd="${KERNEL_SURFACE_REPO_URL}/repodata/repomd.xml" - if ! curl -fsS --retry 3 -o /dev/null "${repomd}"; then - echo "No kernel-surface repository at ${repomd}." >&2 - echo "Run the kernel-surface pipeline for Fedora ${IMAGE_VERSION} first." >&2 - exit 1 - fi - ''' - - sh ''' - dnf --assumeyes install git kiwi kiwi-systemdeps distribution-gpg-keys - git config --global --add safe.directory . - git submodule update --init --recursive - - ./kiwi-build \\ - --kiwi-file="${KIWI_FILE}" \\ - --image-type="${IMAGE_TYPE}" \\ - --image-profile="${IMAGE_PROFILE}" \\ - --output-dir "${OUTPUT_DIR}" - - ls -lh "${OUTPUT_DIR}-build" - ''' - } catch (Exception e) { - echo "Caught exception: ${e.getMessage()}" - currentBuild.result = 'FAILURE' - throw e - } - } - stash name: "fedora-workstation-live-iso-stash", includes: "${OUTPUT_DIR}-build/Fedora.aarch64-${IMAGE_VERSION}.iso" - } - } - } - - stage('Push Fedora Workstation Live ISO (ARM64)') { - agent { - kubernetes { - defaultContainer 's5cmd' - yaml """ -apiVersion: v1 -kind: Pod -metadata: - namespace: jenkins -spec: - containers: - - name: s5cmd - image: peakcom/s5cmd:v2.3.0 - imagePullPolicy: IfNotPresent - command: [ 'sleep' ] - args: [ 'infinity' ] - tty: true - resources: - requests: - cpu: "0.5" - memory: 4Gi -""" - } - } - steps { - container('s5cmd') { - unstash "fedora-workstation-live-iso-stash" - withCredentials([usernamePassword( - credentialsId: 'backblaze-b2-dist-iso', - usernameVariable: 'AWS_ACCESS_KEY_ID', - passwordVariable: 'AWS_SECRET_ACCESS_KEY')]) { - sh ''' - set -eux - - cd "${OUTPUT_DIR}-build" - src="Fedora.aarch64-${IMAGE_VERSION}.iso" - moddate=$(date -r "${src}" -u +"%Y%m%d-%H%M%S") - dst="Fedora.Surface-Pro-12in.${IMAGE_PROFILE}.${IMAGE_VERSION}.${moddate}.aarch64.iso" - mv "${src}" "${dst}" - ls -lh - - /s5cmd --endpoint-url "${B2_ENDPOINT}" cp \\ - --content-type "application/x-iso9660-image" \\ - "${dst}" \\ - "s3://${ISO_BUCKET}/fedora/${IMAGE_VERSION}/aarch64/${dst}" - ''' - } - } - } - } - } -} diff --git a/Makefile b/Makefile new file mode 100755 index 0000000..df63ab8 --- /dev/null +++ b/Makefile @@ -0,0 +1,16 @@ +.DEFAULT_GOAL := help + +# https://www.gnu.org/software/make/manual/html_node/Force-Targets.html#Force-Targets +.FORCE: + +# List of architectures to be tested +ARCHES = x86_64 aarch64 + +generate-zuul-config: .FORCE ## Generate zuul configuration from list of tmt plans + jinja2 -D arches="$(ARCHES)" -D plans="$$(tmt plan ls | tr '\n' ' ')" .zuul.yaml.j2 -o .zuul.yaml + +# See https://www.thapaliya.com/en/writings/well-documented-makefiles/ for details. +reverse = $(if $(1),$(call reverse,$(wordlist 2,$(words $(1)),$(1)))) $(firstword $(1)) + +help: .FORCE ## Show this help + @awk 'BEGIN {FS = ":.*##"; printf "$(info $(PRELUDE))"} /^[a-zA-Z_/-]+:.*?##/ { printf " \033[36m%-35s\033[0m %s\n", $$1, $$2 } /^##@/ { printf "\n\033[1m%s\033[0m\n", substr($$0, 5) } ' $(call reverse, $(MAKEFILE_LIST)) @@ -1,57 +1,42 @@ -# Fedora KIWI image descriptions, modified to build & launch for Surface Pro 12" Gen 1 +# fedora-kiwi-descriptions - +This project is used to manage the Fedora KIWI image descriptions used in composing Fedora release images. -It is the fork of the original [KIWI image descriptions](https://forge.fedoraproject.org/releng/kiwi-descriptions), modified for launching Fedora Linux Rawhide Live ISO on Surface Pro 12" Gen 1 (and further installing it on the device). +The `rawhide` branch is used for Fedora Rawhide images and each release branch is used by that release. -I bought this device as I viewed it as a great Linux GNOME tablet, but after several days, many hours of work of trying to do so, I must say that installing a distribution here (and then having it work fine) is a huge pain in the ass. +All changes should be made via the PR workflow. -> Special thanks to [harrisonvanderbyl](https://github.com/harrisonvanderbyl), this project wouldn't be possible without his huge contribution to this whole Linux on Surface ARM business! - -## How to run +## Image variants -**The compiled ISOs can be downloaded [here](https://dist.sayag.it/surface-pro-12in-ports/fedora/rawhide).** +Please look at [`VARIANTS`](VARIANTS.md) for details on the available +configurations that can be built. -This KIWI project is built mainly on the base of Fedora Workstation Rawhide LiveCD ISO. Trying a stable version (the latest is Fedora 44 at the time of writing this) is possible, but not tested for now. +## Image build quickstart -If you want to compile this image manually, **the build arch must be `aarch64`**. It means that if you are on an `amd64` machine, you would have to use aarch64 instructions emulation tools like `binfmt`. Unfortunately, such a tool will drastically increase the compilation time. +This is generally tested and expected to run on the latest stable release of Fedora Linux. +Other distributions may work, but there are no guarantees. -To build this on Fedora Linux: +Set up your development environment and run the image build (substitute `<image_type>` and `<image_profile>` for the appropriate settings): ```bash -# Fetch submodules (if you haven't yet) -[]$ git submodule update --init --recursive # Install kiwi []$ sudo dnf --assumeyes install kiwi kiwi-systemdeps distribution-gpg-keys # Run the image build []$ sudo ./kiwi-build --kiwi-file=Fedora.kiwi --image-type=<image_type> --image-profile=<image_profile> --output-dir ./outdir -# An example for Workstation Live CD ISO, takes around 16 minutes -[]$ sudo ./kiwi-build --kiwi-file=Fedora.kiwi --image-type=iso --image-profile=Workstation-Live --output-dir ./outdir ``` -## What is left out (for now) - -* Live CD has to run in RAM, so `rd.live.ram=1` is set for cmdline. Otherwise, at least on my ancient flash drive, it fails to load multiple necessary services, including `polkit`. So, ~5 minutes of loading on USB 2 drive, while screen is not backlit, is to be expected. -* No rescue vmlinuz. -* No secure boot possible for this ISO for now, as the platform used is `efi` and not `uefi`. -* No GRUB auto hidden menu. Trying to have the menu hidden results in system restarting after trying to boot it. -* Hardware video encoding/decoding needs a firmware blob the image is not allowed to ship. The `qcom/vpu/vpu30_p1_s7.mbn` that `linux-firmware` provides is the same codec signed with Qualcomm's SecTools *test* key chain, which a retail Surface's TrustZone rejects -- `qcom_scm_pas_init_image()` fails and the kernel logs `qcom-iris aa00000.video-codec: error -22 initializing firmware`. The production-signed build exists only inside Microsoft's Surface driver package, which grants no redistribution right, so what ships here is the means and not the blob: - * If you kept the Windows ARM64 partition, `surface-video-firmware.service` finds it on the first boot after install and copies `qcvss8380_pa.mbn` out of its DriverStore. Nothing to do. - * If Windows is gone, download the [Surface Pro 12-inch driver pack](https://www.microsoft.com/en-us/download/details.aspx?id=108199) (~500 MB MSI) and run `sudo surface-video-firmware.sh -m /path/to/SurfacePro_12in_*.msi`. There is no automatic download: the Download Center hands out per-session links. - - The kernel's device tree already points `iris` at `/lib/firmware/qcom/x1p42100/Microsoft/Surface12/qcvss8380_pa.mbn`, so the driver picks it up as soon as it is there. -* Suspend on Snapdragon X is still very unstable. No deep sleep is available, so `mem_sleep_default=s2idle` was set. Even that leads to compromises as suspending via GNOME results in hard freeze, so the default power button behavior was changed to `interactive` and should not be changed back to `suspend`. - -## Image variants - -Please look at [`VARIANTS`](VARIANTS.md) for details on the available configurations that can be built. - ## CI information -This project is yet to adapt CI, but it is coming. +This project is tested using the [Software Factory Zuul CI instance](https://fedora.softwarefactory-project.io/zuul/project/pagure.io/fedora-kiwi-descriptions) +using the [Test Management Tool](https://tmt.readthedocs.io/). + +The Zuul configuration is generated from the Jinja2 template `.zuul.yaml.j2`. +When adding or removing a tmt plan, please run the following command to regenerate the Zuul configuration: -For now the images are being built and tested manually on my personal Surface Pro 12" Gen 1 (16 GB RAM, 512 GB storage). +```bash +[]$ make generate-zuul-config +``` ## Licensing diff --git a/components/boot.xml b/components/boot.xml index 11b48a5..a46e723 100644 --- a/components/boot.xml +++ b/components/boot.xml @@ -9,12 +9,7 @@ <requires profile="BootCore"/> </profile> </profiles> - <!-- Surface Pro 12" (Snapdragon X1P-42-100) is a standard UEFI/GPT aarch64 - device, no force_mbr/disk_start_sector/editbootinstall RPi-legacy - quirks needed, those are for boards whose own firmware boot stage - requires an MBR + specific boot sector offset before handing off to - grub. --> - <preferences profiles="BootDiskCore" arch="aarch64"> + <preferences profiles="BootDiskCore" arch="x86_64,riscv64"> <type image="oem" filesystem="btrfs" btrfs_root_is_subvolume="true" btrfs_set_default_volume="false" fsmountoptions="x-systemd.growfs,compress=zstd:1" kernelcmdline="rhgb quiet" devicepersistency="by-uuid" @@ -32,57 +27,99 @@ </oemconfig> </type> </preferences> + <preferences profiles="BootDiskCore" arch="aarch64"> + <type image="oem" + filesystem="btrfs" btrfs_root_is_subvolume="true" btrfs_set_default_volume="false" fsmountoptions="x-systemd.growfs,compress=zstd:1" + kernelcmdline="rhgb quiet" devicepersistency="by-uuid" force_mbr="true" editbootinstall="editbootinstall_rpilegacy.sh" + bootpartition="true" bootpartsize="2000" bootfilesystem="ext4" efipartsize="500" disk_start_sector="34816" firmware="uefi" + rootfs_label="fedora" + > + <bootloader name="grub2" bls="true" console="console" timeout="5"/> + <systemdisk name="fedora"> + <volume name="@root=root"/> + <volume name="home" parent="/"/> + <volume name="var" parent="/"/> + </systemdisk> + <oemconfig> + <oem-resize>false</oem-resize> + </oemconfig> + </type> + </preferences> + <preferences profiles="BootDiskCore" arch="ppc64le"> + <type image="oem" + filesystem="btrfs" btrfs_root_is_subvolume="true" btrfs_set_default_volume="false" fsmountoptions="x-systemd.growfs,compress=zstd:1" + kernelcmdline="rhgb quiet" devicepersistency="by-uuid" + bootpartition="true" bootpartsize="2000" bootfilesystem="ext4" firmware="ofw" + rootfs_label="fedora" + > + <bootloader name="grub2" bls="true" console="console" timeout="5"/> + <systemdisk> + <volume name="@root=root"/> + <volume name="home" parent="/"/> + <volume name="var" parent="/"/> + </systemdisk> + <oemconfig> + <oem-resize>false</oem-resize> + </oemconfig> + </type> + </preferences> + <preferences profiles="BootDiskCore" arch="s390x"> + <type image="oem" + filesystem="btrfs" btrfs_root_is_subvolume="true" btrfs_set_default_volume="false" fsmountoptions="x-systemd.growfs,compress=zstd:1" + kernelcmdline="no_timer_check console=tty1 console=ttyS0,115200n8" + devicepersistency="by-uuid" + bootpartition="true" bootpartsize="2000" bootfilesystem="ext4" + rootfs_label="fedora" + > + <bootloader name="zipl" timeout="1"/> + <systemdisk> + <volume name="@root=root"/> + <volume name="home" parent="/"/> + <volume name="var" parent="/"/> + </systemdisk> + <oemconfig> + <oem-resize>false</oem-resize> + </oemconfig> + </type> + </preferences> <packages type="bootstrap" patternType="plusRecommended" profiles="BootCore,BootCoreUKI,BootCoreLive"> <package name="grubby"/> </packages> <packages type="image" patternType="plusRecommended" profiles="BootCore,BootCoreLive"> - <package name="grub2-efi-aa64"/> - <package name="grub2-efi-aa64-modules"/> - <package name="shim-signed-aa64"/> + <package name="grub2-efi-aa64" arch="aarch64"/> + <package name="grub2-efi-aa64-modules" arch="aarch64"/> + <package name="grub2-efi-riscv64" arch="riscv64"/> + <package name="grub2-efi-riscv64-modules" arch="riscv64"/> + <package name="grub2-efi-ia32" arch="x86_64"/> + <package name="grub2-efi-ia32-modules" arch="x86_64"/> + <package name="grub2-efi-x64" arch="x86_64"/> + <package name="grub2-efi-x64-modules" arch="x86_64"/> + <package name="grub2-pc" arch="x86_64"/> + <package name="grub2-pc-modules" arch="x86_64"/> + <package name="grub2-ppc64le" arch="ppc64le"/> + <package name="s390utils-base" arch="s390x"/> + <package name="shim-signed-aa64" arch="aarch64"/> + <package name="shim-signed-ia32" arch="x86_64"/> + <package name="shim-signed-x64" arch="x86_64"/> + <package name="shim-unsigned-riscv64" arch="riscv64"/> <package name="systemd-oomd-defaults"/> <package name="systemd-resolved"/> </packages> - <!-- Surface Pro 12" (Snapdragon X1P-42-100) kernel selection. One block for - every profile that needs a kernel: BootCore, BootCoreLive, and - BootDiskCore through its <requires profile="BootCore"/> above. - - kernel-surface is vanilla upstream plus the miasvanklei overlay's patch - set for this board (device tree, SAM RTC, SAM suspend workaround, - CAMSS/CSI-2, remoteproc attach, clk/PCI/irqchip fixes). It is built from - the sibling ../kernel-surface checkout and comes from the repository - repositories/kernel-sp12in.xml adds. - - It is a single package (kernel image, every module, device trees) and - Provides kernel, kernel-core, kernel-modules, kernel-modules-core and - kernel-modules-extra, so anything with a plain Requires on one of those - resolves against it. That is why no -modules/-modules-extra entry is - needed in any profile any more. - - Fedora's split kernel packages are ignored by name instead, so dnf can - never drag one in as a dependency. kernel-uki-dtbloader is ignored as - well: kernel-surface Conflicts it, so without the exclusion any package - pulling it in would fail the depsolve instead of just losing it. It - bakes in ~3000 boards' dtbs (.dtbauto sections), does not carry this - board, and is a hard Requires of the plain "kernel" metapackage on - aarch64, which makes that metapackage uninstallable here too, since it - is also the only thing that could satisfy kernel-core by name. - - Consequence for the profiles this fork does not target: the ones that - still ask for a Fedora kernel by name through BootCore, namely - Server-Host-Generic (kernel) and Cloud-Base-Azure (kernel-modules), - cannot depsolve. Everything this device builds (Live via BootCoreLive, - disk via BootDiskCore) takes its kernel from here. --> - <packages type="image" patternType="plusRecommended" profiles="BootCore,BootCoreLive"> + <packages type="image" patternType="plusRecommended" profiles="BootCore"> <ignore name="kernel-*debug*"/> - <ignore name="kernel-core"/> - <ignore name="kernel-modules"/> - <ignore name="kernel-modules-core"/> - <ignore name="kernel-modules-extra"/> - <ignore name="kernel-uki-dtbloader"/> - <package name="kernel-surface"/> + <package name="kernel-core"/> + </packages> + <packages type="image" patternType="plusRecommended" profiles="BootCoreLive"> + <ignore name="kernel-*debug*"/> + <!-- Use kernel-uki-dtbloader for aarch64 --> + <package name="kernel-core" arch="x86_64,riscv64,ppc64le,s390x"/> + <package name="kernel-uki-dtbloader" arch="aarch64"/> </packages> <packages type="image" patternType="plusRecommended" profiles="BootCoreUKI"> - <package name="shim-signed-aa64"/> + <package name="shim-signed-aa64" arch="aarch64"/> + <package name="shim-signed-ia32" arch="x86_64"/> + <package name="shim-signed-x64" arch="x86_64"/> + <package name="shim-unsigned-riscv64" arch="riscv64"/> <package name="systemd-oomd-defaults"/> <package name="systemd-resolved"/> <package name="kernel-uki-virt"/> @@ -90,16 +127,21 @@ <package name="uki-direct"/> </packages> <packages type="iso" patternType="plusRecommended" profiles="BootCore,BootCoreLive"> - <package name="grub2-efi-aa64-cdboot"/> + <package name="grub2-efi-aa64-cdboot" arch="aarch64"/> + <package name="grub2-efi-riscv64-cdboot" arch="riscv64"/> + <package name="grub2-efi-ia32-cdboot" arch="x86_64"/> + <package name="grub2-efi-x64-cdboot" arch="x86_64"/> </packages> <packages type="image" patternType="plusRecommended" profiles="BootDiskCore"> + <ignore name="kernel-*debug*"/> + <package name="arm-image-installer" arch="aarch64"/> <package name="glibc-all-langpacks"/> - <!-- Surface Pro 12": the kernel comes from the shared BootCore block - above, which this profile requires. arm-image-installer and - uboot-images-armv8 dropped, they exist for flashing/booting other - ARM SBCs (device-tree selection, U-Boot), not relevant to this - single UEFI/GPT device. --> + <package name="kernel"/> + <package name="kernel-modules"/> + <package name="kernel-modules-extra"/> <package name="btrfs-progs"/> <package name="udisks2-btrfs"/> + <package name="uboot-images-armv8" arch="aarch64"/> + <package name="uboot-images-riscv64" arch="riscv64"/> </packages> </image> diff --git a/components/common.xml b/components/common.xml index 506cf73..dc1f34c 100644 --- a/components/common.xml +++ b/components/common.xml @@ -9,5 +9,6 @@ </packages> <packages type="image" patternType="plusRecommended" profiles="HardwareCommon"> <namedCollection name="hardware-support"/> + <package name="bcm283x-firmware" arch="aarch64"/> </packages> </image> diff --git a/components/liveinstall.xml b/components/liveinstall.xml index 6b683b2..c324769 100644 --- a/components/liveinstall.xml +++ b/components/liveinstall.xml @@ -5,18 +5,46 @@ <requires profile="BootCoreLive"/> </profile> </profiles> + <preferences profiles="LiveInstall" arch="x86_64"> + <type image="iso" + publisher="Fedora Project" volid="Fedora_Linux" application_id="Fedora_Linux" + primary="true" flags="dmsquash" filesystem="erofs" erofscompression="lzma,level=6" mediacheck="true" + firmware="uefi" efiparttable="gpt" efifatimagesize="30" kernelcmdline="quiet rhgb" + fscreateoptions="-Efragments -C 1048576" + > + <bootloader name="grub2" grub_template="grub-x86.cfg.iso-template" console="console" timeout="10"/> + </type> + </preferences> <preferences profiles="LiveInstall" arch="aarch64"> <type image="iso" publisher="Fedora Project" volid="Fedora_Linux" application_id="Fedora_Linux" primary="true" flags="dmsquash" filesystem="erofs" erofscompression="lzma,level=6" mediacheck="true" - firmware="efi" efiparttable="gpt" efifatimagesize="30" - kernelcmdline="quiet rhgb mem_sleep_default=s2idle clk_ignore_unused pd_ignore_unused systemd.tpm2_wait=0 rd.live.ram=1" + firmware="uefi" efiparttable="gpt" efifatimagesize="30" kernelcmdline="quiet rhgb" fscreateoptions="-Efragments -C 1048576" - editbootconfig="surface-editbootconfig.sh" > <bootloader name="grub2" grub_template="grub-arm.cfg.iso-template" console="console" timeout="10"/> </type> </preferences> + <preferences profiles="LiveInstall" arch="riscv64"> + <type image="iso" + publisher="Fedora Project" volid="Fedora_Linux" application_id="Fedora_Linux" + primary="true" flags="dmsquash" filesystem="erofs" erofscompression="lzma,level=6" mediacheck="true" + firmware="uefi" efiparttable="gpt" efifatimagesize="30" kernelcmdline="quiet rhgb" + fscreateoptions="-Efragments -C 1048576" + > + <bootloader name="grub2" grub_template="grub-riscv64.cfg.iso-template" console="console" timeout="10"/> + </type> + </preferences> + <preferences profiles="LiveInstall" arch="ppc64le"> + <type image="iso" + publisher="Fedora Project" volid="Fedora_Linux" application_id="Fedora_Linux" + primary="true" flags="dmsquash" filesystem="erofs" erofscompression="lzma,level=6" mediacheck="true" + firmware="ofw" kernelcmdline="quiet rhgb" + fscreateoptions="-Efragments -C 1048576" + > + <bootloader name="grub2" grub_template="grub-ppc.cfg.iso-template" console="console" timeout="10"/> + </type> + </preferences> <packages type="iso" patternType="plusRecommended" profiles="LiveInstall"> <!-- Filter out unwanted EFI files from the embedded ESP, see rhbz#2358785 --> <file name="iso-esp-excludes.yaml" target="image/exclude_files_efifatimage.yaml"/> @@ -29,10 +57,9 @@ <package name="dracut-live"/> <package name="glibc-all-langpacks"/> <package name="isomd5sum"/> - <!-- Surface Pro 12": no kernel package here at all. BootCoreLive's - kernel-surface already carries every module, and its %posttrans - kernel-install leaves the /boot vmlinuz that grub2's ISO kernel - lookup needs. See the kernel block in components/boot.xml. --> + <package name="kernel"/> + <package name="kernel-modules"/> + <package name="kernel-modules-extra"/> <package name="livesys-scripts"/> <package name="btrfs-progs"/> <package name="udisks2-btrfs"/> @@ -2,14 +2,6 @@ set -euxo pipefail -installarch=$(uname -m) -kver=$(basename "$(ls -d /usr/lib/modules/*/)") - -if [[ $installarch != "aarch64" ]]; then - printf 'Error: this specific config is only meant for Surface Pro 12", and it is built on ARM64 chip (you have "%s" as build arch).' "$installarch" - exit 1 -fi - #====================================== # Functions... #-------------------------------------- @@ -49,22 +41,13 @@ if [[ "$kiwi_profiles" != *"Container"* ]] && [[ "$kiwi_profiles" != *"FEX"* ]] echo "GRUB_DISABLE_SUBMENU=true" >> /etc/default/grub ## Disable recovery entries to match Fedora echo "GRUB_DISABLE_RECOVERY=true" >> /etc/default/grub - ## Surface Pro 12" (Snapdragon X1P-42-100): grub's gfxterm/GOP video probing - ## crashes on this GPU. Force plain text console, skip framebuffer handoff. - echo "GRUB_TERMINAL_OUTPUT=console" >> /etc/default/grub - echo "GRUB_GFXPAYLOAD_LINUX=text" >> /etc/default/grub - ## Surface Pro 12": GRUB_DEVICETREE is the only mechanism Fedora honours for - ## putting a devicetree line in a BLS entry -- 20-grub.install's mkbls emits - ## "devicetree /dtb-$kver/$GRUB_DEVICETREE". /etc/kernel/devicetree does - ## nothing here: /boot/<machine-id> does not exist, so kernel-install runs - ## with layout=other and 90-loaderentry.install (which would read it) bails. - echo "GRUB_DEVICETREE=qcom/x1p42100-microsoft-sp12in.dtb" >> /etc/default/grub - ## Upstream sets menu_auto_hide=1 + boot_indeterminate=1 here for Disk images - ## to match anaconda's behaviour. Deliberately not done for Surface Pro 12": - ## with the menu hidden, GRUB counts down GRUB_TIMEOUT against a blank screen - ## and then crashes during the hand-off on this firmware, so the first boot - ## always fails and only the second succeeds. The equivalent for the - ## anaconda-installed system is the /etc/anaconda/conf.d drop-in below. + if [[ "$kiwi_profiles" == *"Disk"* ]]; then + ## Write `menu_auto_hide=1` into grubenv to match Fedora anaconda installs + ## Set boot_indeterminate to avoid displaying the grub menu on first boot + if [[ "$kiwi_profiles" != *"Server"* ]] || [[ "$kiwi_profiles" != *"Cloud"* ]]; then + grub2-editenv /boot/grub2/grubenv set menu_auto_hide=1 boot_indeterminate=1 + fi + fi fi #====================================== @@ -162,6 +145,15 @@ fi # Setup default customizations #-------------------------------------- +if [[ "$kiwi_profiles" == *"Disk"* ]]; then + # Find the architecture we are on + installarch=$(uname -m) + # Setup Raspberry Pi firmware + if [[ $installarch == "aarch64" ]]; then + cp -a /usr/share/uboot/rpi_arm64/u-boot.bin /boot/efi/rpi-u-boot.bin + fi +fi + if [[ "$kiwi_profiles" == *"Server"* ]]; then # Trigger lvm-devices-import.path and .service to create # a new /etc/lvm/devices/system.devices for the root VG. @@ -268,7 +260,7 @@ if [[ "$kiwi_profiles" == *"Container"* ]] || [[ "$kiwi_profiles" == *"FEX"* ]]; releasever=eln fi - rpm --import /usr/share/pki/rpm-gpg/RPM-GPG-KEY-fedora-$releasever-primary + rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-$releasever-primary echo "# fstab intentionally empty for containers" > /etc/fstab @@ -349,6 +341,43 @@ FOE EOF fi +if [[ "$kiwi_profiles" == *"Robotics"* ]]; then + +# Extend the post-configuration from the live-desktop, set default shortcuts to IDEs +cat >> /var/lib/livesys/livesys-session-extra << EOF +# disable screensaver locking +cat >> /usr/share/glib-2.0/schemas/org.gnome.desktop.screensaver.gschema.override << FOE +[org.gnome.desktop.screensaver] +lock-enabled=false +FOE + +# and hide the lock screen option +cat >> /usr/share/glib-2.0/schemas/org.gnome.desktop.lockdown.gschema.override << FOE +[org.gnome.desktop.lockdown] +disable-lock-screen=true +FOE + +# make the installer show up +if [ -f /usr/share/applications/liveinst.desktop ]; then + # Show harddisk install in shell dash + sed -i -e 's/NoDisplay=true/NoDisplay=false/' /usr/share/applications/liveinst.desktop "" + # need to move it to anaconda.desktop to make shell happy + mv /usr/share/applications/liveinst.desktop /usr/share/applications/anaconda.desktop + + cat >> /usr/share/glib-2.0/schemas/org.gnome.shell.gschema.override << FOE +[org.gnome.shell] +favorite-apps=['org.mozilla.firefox.desktop', 'org.qt-project.qtcreator.desktop', 'arduino.desktop', 'gnome-terminal.desktop','nautilus.desktop', 'anaconda.desktop'] +FOE + +fi + +# rebuild schema cache with any overrides we installed +glib-compile-schemas /usr/share/glib-2.0/schemas + +EOF + +fi + if [[ "$kiwi_profiles" == *"Design_suite"* ]]; then # Add link to lists of tutorials cat >> /usr/share/applications/list-design-tutorials.desktop << FOE @@ -433,285 +462,6 @@ EOF fi #====================================== -# Surface Pro 12" customizations -#-------------------------------------- - -install -Dm644 /tmp/SayaAndy/surface-pro-12-inch-linux-fedora/etc/yum.repos.d/kernel-sp12in.repo \ - /etc/yum.repos.d/kernel-sp12in.repo - -# Device tree. kernel-surface compiles the patched dts in-tree and installs the -# result twice: into its own module tree (dtb/qcom, from dtbs_install) and into -# /usr/lib/surface-dtb/<kver>/. The latter is the master copy -# 60-surface-dtb.install re-stages into a kernel that shipped without one, -# which is the only reason the image no longer carries a prebuilt blob of its -# own -- the description installs kernel-surface by name and <ignore>s Fedora's -# kernel packages, so the package is always there. -# -# One name throughout, upstream's: this block, GRUB_DEVICETREE above, both -# kernel-install plugins, /etc/kernel/devicetree, and the ISO grub template. -# -# The module-tree and /boot copies plus the /boot/dtb symlink are what that hook -# and grubby's 10-devicetree.install would normally produce, done up front here -# because kernel-install does not run again during this build -- without the -# module-tree copy, anything keyed off /usr/lib/modules/$kver/dtb (including the -# anaconda post-script) finds nothing and silently does nothing. -dtb_name=x1p42100-microsoft-sp12in.dtb -# One directory per kernel version under /usr/lib/surface-dtb: kernel-surface is -# installonly, so nothing it owns can be version-unqualified. Only one release is -# ever installed at this point in the build, but glob anyway rather than assume. -dtb_src=$(ls -1 /usr/lib/surface-dtb/*/"$dtb_name" 2>/dev/null | sort -V | tail -n1) -if [[ -z "$dtb_src" ]]; then - printf 'Error: no %s under /usr/lib/surface-dtb/, so kernel-surface (built from ../kernel-surface) is not installed.\n' "$dtb_name" >&2 - exit 1 -fi -install -Dm644 "$dtb_src" "/usr/lib/modules/$kver/dtb/qcom/$dtb_name" -install -Dm644 "$dtb_src" "/boot/dtb-$kver/qcom/$dtb_name" -# dtbs_install ships every arm64 device tree, ~1000 boards, and the module tree -# goes straight into the image filesystem. This image targets exactly one board, -# so drop the rest -- the same objection that rules out kernel-uki-dtbloader in -# components/boot.xml. Only affects the image; a later kernel-surface update on -# the installed system restores the full tree. -find "/usr/lib/modules/$kver/dtb" -mindepth 1 \ - \! -path "/usr/lib/modules/$kver/dtb/qcom" \ - \! -name "$dtb_name" \ - -delete -# /boot/dtb -> dtb-$kver is what grubby's 10-devicetree.install maintains, and -# what the boot loader entry's devicetree path resolves through -ln -sfn "dtb-$kver" /boot/dtb -# Defer qcom_q6v5_pas past switch-root so the DSPs' auto_boot can actually find -# their firmware; see the comments in the file for the full failure mode. -install -Dm644 /tmp/SayaAndy/surface-pro-12-inch-linux-fedora/etc/dracut.conf.d/surface-pro-12-inch.conf \ - /etc/dracut.conf.d/surface-pro-12-inch.conf -install -Dm644 /tmp/SayaAndy/surface-pro-12-inch-linux-fedora/etc/kernel/cmdline \ - /etc/kernel/cmdline -install -Dm644 /tmp/SayaAndy/surface-pro-12-inch-linux-fedora/etc/kernel/devicetree \ - /etc/kernel/devicetree -install -Dm644 /tmp/SayaAndy/surface-pro-12-inch-linux-fedora/etc/kernel/install.conf \ - /etc/kernel/install.conf -install -Dm755 /tmp/SayaAndy/surface-pro-12-inch-linux-fedora/usr/lib/kernel/install.d/60-surface-dtb.install \ - /usr/lib/kernel/install.d/60-surface-dtb.install -# Puts the "devicetree" line into the BLS entry. This is the only mechanism that -# survives an anaconda install: /etc/kernel/devicetree is never read (layout is -# always "other" on Fedora, so 90-loaderentry.install bails) and GRUB_DEVICETREE -# is dropped when anaconda rewrites /etc/default/grub from its own key list. -# kernel-install plugins do run in the target during installation, and sorting -# after 20-grub.install means the entry it generates is already there to patch. -install -Dm755 /tmp/SayaAndy/surface-pro-12-inch-linux-fedora/usr/lib/kernel/install.d/95-surface-dtb-patch.install \ - /usr/lib/kernel/install.d/95-surface-dtb-patch.install -install -Dm644 /tmp/SayaAndy/surface-pro-12-inch-linux-fedora/etc/udev/rules.d/61-sensors-surface-pro-12-inch.rules \ - /etc/udev/rules.d/61-sensors-surface-pro-12-inch.rules - -if [[ "$kiwi_profiles" == *"Live"* ]]; then - # Stop anaconda hiding the GRUB menu on the installed system's first boot. - # Only meaningful in the installer environment, hence Live-only; see the - # comments in the file for why a hidden menu breaks this device. - install -Dm644 /tmp/SayaAndy/surface-pro-12-inch-linux-fedora/etc/anaconda/conf.d/90-surface-pro-12-inch.conf \ - /etc/anaconda/conf.d/90-surface-pro-12-inch.conf - - # Ship the CD-boot grub on the ISO, not the disk-boot one. - # - # kiwi picks the ISO's EFI loader by globbing the image root (see - # Defaults.get_unsigned_grub_loader, target_type='iso'). That pattern list - # has a CD-boot entry for x86_64 (gcdx64.efi) but none for aarch64, so here - # it falls through to grubaa64.efi -- the *disk* image, whose baked-in grub - # prefix is /EFI/fedora. Meanwhile kiwi writes its earlyboot config to - # /EFI/BOOT/grub.cfg, and iso-esp-excludes.yaml deletes "fedora" from the - # embedded ESP outright (rhbz#2358785). Net result on aarch64: the loader - # looks for its config in a directory that was deliberately removed, fails - # to load normal.mod, and dies before drawing anything -- black screen. - # - # gcdaa64.efi is byte-for-byte the same grub except its prefix is /EFI/BOOT, - # which is exactly where kiwi puts the config. Overwrite the path kiwi globs - # so it picks that one up instead. - # - # Only affects direct UEFI boot. Ventoy never executes this binary -- it - # loopback-mounts the ISO and runs /boot/grub2/grub.cfg under its own grub. - cp -a /boot/efi/EFI/fedora/gcdaa64.efi /boot/efi/EFI/fedora/grubaa64.efi -fi - -# 51-dracut-rescue.install isn't UKI-aware -- it unconditionally sed's a BLS -# loader entry that layout=uki never creates. Mask it (kernel-install(8)'s -# documented way to disable a plugin: a /dev/null symlink of the same name). -mkdir -p /etc/kernel/install.d -ln -sf /dev/null /etc/kernel/install.d/51-dracut-rescue.install -# kernel-surface's %posttrans scriptlet already ran kernel-install once, before -# this mask existed (root overlay lands after package install), leaving a -# stale rescue image behind. Remove it now so kiwi's systemd_boot EFI-FAT-image -# step doesn't try to cram it in too. -rm -f /boot/initramfs-0-rescue-*.img /boot/loader/entries/*-0-rescue.conf - -# GPU/ADSP/CDSP firmware + qcom DSP/sensor share config from the device tree repo -# (readme.md: "recursively copy the files in ./lib/ to /lib/", same for ./usr/) -cp -a /tmp/harrisonvanderbyl/surface-pro-12-inch-linux/lib/. /lib/ -cp -a /tmp/harrisonvanderbyl/surface-pro-12-inch-linux/usr/. /usr/ - -build_tmp=$(mktemp -d) - -# Snapshot what's installed before pulling in build-only tooling, so we can -# remove exactly what this block adds afterward -- and nothing Kiwi's own -# package lists (other team/desktop profiles) already wanted installed. -pkgs_before=$(mktemp) -rpm -qa --qf '%{NAME}\n' | sort > "$pkgs_before" - -# Wi-Fi (ath12k) board file fixup, adapted from dwhinham/linux-surface-pro-11 -dnf install -y python3 curl zstd -( - cd "$build_tmp" - cp /lib/firmware/ath12k/WCN7850/hw2.0/board-2.bin* . - if [ -f board-2.bin.zst ]; then - zstd -d board-2.bin.zst - elif [ -f board-2.bin.xz ]; then - xz -d board-2.bin.xz - fi - curl --output bdencoder.py -sL \ - https://raw.githubusercontent.com/qca/qca-swiss-army-knife/refs/heads/master/tools/scripts/ath12k/ath12k-bdencoder - python3 bdencoder.py --extract board-2.bin - rm -f bdencoder.py - mv "bus=pci,vendor=17cb,device=1107,subsystem-vendor=17cb,subsystem-device=3378,qmi-chip-id=2,qmi-board-id=255.bin" \ - /lib/firmware/ath12k/WCN7850/hw2.0/board.bin -) - -# AudioReach topology; alsatplg (the topology *compiler*) is build-only, the -# compiled blob is what ships. alsa-ucm-utils' UCM profiles are read at runtime -# by the audio stack, so that one's installed separately, alongside v4l-utils below. -dnf install -y git cmake gcc gcc-c++ make pkgconf-pkg-config alsa-topology-utils m4 -( - cd /tmp/linux-msm/audioreach-topology - git clone https://github.com/linux-msm/audioreach-topology - cd audioreach-topology - export FW_LOCATION=/lib/firmware - cmake . - make - make install -) - -# hexagonrpc + libssc + iio-sensor-proxy (fastrpc/sensor stack); not packaged in Fedora -dnf install -y \ - systemd-devel libgudev-devel polkit-devel gtk3-devel python3-devel \ - meson ninja-build gcc gcc-c++ git pkgconf-pkg-config \ - libqmi-devel glib2-devel protobuf3-c-devel gobject-introspection-devel -# meson's default prefix is /usr/local, and Fedora's dynamic linker does not -# search there -- /etc/ld.so.conf.d ships only iscsi and pipewire entries. Without -# this, libhexagonrpc.so installs fine but ld.so can't find it, and hexagonrpcd -# dies at startup with "no libhexagonrpc.so" (which then takes iio-sensor-proxy -# down with it via Requires=). Cover both libdir spellings. -printf '/usr/local/lib\n/usr/local/lib64\n' > /etc/ld.so.conf.d/surface-pro-12-inch.conf -( - cd /tmp/harrisonvanderbyl/hexagonrpc - meson setup build - ninja -C build - ninja -C build install - ldconfig -) -( - cd /tmp/DylanVanAssche/libssc - meson setup _build - meson compile -C _build - meson install -C _build - ldconfig -) -( - cd /tmp/harrisonvanderbyl/iio-sensor-proxy - meson _build -Dssc-support=enabled -Dprefix=/usr - ninja -v -C _build install -) - -# Remove exactly what got newly installed since the snapshot above (compilers, -# -devel headers, alsatplg, and whatever they pulled in transitively). Anything -# that was already installed before -- because some other team/desktop profile -# in this same build wanted it, or it's part of the base image -- is left alone. -pkgs_new=$(comm -13 "$pkgs_before" <(rpm -qa --qf '%{NAME}\n' | sort)) -if [ -n "$pkgs_new" ]; then - dnf remove -y $pkgs_new -fi -rm -f "$pkgs_before" - -# UCM profiles read at runtime by the audio stack -dnf install -y alsa-ucm-utils - -install -Dm644 /tmp/SayaAndy/surface-pro-12-inch-linux-fedora/etc/systemd/system/hexagonrpc.service \ - /etc/systemd/system/hexagonrpc.service - -# iio-sensor-proxy keeps the unit its own build installed, and gets only the -# ordering against hexagonrpcd added on top. The drop-in is dead weight if that -# unit is not there, so check rather than let it pass silently. -test -f /usr/lib/systemd/system/iio-sensor-proxy.service -install -Dm644 /tmp/SayaAndy/surface-pro-12-inch-linux-fedora/etc/systemd/system/iio-sensor-proxy.service.d/60-surface-pro-12-inch.conf \ - /etc/systemd/system/iio-sensor-proxy.service.d/60-surface-pro-12-inch.conf - -# Only hexagonrpcd is enabled statically. iio-sensor-proxy is started through -# its D-Bus name by whatever asks for net.hadess.SensorProxy, which then pulls -# hexagonrpc.service in through the drop-in above. -systemctl enable hexagonrpc.service - -# Cameras (msm/camss). Nothing has to be wired up at boot. libcamera's "simple" -# pipeline handler claims qcom-camss and builds the media graph itself in -# configure(), including flipping the csiphy -> msm_csid0 link between the rear -# ov13858 and the front ov02c10, so a media-ctl unit only fights it: pinning -# csid0 to the rear sensor at boot leaves the front camera disconnected until -# something re-links it, and the formats such a unit has to guess are what made -# the old wireupcameras.service die with "Unable to setup formats: Invalid -# argument (22)" on every boot. -# -# v4l-utils stays, for inspecting the graph by hand -- media-ctl -p, and -# v4l2-ctl --stream-mmap on the RDI node to check the sensor below libcamera. -dnf install -y v4l-utils - -# The front ov02c10 needs a libcamera that knows its analogue gain model and -# black level; upstream libcamera has neither, and there is no plugin mechanism -# for them, but kernel-sp12in repo offers libcamera with supported models. -# Pulled in by name because it would otherwise only arrive as a dependency, -# which makes it easy to lose without noticing. -dnf install -y libcamera libcamera-ipa - -libcamera_nevra=$(rpm -q libcamera) -case "${libcamera_nevra}" in - *.sp12in*) printf 'Using %s\n' "${libcamera_nevra}" ;; - *) - printf 'Error: %s is Fedora'"'"'s libcamera, not the sp12in rebuild.\n' \ - "${libcamera_nevra}" >&2 - printf 'Fedora has probably bumped the release past the rebuild; rebase\n' >&2 - printf 'patches/ in ../libcamera and tag a new release suffix.\n' >&2 - exit 1 - ;; -esac - -# Hardware video decode needs firmware this image is not allowed to carry. The -# qcom/vpu/vpu30_p1_s7.mbn in linux-firmware is the same codec signed with -# Qualcomm's SecTools test keys, which a retail Surface's TrustZone rejects, and -# the production-signed build exists only inside Microsoft's Surface driver -# package, under terms that grant no redistribution right. -# -# So the image ships the means rather than the blob: a script that copies it out -# of a Windows install the owner already has a licence for, and a unit that runs -# that once on a dual-boot machine. Where Windows is gone, the script says which -# driver pack to download and how to point it at one. -dnf install -y msitools -install -Dm755 /tmp/SayaAndy/surface-pro-12-inch-linux-fedora/usr/local/bin/surface-video-firmware.sh \ - /usr/local/bin/surface-video-firmware.sh -install -Dm644 /tmp/SayaAndy/surface-pro-12-inch-linux-fedora/etc/systemd/system/surface-video-firmware.service \ - /etc/systemd/system/surface-video-firmware.service -systemctl enable surface-video-firmware.service - -# Suspend on Snapdragon is still very unstable. This is the reason why -# 'mem_sleep_default=s2idle' is set explicitly in the cmdline as 'deep' mode -# does not function at all. -# Even then, suspending via gnome settings daemon results in hard freeze. -# This is why: -# logind behavior is kept intact with suspend behavior. -# gnome default power button behavior was replaced with 'interactive'. -install -Dm644 /tmp/SayaAndy/surface-pro-12-inch-linux-fedora/etc/systemd/logind.conf.d/60-surface-power-key.conf \ - /etc/systemd/logind.conf.d/60-surface-power-key.conf -install -Dm644 /tmp/SayaAndy/surface-pro-12-inch-linux-fedora/etc/dconf/db/local.d/00-power-button \ - /etc/dconf/db/local.d/00-power-button -install -Dm644 /tmp/SayaAndy/surface-pro-12-inch-linux-fedora/etc/dconf/profile/user \ - /etc/dconf/profile/user - -dconf update - -restorecon -Rv /usr /lib /etc/systemd /etc/dconf /etc/udev/rules.d /etc/yum.repos.d - -#====================================== # Set the WSL name for ELN #-------------------------------------- if [[ "$kiwi_profiles" == *"WSL"* ]] && [[ "$kiwi_iname" == *"ELN"* ]]; then @@ -802,6 +552,4 @@ if [[ "$kiwi_profiles" == *"FEX"* ]]; then rm /usr/bin/rm fi -rm -rf /tmp/* - exit 0 diff --git a/docs/FedoraOnSurface.jpg b/docs/FedoraOnSurface.jpg Binary files differdeleted file mode 100644 index 6b37f3c..0000000 --- a/docs/FedoraOnSurface.jpg +++ /dev/null diff --git a/grub-arm.cfg.iso-template b/grub-arm.cfg.iso-template index 447a1f3..037ae79 100644 --- a/grub-arm.cfg.iso-template +++ b/grub-arm.cfg.iso-template @@ -16,7 +16,6 @@ set gfxpayload=keep insmod gzio insmod part_gpt insmod ext2 -insmod zstd terminal_input console terminal_output ${terminal_output} @@ -26,24 +25,16 @@ set timeout_style=${boot_timeout_style} search ${search_params} -# Surface Pro 12" (Snapdragon X1P-42-100): the dtb the entries below load is a -# plain file in this same loader directory on the ISO9660 filesystem. GRUB -# cannot read the erofs root image, and kiwi has no device tree support, so -# surface-editbootconfig.sh copies it there out of the kernel-surface RPM in the -# image root. See that script for why editbootconfig is the hook that can. menuentry "Start ${title}" --class fedora --class gnu-linux --class gnu --class os { - devicetree ($$root)${bootpath}/x1p42100-microsoft-sp12in.dtb linux ($$root)${bootpath}/${kernel_file} ${boot_options} initrd ($$root)${bootpath}/${initrd_file} } menuentry "Test this media & start ${title}" --class fedora --class gnu-linux --class gnu --class os { - devicetree ($$root)${bootpath}/x1p42100-microsoft-sp12in.dtb linux ($$root)${bootpath}/${kernel_file} ${boot_options} rd.live.check initrd ($$root)${bootpath}/${initrd_file} } submenu "Troubleshooting -->" { menuentry "Start ${title} in basic graphics mode" --class fedora --class gnu-linux --class gnu --class os { - devicetree ($$root)${bootpath}/x1p42100-microsoft-sp12in.dtb linux ($$root)${bootpath}/${kernel_file} ${boot_options} $${basicgfx} initrd ($$root)${bootpath}/${initrd_file} } diff --git a/maintainers.toml b/maintainers.toml index 6e86ff4..0ca48ff 100644 --- a/maintainers.toml +++ b/maintainers.toml @@ -1,7 +1,156 @@ -# You can read the original repo maintainers.toml at: -# https://forge.fedoraproject.org/releng/kiwi-descriptions/src/branch/rawhide/maintainers.toml +[spins.lxqt.x86_64] +fas = [ "zsun", "farchord", "ngompa" ] +maintainers = [ "Zamir SUN", "Steve Cossette", "Neal Gompa" ] +[spins.lxqt.aarch64] +fas = [ "zsun", "farchord", "ngompa" ] +maintainers = [ "Zamir SUN", "Steve Cossette", "Neal Gompa" ] -# Surface Pro 12" customizations -[surface-pro-12-inch] -fas = [ "SayaAndy" ] -maintainers = [ "Saya Andy" ] +[spins.xfce.x86_64] +fas = [ "nonamedotc", "kevin", "maxamillion" ] +maintainers = [ "Mukundan Ragavan", "Kevin Fenzi", "Adam Miller" ] +[spins.xfce.aarch64] +fas = [ "nonamedotc", "kevin", "maxamillion" ] +maintainers = [ "Mukundan Ragavan", "Kevin Fenzi", "Adam Miller" ] + +[kde.x86_64] +fas = [ "marcdeop", "ngompa" ] +maintainers = [ "Marc Deop", "Neal Gompa" ] +[kde.aarch64] +fas = [ "marcdeop", "ngompa" ] +maintainers = [ "Marc Deop", "Neal Gompa" ] + +[spins.kde-mobile.x86_64] +fas = [ "tdawson", "ngompa" ] +maintainers = [ "Troy Dawson", "Neal Gompa" ] +[spins.kde-mobile.aarch64] +fas = [ "tdawson", "ngompa" ] +maintainers = [ "Troy Dawson", "Neal Gompa" ] + +[spins.cinnamon.x86_64] +fas = [ "grinnz" ] +maintainers = [ "Dan Book" ] + +[spins.cosmic.x86_64] +fas = [ "ryanabx" ] +maintainers = [ "Ryan Brue" ] + +[spins.lxde.x86_64] +fas = [ "cwickert", "mtasaka" ] +maintainers = [ "Christoph Wickert", "Mamoru TASAKA" ] +[spins.lxde.aarch64] +fas = [ "cwickert", "mtasaka" ] +maintainers = [ "Christoph Wickert", "Mamoru TASAKA" ] + +[spins.mate_compiz.x86_64] +fas = [ "raveit65" ] +maintainers = [ "Wolfgang Ulbrich" ] + +[spins.soas.x86_64] +fas = [ "chimosky", "aperezbios" ] +maintainers = [ "Chihurumnaya Ibiam", "Alex Perez" ] +[spins.soas.aarch64] +fas = [ "chimosky", "aperezbios", ] +maintainers = [ "Chihurumnaya Ibiam", "Alex Perez" ] + +[labs.astronomy_kde.x86_64] +fas = [ "lupinix", "q5sys" ] +maintainers = [ "Christian Dersch", "JT Pennington" ] + +[labs.security.x86_64] +fas = [ "fab", "jsimon", "q5sys"] +maintainers = [ "Fabian Affolter", "Joerg Simon", "JT Pennington" ] + +[labs.design_suite.x86_64] +fas = [ "luya" ] +maintainers = [ "Luya Tshimbalanga" ] + +[labs.games.x86_64] +fas = [ "dogphilosopher", "owensz", "jaidenriordan", "lleyton", "ngompa" ] +maintainers = [ "Noel Miller", "Owen Zimmerman", "Jaiden Riordan", "Lleyton Gray", "Neal Gompa" ] + +[labs.jam_kde.x86_64] +fas = [ "q5sys" ] +maintainers = [ "JT Pennington" ] + +[labs.python_classroom.x86_64] +fas = [ "churchyard", "python-sig" ] +maintainers = [ "Miro Hrončok", "Python SIG" ] + +[labs.scientific_kde.x86_64] +fas = [ "q5sys", "lecris", "scitech" ] +maintainers = [ "JT Pennington", "Cristian Le", "SciTech SIG" ] + +[labs.scientific.x86_64] +fas = [ "q5sys", "lecris", "scitech" ] +maintainers = [ "JT Pennington", "Cristian Le", "SciTech SIG" ] + +[labs.robotics.x86_64] +fas = [ "lrossett", "robotics-sig" ] +maintainers = [ "Leonardo Rossetti", "Robotics SIG" ] + +[spins.i3.x86_64] +fas = [ "jflory7", "defolos", "nasirhm", "odilhao", "x3mboy" ] +maintainers = [ "Justin Flory", "Dan Čermák", "Nasir Hussain", "Odilon Junior", "Eduard Lucena" ] + +[eln] +fas = [ "sgallagh", "tdawson", "asamalik", "yselkowitz" ] +maintainers = [ "Stephen Gallagher", "Troy Dawson", "Adam Samalik", "Yaakov Selkowitz" ] + +[spins.budgie.x86_64] +fas = [ "joshstrobl" ] +maintainers = [ "Joshua Strobl" ] + +[spins.sway.x86_64] +fas = [ "alebastr", "jkonecny", "anthr76", "fale" ] +maintainers = [ "Aleksei Bavshin", "Jiří Konečný", "Anthony Rabbito", "Fabio Alessandro Locati" ] + +[spins.miraclewm.x86_64] +fas = [ "mattkae", "ngompa" ] +maintainers = [ "Matthew Kosarek", "Neal Gompa" ] + +[spins.phosh.x86_64] +fas = [ "lihis", "phosh-sig" ] +maintainers = [ "Tomi Lähteenmäki", "phosh-sig" ] +[spins.phosh.aarch64] +fas = [ "lihis", "phosh-sig" ] +maintainers = [ "Tomi Lähteenmäki", "phosh-sig" ] + +# Silverblue +[silverblue.x86_64] +fas = [ "siosm", "tpopela" ] +maintainers = [ "Timothée Ravier", "Tomáš Popela" ] +[silverblue.aarch64] +fas = [ "siosm", "tpopela" ] +maintainers = [ "Timothée Ravier", "Tomáš Popela" ] + +# Kinoite +[kinoite.x86_64] +fas = [ "siosm" ] +maintainers = [ "Timothée Ravier" ] +[kinoite.aarch64] +fas = [ "siosm" ] +maintainers = [ "Timothée Ravier" ] + +# Sway Atomic +[sericea.x86_64] +fas = [ "alebastr", "jkonecny", "anthr76", "fale" ] +maintainers = [ "Aleksei Bavshin", "Jiří Konečný", "Anthony Rabbito", "Fabio Alessandro Locati" ] +[sericea.aarch64] +fas = [ "alebastr", "jkonecny", "anthr76", "fale" ] +maintainers = [ "Aleksei Bavshin", "Jiří Konečný", "Anthony Rabbito", "Fabio Alessandro Locati" ] + +# Budgie Atomic +[onyx.x86_64] +fas = [ "joshstrobl" ] +maintainers = [ "Joshua Strobl" ] +[onyx.aarch64] +fas = [ "joshstrobl" ] +maintainers = [ "Joshua Strobl" ] + +# COSMIC Atomic +[cosmic-atomic.x86_64] +fas = [ "ryanabx" ] +maintainers = [ "Ryan Brue" ] +[cosmic-atomic.aarch64] +fas = [ "ryanabx" ] +maintainers = [ "Ryan Brue" ] diff --git a/repositories/core.xml b/repositories/core.xml index 86a91b7..95dc008 120000 --- a/repositories/core.xml +++ b/repositories/core.xml @@ -1 +1 @@ -core-nonrawhide.xml
\ No newline at end of file +core-rawhide.xml
\ No newline at end of file diff --git a/repositories/kernel-sp12in.xml b/repositories/kernel-sp12in.xml deleted file mode 100644 index 2419e06..0000000 --- a/repositories/kernel-sp12in.xml +++ /dev/null @@ -1,6 +0,0 @@ -<image> - <!-- Surface Pro 12" (Snapdragon X1P-42-100): the patched kernel + libcamera.--> - <repository type="rpm-md" alias="kernel-surface" priority="1"> - <source path="https://rpm.sayag.it/kernel-sp12in/fedora/$releasever/aarch64/"/> - </repository> -</image> diff --git a/root/tmp/DylanVanAssche/libssc b/root/tmp/DylanVanAssche/libssc deleted file mode 160000 -Subproject f6dfbfa5f34ef22f3d47ef346c22834e79c60df diff --git a/root/tmp/SayaAndy/surface-pro-12-inch-linux-fedora/etc/anaconda/conf.d/90-surface-pro-12-inch.conf b/root/tmp/SayaAndy/surface-pro-12-inch-linux-fedora/etc/anaconda/conf.d/90-surface-pro-12-inch.conf deleted file mode 100644 index 0b46109..0000000 --- a/root/tmp/SayaAndy/surface-pro-12-inch-linux-fedora/etc/anaconda/conf.d/90-surface-pro-12-inch.conf +++ /dev/null @@ -1,19 +0,0 @@ -# Surface Pro 12" (Snapdragon X1P-42-100): do not hide the GRUB menu. -# -# /etc/anaconda/profile.d/fedora-workstation.conf sets menu_auto_hide = True, -# and os-release here has VARIANT_ID=workstation, so anaconda selects that -# profile. Its grub2.py then writes both variables into grubenv: -# -# grub2-editenv - set menu_auto_hide=1 boot_success=1 -# -# deliberately, "so that the menu is hidden on the boot after install". On this -# firmware a hidden menu means GRUB counts down GRUB_TIMEOUT with nothing on -# screen and then crashes during the hand-off, so the very first boot of a fresh -# install always fails; it only succeeds from the second attempt, once the menu -# is drawn. Keeping the menu visible avoids that path entirely. -# -# conf.d is read after profile.d and is documented as the override location, and -# this file only needs to exist in the live installer environment -- it has no -# effect on, and is not needed by, the installed system. -[Bootloader] -menu_auto_hide = False diff --git a/root/tmp/SayaAndy/surface-pro-12-inch-linux-fedora/etc/dconf/db/local.d/00-power-button b/root/tmp/SayaAndy/surface-pro-12-inch-linux-fedora/etc/dconf/db/local.d/00-power-button deleted file mode 100644 index 1b69eab..0000000 --- a/root/tmp/SayaAndy/surface-pro-12-inch-linux-fedora/etc/dconf/db/local.d/00-power-button +++ /dev/null @@ -1,2 +0,0 @@ -[org/gnome/settings-daemon/plugins/power] -power-button-action='interactive' diff --git a/root/tmp/SayaAndy/surface-pro-12-inch-linux-fedora/etc/dconf/profile/user b/root/tmp/SayaAndy/surface-pro-12-inch-linux-fedora/etc/dconf/profile/user deleted file mode 100644 index aca0641..0000000 --- a/root/tmp/SayaAndy/surface-pro-12-inch-linux-fedora/etc/dconf/profile/user +++ /dev/null @@ -1,2 +0,0 @@ -user-db:user -system-db:local diff --git a/root/tmp/SayaAndy/surface-pro-12-inch-linux-fedora/etc/dracut.conf.d/surface-pro-12-inch.conf b/root/tmp/SayaAndy/surface-pro-12-inch-linux-fedora/etc/dracut.conf.d/surface-pro-12-inch.conf deleted file mode 100644 index 9c7a9bd..0000000 --- a/root/tmp/SayaAndy/surface-pro-12-inch-linux-fedora/etc/dracut.conf.d/surface-pro-12-inch.conf +++ /dev/null @@ -1,24 +0,0 @@ -# Surface Pro 12" (Snapdragon X1P-42-100) -# -# Keep the ADSP/CDSP remoteproc driver out of the initramfs. -# -# qcom_q6v5_pas has auto_boot set, so it powers up the DSPs the moment it -# probes. In a hostonly initramfs it gets pulled in and probes at ~1.7s, long -# before root is mounted, and the firmware it needs lives on the root -# filesystem: -# -# remoteproc remoteproc0: adsp is available -# Direct firmware load for .../qcadsp8380.mbn failed with error -2 -# remoteproc remoteproc0: request_firmware failed: -2 -# -# remoteproc does not retry after that, so both DSPs stay offline for the whole -# boot -- which means no glink edge, no fastrpc devices, and therefore no -# sensors. Nothing in the initramfs needs the DSPs to mount root, so deferring -# the driver until after switch-root lets auto_boot find its firmware and -# succeed. The alternative, install_items with the blobs, adds ~45MB to every -# initramfs for no benefit. -# -# dracut reads this from the target's /etc/dracut.conf.d during anaconda's -# initramfs regeneration, so it survives installation (unlike /etc/default/grub, -# which anaconda rewrites from a fixed key set). -omit_drivers+=" qcom_q6v5_pas " diff --git a/root/tmp/SayaAndy/surface-pro-12-inch-linux-fedora/etc/kernel/cmdline b/root/tmp/SayaAndy/surface-pro-12-inch-linux-fedora/etc/kernel/cmdline deleted file mode 100644 index 5b92d02..0000000 --- a/root/tmp/SayaAndy/surface-pro-12-inch-linux-fedora/etc/kernel/cmdline +++ /dev/null @@ -1 +0,0 @@ -rootflags=subvol=root mem_sleep_default=s2idle clk_ignore_unused pd_ignore_unused systemd.tpm2_wait=0 rhgb quiet diff --git a/root/tmp/SayaAndy/surface-pro-12-inch-linux-fedora/etc/kernel/devicetree b/root/tmp/SayaAndy/surface-pro-12-inch-linux-fedora/etc/kernel/devicetree deleted file mode 100644 index 2acf815..0000000 --- a/root/tmp/SayaAndy/surface-pro-12-inch-linux-fedora/etc/kernel/devicetree +++ /dev/null @@ -1 +0,0 @@ -qcom/x1p42100-microsoft-sp12in.dtb diff --git a/root/tmp/SayaAndy/surface-pro-12-inch-linux-fedora/etc/kernel/install.conf b/root/tmp/SayaAndy/surface-pro-12-inch-linux-fedora/etc/kernel/install.conf deleted file mode 100644 index 03aec7d..0000000 --- a/root/tmp/SayaAndy/surface-pro-12-inch-linux-fedora/etc/kernel/install.conf +++ /dev/null @@ -1 +0,0 @@ -BOOT_ROOT=/boot diff --git a/root/tmp/SayaAndy/surface-pro-12-inch-linux-fedora/etc/systemd/logind.conf.d/60-surface-power-key.conf b/root/tmp/SayaAndy/surface-pro-12-inch-linux-fedora/etc/systemd/logind.conf.d/60-surface-power-key.conf deleted file mode 100644 index c6fc547..0000000 --- a/root/tmp/SayaAndy/surface-pro-12-inch-linux-fedora/etc/systemd/logind.conf.d/60-surface-power-key.conf +++ /dev/null @@ -1,2 +0,0 @@ -HandlePowerKey=suspend -HandlePowerKeyLongPress=poweroff diff --git a/root/tmp/SayaAndy/surface-pro-12-inch-linux-fedora/etc/systemd/system/hexagonrpc.service b/root/tmp/SayaAndy/surface-pro-12-inch-linux-fedora/etc/systemd/system/hexagonrpc.service deleted file mode 100644 index 2e3cf82..0000000 --- a/root/tmp/SayaAndy/surface-pro-12-inch-linux-fedora/etc/systemd/system/hexagonrpc.service +++ /dev/null @@ -1,9 +0,0 @@ -[Unit] -Description=HexagonRPC Service - -[Service] -ExecStart=/usr/local/bin/hexagonrpcd -f /dev/fastrpc-adsp-secure -s -Restart=on-failure - -[Install] -WantedBy=multi-user.target diff --git a/root/tmp/SayaAndy/surface-pro-12-inch-linux-fedora/etc/systemd/system/iio-sensor-proxy.service.d/60-surface-pro-12-inch.conf b/root/tmp/SayaAndy/surface-pro-12-inch-linux-fedora/etc/systemd/system/iio-sensor-proxy.service.d/60-surface-pro-12-inch.conf deleted file mode 100644 index 7b3cfcb..0000000 --- a/root/tmp/SayaAndy/surface-pro-12-inch-linux-fedora/etc/systemd/system/iio-sensor-proxy.service.d/60-surface-pro-12-inch.conf +++ /dev/null @@ -1,14 +0,0 @@ -# Surface Pro 12" (Snapdragon X1P-42-100) -# -# The sensors on this device are not IIO devices. They live behind the SLPI -# DSP, reached over fastrpc by hexagonrpcd, and iio-sensor-proxy only sees them -# through the SSC backend it is built with here (-Dssc-support=enabled). So it -# has to start after that daemon, and stop being useful if the daemon dies. -# -# A drop-in rather than a replacement unit: upstream's own unit is D-Bus -# activated (Type=dbus, BusName=net.hadess.SensorProxy), which is how anything -# asking for net.hadess.SensorProxy gets the service started, and overriding it -# wholesale traded that away for nothing but this ordering. -[Unit] -Requires=hexagonrpc.service -After=hexagonrpc.service diff --git a/root/tmp/SayaAndy/surface-pro-12-inch-linux-fedora/etc/systemd/system/surface-video-firmware.service b/root/tmp/SayaAndy/surface-pro-12-inch-linux-fedora/etc/systemd/system/surface-video-firmware.service deleted file mode 100644 index 5c83962..0000000 --- a/root/tmp/SayaAndy/surface-pro-12-inch-linux-fedora/etc/systemd/system/surface-video-firmware.service +++ /dev/null @@ -1,12 +0,0 @@ -[Unit] -Description=Install Surface Pro 12in video codec firmware from a Windows partition -ConditionPathExists=!/lib/firmware/qcom/x1p42100/Microsoft/Surface12/qcvss8380_pa.mbn -After=local-fs.target - -[Service] -Type=oneshot -RemainAfterExit=yes -ExecStart=/usr/local/bin/surface-video-firmware.sh - -[Install] -WantedBy=multi-user.target diff --git a/root/tmp/SayaAndy/surface-pro-12-inch-linux-fedora/etc/udev/rules.d/61-sensors-surface-pro-12-inch.rules b/root/tmp/SayaAndy/surface-pro-12-inch-linux-fedora/etc/udev/rules.d/61-sensors-surface-pro-12-inch.rules deleted file mode 100644 index e6ddb1f..0000000 --- a/root/tmp/SayaAndy/surface-pro-12-inch-linux-fedora/etc/udev/rules.d/61-sensors-surface-pro-12-inch.rules +++ /dev/null @@ -1 +0,0 @@ -ACTION=="add|change", SUBSYSTEM=="misc", KERNEL=="fastrpc-adsp-secure", ENV{ACCEL_MOUNT_MATRIX}="-1, 0, 0; 0, -1, 0; 0, 0, 1" diff --git a/root/tmp/SayaAndy/surface-pro-12-inch-linux-fedora/etc/yum.repos.d/kernel-sp12in.repo b/root/tmp/SayaAndy/surface-pro-12-inch-linux-fedora/etc/yum.repos.d/kernel-sp12in.repo deleted file mode 100644 index 24fe9f3..0000000 --- a/root/tmp/SayaAndy/surface-pro-12-inch-linux-fedora/etc/yum.repos.d/kernel-sp12in.repo +++ /dev/null @@ -1,7 +0,0 @@ -[kernel-sp12in] -name=kernel-sp12in for Fedora $releasever - $basearch -baseurl=https://rpm.sayag.it/kernel-sp12in/fedora/$releasever/$basearch/ -enabled=1 -priority=1 -gpgcheck=0 -metadata_expire=6h diff --git a/root/tmp/SayaAndy/surface-pro-12-inch-linux-fedora/usr/lib/kernel/install.d/60-surface-dtb.install b/root/tmp/SayaAndy/surface-pro-12-inch-linux-fedora/usr/lib/kernel/install.d/60-surface-dtb.install deleted file mode 100644 index 7622406..0000000 --- a/root/tmp/SayaAndy/surface-pro-12-inch-linux-fedora/usr/lib/kernel/install.d/60-surface-dtb.install +++ /dev/null @@ -1,44 +0,0 @@ -#!/bin/bash -set -eu -umask 022 - -COMMAND="$1" -KVER="$2" - -DTB_NAME=x1p42100-microsoft-sp12in.dtb -DEST="/usr/lib/modules/${KVER}/dtb/qcom/${DTB_NAME}" - -# The master copies come from kernel-surface: it builds the dtb in-tree from the -# patched dts and installs it under /usr/lib/surface-dtb, deliberately outside -# any /usr/lib/modules/<kver>, so it can be re-staged into a kernel that ships -# no device tree of its own -- a stock Fedora one. -# -# One directory per kernel version, because kernel-surface is installonly and -# rpm will not let two installed releases own one unqualified path once the file -# differs. They are all the same board, so the highest version is as good a -# choice as any, and is the one most likely to carry recent fixes. -SRC=$(ls -1 /usr/lib/surface-dtb/*/"${DTB_NAME}" 2>/dev/null | sort -V | tail -n1) - -case "${COMMAND}" in - add) - # kernel-surface ships its own dtb through dtbs_install, and that - # one is the release-matched copy. Leave it alone; the master is - # only for kernels that arrived without one. - if [ -f "${DEST}" ]; then - exit 0 - fi - # Neither means there is nothing this board can boot with, so say - # so rather than failing silently three steps later in the boot - # loader. - if [ -z "${SRC}" ]; then - echo "60-surface-dtb: no ${DTB_NAME} under /usr/lib/surface-dtb" >&2 - exit 1 - fi - mkdir -p "$(dirname ${DEST})" - cp -f "${SRC}" "${DEST}" - chmod 644 "${DEST}" - ;; - remove) - rm -f "${DEST}" - ;; -esac diff --git a/root/tmp/SayaAndy/surface-pro-12-inch-linux-fedora/usr/lib/kernel/install.d/95-surface-dtb-patch.install b/root/tmp/SayaAndy/surface-pro-12-inch-linux-fedora/usr/lib/kernel/install.d/95-surface-dtb-patch.install deleted file mode 100644 index 65b8745..0000000 --- a/root/tmp/SayaAndy/surface-pro-12-inch-linux-fedora/usr/lib/kernel/install.d/95-surface-dtb-patch.install +++ /dev/null @@ -1,55 +0,0 @@ -#!/bin/bash -# Surface Pro 12" (Snapdragon X1P-42-100): put a devicetree line into the BLS -# loader entry. -# -# None of Fedora's built-in mechanisms can do this on their own: -# -# * /etc/kernel/devicetree is only read by 90-loaderentry.install, which exits -# early unless KERNEL_INSTALL_LAYOUT=bls. Fedora has no /boot/<entry-token> -# directory, so kernel-install always computes layout=other here and that -# plugin never runs. -# -# * GRUB_DEVICETREE in /etc/default/grub does work on a running system (see -# 20-grub.install's mkbls), but anaconda rewrites /etc/default/grub from a -# fixed list of keys it knows during installation, and GRUB_DEVICETREE is not -# on that list, so it is silently discarded on a fresh install. -# -# A kernel-install plugin survives both: anaconda runs kernel-install inside the -# target during installation, and anything sorting after 20-grub.install sees -# the entry it has just (re)generated. Because 20-grub.install rewrites the -# entry from scratch on every kernel install, this must re-apply each time -- -# hence a plugin rather than a one-shot fixup. - -set -eu -umask 022 - -COMMAND="${1:-}" -KVER="${2:-}" - -[ "$COMMAND" = "add" ] || exit 0 -[ -n "$KVER" ] || exit 0 - -DTB_NAME=x1p42100-microsoft-sp12in.dtb -DTB_REL="qcom/$DTB_NAME" -BOOT_ROOT="${KERNEL_INSTALL_BOOT_ROOT:-/boot}" - -# 60-surface-dtb.install stages the dtb into this kernel's module tree; fall -# back to kernel-surface's version-independent master copy if it has not run -# (or was removed). -DTB_SRC="/usr/lib/modules/${KVER}/dtb/${DTB_REL}" -if [ ! -f "$DTB_SRC" ]; then - # One directory per kernel version under here; see 60-surface-dtb.install. - DTB_SRC=$(ls -1 /usr/lib/surface-dtb/*/"$DTB_NAME" 2>/dev/null | sort -V | tail -n1) -fi -[ -n "$DTB_SRC" ] && [ -f "$DTB_SRC" ] || exit 0 - -# The boot loader reads the dtb from the boot filesystem, not the module tree -install -Dm644 "$DTB_SRC" "${BOOT_ROOT}/dtb-${KVER}/${DTB_REL}" - -# BLS entry paths are relative to the boot filesystem root, matching the -# "linux /vmlinuz-$KVER" line 20-grub.install writes. -for entry in "${BOOT_ROOT}"/loader/entries/*-"${KVER}".conf; do - [ -f "$entry" ] || continue - grep -q '^devicetree[[:space:]]' "$entry" && continue - sed -i "/initrd/i devicetree /dtb-${KVER}/${DTB_REL}" "$entry" -done diff --git a/root/tmp/SayaAndy/surface-pro-12-inch-linux-fedora/usr/local/bin/surface-video-firmware.sh b/root/tmp/SayaAndy/surface-pro-12-inch-linux-fedora/usr/local/bin/surface-video-firmware.sh deleted file mode 100755 index 35dfdf1..0000000 --- a/root/tmp/SayaAndy/surface-pro-12-inch-linux-fedora/usr/local/bin/surface-video-firmware.sh +++ /dev/null @@ -1,183 +0,0 @@ -#!/bin/bash -# Surface Pro 12" (Snapdragon X1P-42-100): install the video codec firmware. -# -# The iris video codec needs firmware TrustZone will accept. linux-firmware's -# qcom/vpu/vpu30_p1_s7.mbn is the same codec signed with Qualcomm's SecTools -# *test* key chain, which a retail Surface rejects: -# -# qcom-iris aa00000.video-codec: error -22 initializing firmware qcom/vpu/vpu30_p1_s7.mbn -# -# The production-signed build ships only inside Microsoft's Surface driver -# package, which grants no redistribution right, so the image cannot carry it. -# What it can do is copy it out of a Windows install the owner already has a -# licence for, or out of a driver pack they downloaded themselves. This script -# does the copying; it never fetches anything the caller did not ask for. -# -# Usage: surface-video-firmware.sh [-m MSI] [-u URL] [-n] -# -# (no options) look for a Windows partition on this machine and copy the -# firmware out of its DriverStore. No network access. -# -m MSI extract from a Surface driver pack already on disk -# -u URL download a driver pack and extract from that -# -n say what would happen, change nothing -# -# The driver pack is a ~500 MB MSI from -# -# https://www.microsoft.com/en-us/download/details.aspx?id=108199 -# -# There is no stable direct link to hardcode: the Download Center hands out -# per-session URLs and the file name carries the driver release, so -u takes -# the URL the browser was given rather than guessing one that would rot. - -set -euo pipefail - -FW_DIR=/lib/firmware/qcom/x1p42100/Microsoft/Surface12 -BLOB=qcvss8380_pa.mbn -DRIVERSTORE=Windows/System32/DriverStore/FileRepository -PAGE=https://www.microsoft.com/en-us/download/details.aspx?id=108199 - -msi="" -url="" -dry_run=false - -while getopts ':m:u:nh' opt; do - case "${opt}" in - m) msi=${OPTARG} ;; - u) url=${OPTARG} ;; - n) dry_run=true ;; - h) sed -n '2,31p' "${BASH_SOURCE[0]}"; exit 0 ;; - *) echo "unknown option -${OPTARG}" >&2; exit 2 ;; - esac -done - -log() { printf 'surface-video-firmware: %s\n' "$*"; } -die() { printf 'surface-video-firmware: %s\n' "$*" >&2; exit 1; } - -if [[ -f "${FW_DIR}/${BLOB}" ]]; then - log "${FW_DIR}/${BLOB} is already installed" - exit 0 -fi - -[[ ${EUID} -eq 0 ]] || die "must run as root" - -cleanup_dirs=() -cleanup_mounts=() -cleanup() { - local m d - for m in ${cleanup_mounts[@]+"${cleanup_mounts[@]}"}; do - mountpoint -q "${m}" && umount "${m}" || true - done - for d in ${cleanup_dirs[@]+"${cleanup_dirs[@]}"}; do - rm -rf "${d}" || true - done -} -trap cleanup EXIT - -install_blob() { - local src=$1 - if [[ ${dry_run} == true ]]; then - log "would install ${src} as ${FW_DIR}/${BLOB}" - return 0 - fi - - install -Dm644 "${src}" "${FW_DIR}/${BLOB}" - log "installed ${FW_DIR}/${BLOB}" - - # The driver only asks for its firmware while probing, so it has to be - # reloaded to pick this up. It refuses while a decode session holds it, - # which is why a failure here is only worth a note. - if lsmod | grep -q '^qcom_iris'; then - if modprobe -r qcom_iris 2>/dev/null && modprobe qcom_iris 2>/dev/null; then - log "reloaded qcom_iris" - else - log "could not reload qcom_iris; reboot to start using the firmware" - fi - fi -} - -# Everything below hands find(1) the bare file name rather than a full path: -# the DriverStore directory carries a per-build hash, and the layout inside an -# extracted MSI is not documented anywhere worth trusting. -find_blob() { - find "$1" -type f -name "${BLOB}" -print -quit 2>/dev/null -} - -from_windows() { - local dev fstype part_mnt mnt found - - while read -r dev fstype part_mnt; do - [[ ${fstype} == ntfs* ]] || continue - - if [[ -n ${part_mnt} ]]; then - mnt=${part_mnt} - else - mnt=$(mktemp -d) - cleanup_dirs+=("${mnt}") - if ! mount -t ntfs3 -o ro,noatime "/dev/${dev}" "${mnt}" 2>/dev/null && - ! mount -o ro,noatime "/dev/${dev}" "${mnt}" 2>/dev/null; then - log "/dev/${dev}: could not mount read-only, skipping" - log "/dev/${dev}: if Windows is hibernated, shut it down fully and retry" - continue - fi - cleanup_mounts+=("${mnt}") - fi - - [[ -d "${mnt}/${DRIVERSTORE}" ]] || continue - - found=$(find_blob "${mnt}/${DRIVERSTORE}") - if [[ -n ${found} ]]; then - log "found ${BLOB} on /dev/${dev}" - install_blob "${found}" - return 0 - fi - log "/dev/${dev}: a Windows install, but no ${BLOB} in its DriverStore" - done < <(lsblk -rno NAME,FSTYPE,MOUNTPOINT) - - return 1 -} - -from_msi() { - local pack=$1 work found - - command -v msiextract >/dev/null || die "msiextract is missing; install msitools" - - work=$(mktemp -d) - cleanup_dirs+=("${work}") - - log "extracting ${pack}" - ( cd "${work}" && msiextract "${pack}" >/dev/null ) - - found=$(find_blob "${work}") - [[ -n ${found} ]] || die "no ${BLOB} inside ${pack}; is it the Surface Pro 12in driver pack?" - - log "found ${BLOB} in the driver pack" - install_blob "${found}" -} - -if [[ -n ${url} ]]; then - dl=$(mktemp -d) - cleanup_dirs+=("${dl}") - msi="${dl}/driverpack.msi" - log "downloading ${url}" - curl -fL --retry 3 --progress-bar -o "${msi}" "${url}" -fi - -if [[ -n ${msi} ]]; then - [[ -f ${msi} ]] || die "${msi} does not exist" - from_msi "${msi}" - exit 0 -fi - -if from_windows; then - exit 0 -fi - -# Nothing found, and nothing was asked for. Not an error: most of the time this -# is a machine with no Windows left on it, and the only thing left to do is say -# how to finish the job by hand. -log "no Windows install on this machine carries ${BLOB}" -log "hardware video decode stays off until it is installed. To finish by hand:" -log " 1. download the Surface Pro 12in driver pack (~500 MB) from" -log " ${PAGE}" -log " 2. sudo surface-video-firmware.sh -m /path/to/SurfacePro_12in_*.msi" -exit 0 diff --git a/root/tmp/harrisonvanderbyl/hexagonrpc b/root/tmp/harrisonvanderbyl/hexagonrpc deleted file mode 160000 -Subproject 78b67e2f00df0455f0c0282183b1b1b8b219447 diff --git a/root/tmp/harrisonvanderbyl/iio-sensor-proxy b/root/tmp/harrisonvanderbyl/iio-sensor-proxy deleted file mode 160000 -Subproject fcd5b5cf431bc053375350c57064b8b13dd961b diff --git a/root/tmp/harrisonvanderbyl/surface-pro-12-inch-linux b/root/tmp/harrisonvanderbyl/surface-pro-12-inch-linux deleted file mode 160000 -Subproject cab35118d7b5cf6ed88c7027e075a2564c921ea diff --git a/root/tmp/linux-msm/audioreach-topology b/root/tmp/linux-msm/audioreach-topology deleted file mode 160000 -Subproject d7a5e9d80ad18a7a6844eeb32cacbdeea0e7e67 diff --git a/scripts/fedora-live-iso-label-generator b/scripts/fedora-live-iso-label-generator index fc5cef6..00f457e 100755 --- a/scripts/fedora-live-iso-label-generator +++ b/scripts/fedora-live-iso-label-generator @@ -49,6 +49,7 @@ volume_id_substitutions = { # Note https://pagure.io/pungi-fedora/issue/533 "Python-Classroom": "Clss", "Python_Classroom": "Clss", + "Robotics": "Robo", "Scientific_KDE": "SciK", "Security": "Sec", "Sericea": "Src", diff --git a/surface-editbootconfig.sh b/surface-editbootconfig.sh deleted file mode 100755 index e6cc67c..0000000 --- a/surface-editbootconfig.sh +++ /dev/null @@ -1,49 +0,0 @@ -#!/bin/bash -# Surface Pro 12" (Snapdragon X1P-42-100): put the device tree on the ISO. -# -# kiwi has no device tree support of its own, and the ISO's GRUB needs the dtb -# as a plain file it can read: it loads it with a "devicetree" line before the -# kernel (see grub-arm.cfg.iso-template), it cannot read the erofs root image, -# and kiwi copies only the kernel and the initrd into the ISO's loader -# directory. -# -# editbootconfig is the one hook that reaches the ISO tree. kiwi's live builder -# calls it with "iso:<media dir>" as the first argument and the image root as -# the working directory, after setup_media_loader_directory has created the -# loader directory and the GRUB config has been written. So the dtb can be -# taken straight out of the kernel-surface RPM installed in the image root, -# which is why config-cdroot.tar is no longer needed to carry a committed copy. - -set -euo pipefail - -target="${1:-}" -case "${target}" in - iso:*) media_dir="${target#iso:}" ;; - *) - echo "surface-editbootconfig: expected an iso: target, got '${target}'" >&2 - exit 1 - ;; -esac - -dtb_name=x1p42100-microsoft-sp12in.dtb - -# The working directory is the image root, so this is kernel-surface's own copy, -# under a directory named for the kernel version because that package is -# installonly. config.sh has already failed the build if it is not there. -dtb_src=$(ls -1 usr/lib/surface-dtb/*/"${dtb_name}" 2>/dev/null | sort -V | tail -n1) -if [[ -z "${dtb_src}" ]]; then - echo "surface-editbootconfig: no ${dtb_name} under usr/lib/surface-dtb/ in the image root" >&2 - exit 1 -fi - -# ${bootpath} in the GRUB template is /boot/<kiwi platform name>/loader. Read -# the directory back off the media tree rather than recomputing that name, so -# the dtb cannot end up somewhere the GRUB config does not look. -loader_dirs=("${media_dir}"/boot/*/loader) -if [[ ${#loader_dirs[@]} -ne 1 || ! -d "${loader_dirs[0]}" ]]; then - echo "surface-editbootconfig: expected one ${media_dir}/boot/*/loader, found ${#loader_dirs[@]}" >&2 - exit 1 -fi - -install -Dm644 "${dtb_src}" "${loader_dirs[0]}/${dtb_name}" -echo "surface-editbootconfig: staged ${loader_dirs[0]}/${dtb_name}" diff --git a/teams/cloud/container.xml b/teams/cloud/container.xml index 25dcd49..8b4b963 100644 --- a/teams/cloud/container.xml +++ b/teams/cloud/container.xml @@ -17,7 +17,7 @@ <type image="oci"> <containerconfig name="fedora" - tag="45" + tag="rawhide" maintainer="Fedora Project Contributors <devel@lists.fedoraproject.org>" > <subcommand execute="/bin/bash"/> @@ -26,7 +26,7 @@ <label name="org.opencontainers.image.url" value="https://fedoraproject.org/"/> <label name="org.opencontainers.image.licenses" value="MIT"/> <label name="org.opencontainers.image.title" value="fedora"/> - <label name="org.opencontainers.image.version" value="45"/> + <label name="org.opencontainers.image.version" value="rawhide"/> </labels> <environment> <env name="container" value="oci"/> @@ -43,7 +43,7 @@ <type image="oci"> <containerconfig name="fedora-minimal" - tag="45" + tag="rawhide" maintainer="Fedora Project Contributors <devel@lists.fedoraproject.org>" > <subcommand execute="/bin/bash"/> @@ -52,7 +52,7 @@ <label name="org.opencontainers.image.url" value="https://fedoraproject.org/"/> <label name="org.opencontainers.image.licenses" value="MIT"/> <label name="org.opencontainers.image.title" value="fedora-minimal"/> - <label name="org.opencontainers.image.version" value="45"/> + <label name="org.opencontainers.image.version" value="rawhide"/> </labels> <environment> <env name="container" value="oci"/> @@ -69,7 +69,7 @@ <type image="oci"> <containerconfig name="fedora-init" - tag="45" + tag="rawhide" maintainer="Fedora Project Contributors <devel@lists.fedoraproject.org>" > <subcommand execute="/sbin/init"/> @@ -78,7 +78,7 @@ <label name="org.opencontainers.image.url" value="https://fedoraproject.org/"/> <label name="org.opencontainers.image.licenses" value="MIT"/> <label name="org.opencontainers.image.title" value="fedora-init"/> - <label name="org.opencontainers.image.version" value="45"/> + <label name="org.opencontainers.image.version" value="rawhide"/> </labels> <stopsignal>SIGRTMIN+3</stopsignal> </containerconfig> @@ -92,7 +92,7 @@ <type image="oci"> <containerconfig name="fedora-toolbox" - tag="45" + tag="rawhide" maintainer="Fedora Project Contributors <devel@lists.fedoraproject.org>" > <subcommand execute="/bin/bash"/> @@ -101,7 +101,7 @@ <label name="org.opencontainers.image.url" value="https://fedoraproject.org/"/> <label name="org.opencontainers.image.licenses" value="MIT"/> <label name="org.opencontainers.image.title" value="fedora-toolbox"/> - <label name="org.opencontainers.image.version" value="45"/> + <label name="org.opencontainers.image.version" value="rawhide"/> <label name="com.github.containers.toolbox" value="true"/> </labels> <environment> diff --git a/teams/eln/desktop-environments.xml b/teams/eln/desktop-environments.xml index c9741b0..6a47168 100644 --- a/teams/eln/desktop-environments.xml +++ b/teams/eln/desktop-environments.xml @@ -32,7 +32,6 @@ <packages type="image" patternType="plusRecommended" profiles="GNOME-Desktop"> <namedCollection name="gnome-desktop"/> <namedCollection name="workstation-product"/> - <package name="gnome-classic-session"/> </packages> <packages type="image" patternType="plusRecommended" profiles="KDE-Desktop"> <namedCollection name="kde-desktop-environment"/> diff --git a/teams/robotics.xml b/teams/robotics.xml new file mode 100644 index 0000000..5c84c79 --- /dev/null +++ b/teams/robotics.xml @@ -0,0 +1,82 @@ +<image> + <profiles> + <profile name="RoboticsCore" description="Core packages for Robotics"> + </profile> + <profile name="RoboticsGNOMEDesktop" description="Desktop packages for Robotics"> + <requires profile="RoboticsCore"/> + <requires profile="DesktopCommon"/> + </profile> + <profile name="Robotics-Live" description="Robotics Lab Live DVD"> + <requires profile="RoboticsGNOMEDesktop"/> + <requires profile="LiveInstall"/> + </profile> + <profile name="Robotics-Disk" description="Robotics Lab Install Disk"> + <requires profile="RoboticsGNOMEDesktop"/> + <requires profile="BootDiskCore"/> + </profile> + </profiles> + <packages type="bootstrap" patternType="plusRecommended" profiles="RoboticsGNOMEDesktop"> + <package name="fedora-release-workstation"/> + </packages> + <packages type="image" patternType="plusRecommended" profiles="RoboticsCore"> + <namedCollection name="core"/> + <namedCollection name="standard"/> + <!-- Add robotics suite development packages --> + <namedCollection name="robotics-suite"/> + <package name="langpacks-en"/> + <package name="nano"/> + <package name="openssh-clients"/> + <package name="vim-enhanced"/> + <package name="wget2-wget"/> + <!-- Add version control packages --> + <package name="git"/> + <package name="mercurial"/> + <!-- No abrt --> + <ignore name="abrt*"/> + <!-- No legacy crontab --> + <ignore name="cron*"/> + <!-- Remove LaTeX stack (rhbz#1862450, rhbz#1902354) --> + <ignore name="texlive-base"/> + <ignore name="texlive-latex"/> + <!-- Dictionaries are big --> + <ignore name="aspell-*"/> + <ignore name="man-pages*"/> + <ignore name="words"/> + </packages> + <packages type="image" patternType="plusRecommended" profiles="RoboticsGNOMEDesktop"> + <namedCollection name="base-graphical"/> + <namedCollection name="desktop-accessibility"/> + <namedCollection name="firefox"/> + <namedCollection name="gnome-desktop"/> + <namedCollection name="guest-desktop-agents"/> + <namedCollection name="networkmanager-submodules"/> + <package name="emacs"/> + <!-- Drop some system-config things --> + <ignore name="system-config-language"/> + <ignore name="system-config-network"/> + <ignore name="system-config-rootpassword"/> + <ignore name="system-config-services"/> + <ignore name="system-config-printer*"/> + <ignore name="policycoreutils-gui"/> + <!-- No user docs --> + <ignore name="gnome-user-docs"/> + <!-- No inkscape --> + <ignore name="inkscape*"/> + <ignore name="GraphicsMagick*"/> + <ignore name="ImageMagick*"/> + <!-- Block extra GNOME applications --> + <ignore name="gnome-boxes"/> + <ignore name="gnome-calendar"/> + <ignore name="gnome-clocks"/> + <ignore name="gnome-contacts"/> + <ignore name="gnome-disk-utility"/> + <ignore name="gnome-documents"/> + <ignore name="gnome-font-viewer"/> + <ignore name="gnome-maps"/> + <ignore name="gnome-photos"/> + <ignore name="gnome-weather"/> + <ignore name="grilo-plugins"/> + <ignore name="totem"/> + <ignore name="totem-nautilus"/> + </packages> +</image> |