%global debug_package %{nil} %global _build_id_links none %global __os_install_post %{nil} %global _uke_out %{_topdir}/native-kernel-out %global uke_boot_userspace %{_topdir}/boot-userspace Name: uke-kernel-migration-check Version: 7.3.3 %if "%{version}" == "7.3.3" %global senemos_build_release 24 %else %global senemos_build_release 1 %endif %global krel %{version}-%{senemos_build_release}-unstable %global uke_audio_driver %(printf 'uke%%s' '%{version}-%{senemos_build_release}u' | tr '.' '_') Release: 106%{?dist} Summary: Native Uke CAMCC permanent resource qualification License: GPL-2.0-only AND MIT AND BSD-3-Clause SourceLicense: GPL-2.0-only AND MIT AND BSD-3-Clause AND GPL-3.0-or-later AND Apache-2.0 AND LGPL-2.0-or-later URL: https://github.com/MCC45TR/senemos-uke-kernel-mainline Source0: linux-%{version}.tar.xz Source1: senemos-uke-adaptation-%{version}.tar.xz Source2: linux-%{version}.tar.sign Source3: linux-stable.asc Source4: senemos-native-profile-%{version}.tar.xz Source5: senemos-uke-boot-recipe.tar.xz Source6: boot-payload.json Source7: SINGLEBOOT.md Source8: singleboot-LICENSE ExclusiveArch: aarch64 BuildRequires: dt-schema = 2026.09-1.fc46 BuildRequires: bash bc bison flex clang llvm lld make gcc gcc-c++ perl BuildRequires: compiler-rt BuildRequires: libasan libubsan BuildRequires: nodejs BuildRequires: elfutils-libelf-devel openssl-devel openssl ncurses-devel BuildRequires: pkgconfig(libsystemd) BuildRequires: alsa-topology-utils BuildRequires: alsa-lib-devel alsa-utils dt-schema BuildRequires: rsync tar xz zstd kmod git-core jq gnupg2 dtc BuildRequires: libfdt-devel BuildRequires: python3 BuildRequires: dracut systemd systemd-udev util-linux coreutils grep sed findutils binutils ripgrep gzip cpio f2fs-tools BuildRequires: clang = 23.1.5-1.fc46 BuildRequires: llvm = 23.1.5-1.fc46 BuildRequires: lld = 23.1.5-1.fc46 Source190: uke-camcc-resource.tar.xz Source191: uke-ssc-stream-freshness.tar.xz %description Retain byte-identical accepted24 source preparation and compile the actual CAMCC provider with passive permanent CRMC ownership. Test actual DT/resource callbacks, fault retention and all previous registration/refusal controls. Only text evidence is packaged. No Image, module or camera activation. %prep uke_prep_start=$SECONDS expected=$(tar -xOJf %{SOURCE1} senemos-adaptation/source-lock.json | jq -er .source_sha256) test "$(sha256sum %{SOURCE0} | cut -d ' ' -f1)" = "$expected" signer=$(tar -xOJf %{SOURCE1} senemos-adaptation/source-lock.json | jq -er .signer) # GnuPG agent sockets cannot use arbitrarily long RPM build paths. keyring=$(mktemp -d) trap 'gpgconf --homedir "$keyring" --kill gpg-agent; rm -rf "$keyring"' EXIT gpg --homedir "$keyring" --batch --import %{SOURCE3} xz -cd %{SOURCE0} | gpg --homedir "$keyring" --batch --status-fd=1 \ --verify %{SOURCE2} - > %{_topdir}/source-verification.txt grep -F "[GNUPG:] VALIDSIG $signer " %{_topdir}/source-verification.txt %setup -q -n linux-%{version} tar -xJf %{SOURCE1} jq -r '.patches[].path | split("/") | last' senemos-adaptation/source-lock.json > senemos-expected-patches.txt cmp senemos-expected-patches.txt senemos-adaptation/patches/series while IFS="$(printf '\t')" read -r path expected; do case "$path" in patches/*) staged="senemos-adaptation/patches/${path##*/}" ;; configs/*) staged="senemos-adaptation/configs/${path##*/}" ;; *) exit 1 ;; esac test "$(sha256sum "$staged" | cut -d ' ' -f1)" = "$expected" || exit 1 done < senemos-applied-patches.txt while IFS= read -r patch_name; do test -n "$patch_name" || continue git apply --check "senemos-adaptation/patches/$patch_name" || exit 1 git apply "senemos-adaptation/patches/$patch_name" || exit 1 printf '%s\n' "$patch_name" >> senemos-applied-patches.txt done < senemos-adaptation/patches/series cmp senemos-expected-patches.txt senemos-applied-patches.txt tar -xJf %{SOURCE4} (cd native-profile;sha256sum -c --strict --quiet SHA256SUMS) bash native-profile/tests/ssc-heading-math.sh bash native-profile/packaging/native/preflight-ssc-heading733.sh "$PWD" bash native-profile/prepare.sh "$PWD" mkdir -p native-generated/camera-sensors-before731 cp drivers/media/i2c/ov08d10.c drivers/media/i2c/ov13b10.c native-generated/camera-sensors-before731/ for sensor_patch in native-profile/src/camera/sensors/000[123]-*.patch; do git apply --check "$sensor_patch"; git apply "$sensor_patch"; done test "$(find native-profile/src/camera/sensors -name '000[123]-*.patch' | wc -l)" = 3 mkdir -p native-generated/camcc-baseline/drivers/clk/qcom cp drivers/clk/qcom/gdsc.c drivers/clk/qcom/gdsc.h native-generated/camcc-baseline/drivers/clk/qcom/ for patch in native-profile/src/camera/provider/000[123]-clk-qcom-gdsc-*.patch; do git apply --check "$patch"; git apply "$patch"; done test "$(find native-profile/src/camera/provider -name '000[123]-clk-qcom-gdsc-*.patch' | wc -l)" = 3 git apply --check native-profile/src/camera/provider/0004-clk-qcom-gdsc-permanent-storage.patch git apply native-profile/src/camera/provider/0004-clk-qcom-gdsc-permanent-storage.patch git apply --check native-profile/src/camera/sensors/0004-ov08d10-exposure-read-errors.patch git apply native-profile/src/camera/sensors/0004-ov08d10-exposure-read-errors.patch if grep -l GDSC_CONTROLLER_PM drivers/clk/qcom/*-*.c; then exit 1; fi cmp native-profile/src/input/nt36532-uke-spi.c drivers/input/touchscreen/nt36532-uke/nt36532-uke-spi.c tar -xJf %{SOURCE5} cmp boot-recipe/lock.json %{SOURCE6} (cd boot-recipe; jq -r '.source_assets[] | .sha256 + " " + .path' lock.json | sha256sum -c -) printf 'UKE_BUILD_STAGE source_prepare elapsed_s=%d\n' "$((SECONDS-uke_prep_start))" camss_dir=drivers/media/platform/qcom/camss mkdir -p native-generated/camss-before731/$camss_dir cp $camss_dir/camss-csiphy.c $camss_dir/camss-csiphy-3ph-1-0.c native-generated/camss-before731/$camss_dir/ patch -p1 --fuzz=0 -i native-profile/src/camera/camss/0001-media-camss-return-phy-setup-errors.patch patch -p1 --fuzz=0 -i native-profile/src/camera/camss/0002-media-camss-sm7675-resources.patch for header in csiphy-sm7675.h camss-sm7675-phy-ops.h camss-sm7675-data.h; do cp native-profile/src/camera/camss/$header $camss_dir/$header; done bash native-profile/src/camera/prepare-controller731.sh "$PWD" mkdir -p native-generated/cci-before731/drivers/i2c/busses cp drivers/i2c/busses/i2c-qcom-cci.c native-generated/cci-before731/drivers/i2c/busses/ printf '45b2dc46ea637f411a39f9352156e91d85a191b4fd3d2bfb44d5b7fc81d57693 drivers/i2c/busses/i2c-qcom-cci.c\n' | sha256sum -c --strict patch -p1 --fuzz=0 -i native-profile/src/camera/cci/0001-i2c-qcom-cci-initialize-all-completions.patch mkdir -p native-generated/at24-before731/drivers/nvmem cp drivers/nvmem/at24.c native-generated/at24-before731/drivers/nvmem/ printf 'f37ed370a86b2b850625ecd7e5e4d810b5feeb65c10f719a9e505aa8db2795a0 drivers/nvmem/at24.c\n' | sha256sum -c --strict printf '98452b4e32c41de9f74608356d2126e0743f7f229391577f0bb451bc180f2e3e Documentation/devicetree/bindings/eeprom/at24.yaml\n' | sha256sum -c --strict patch -p1 --fuzz=0 -i native-profile/src/camera/eeprom/0001-at24-readonly-vcc.patch patch -p1 --fuzz=0 -i native-profile/src/camera/eeprom/0002-at24-readonly-vcc-binding.patch install -m644 native-profile/src/camera/eeprom/at24-vcc-readonly.h drivers/nvmem/at24-vcc-readonly.h rpm -q dt-schema dt-doc-validate Documentation/devicetree/bindings/eeprom/at24.yaml cp drivers/regulator/qcom-rpmh-regulator-uke.c native-generated/rpmh-before-front731.c patch -p1 --fuzz=0 -i native-profile/src/camera/eeprom/0003-rpmh-front-vio.patch CC=clang bash native-profile/tests/o82-avr-contract.sh "$PWD" CXX=clang++ bash native-profile/tests/dpu-video-timing-contract.sh "$PWD" CC=clang bash native-profile/tests/msm-retirement-proof-contract.sh "$PWD" CC=clang bash native-profile/tests/dpu-reservation-contract.sh "$PWD" "$PWD/native-generated/dpu-reservation-before56" CC=clang bash native-profile/tests/dpu-color-topology-contract.sh "$PWD/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c" bash native-profile/tests/o82-profile-loader-contract.sh native-profile bash native-profile/tests/o82-lutbus-contract.sh bash native-profile/tests/o82-regdma-transport-contract.sh native-profile "$PWD" bash native-profile/tests/o82-atomic-contract.sh native-profile "$PWD" bash native-profile/tests/cdsp-actlr-qualify.sh "$PWD" bash native-profile/src/camera/provider/apply-gcc-config731.sh "$PWD" bash native-profile/packaging/native/prepare-queued-kernel731.sh "$PWD" native-profile bash native-profile/src/audio/apply-config-smmu731.sh "$PWD" "$PWD/native-profile" bash native-profile/src/audio/apply-client-data731.sh "$PWD" "$PWD/native-profile" bash native-profile/src/audio/apply-client-byte-ready731.sh "$PWD" "$PWD/native-profile" bash native-profile/src/audio/apply-protected-stop731.sh "$PWD" "$PWD/native-profile" bash native-profile/src/audio/apply-idle-stop731.sh "$PWD" "$PWD/native-profile" bash native-profile/src/display/apply-vrr-api731.sh "$PWD" "$PWD/native-profile" bash native-profile/src/audio/apply-stop-deadline733.sh "$PWD" "$PWD/native-profile" bash native-profile/src/audio/apply-pcm-period733.sh "$PWD" "$PWD/native-profile" bash native-profile/src/audio/apply-enable-readback733.sh "$PWD" "$PWD/native-profile" bash native-profile/src/input/apply-hall-initial-gpio733.sh "$PWD" tar -xJf %{SOURCE190} bash camcc-resource/src/camera/provider/apply-native-crm733.sh "$PWD" "$PWD/camcc-resource" tar -xJf %{SOURCE191} bash ssc-stream-freshness/packaging/native/prepare-ssc-postimage733.sh "$PWD" bash ssc-stream-freshness/src/sensors/apply-stream-freshness733.sh "$PWD" "$PWD/ssc-stream-freshness" cp drivers/iio/common/uke-ssc/uke-ssc-iio.c %{_topdir}/ssc-final-source.c git apply -R ssc-stream-freshness/src/sensors/0019-ssc-streaming-buffer-fresh-sample.patch printf '%s %s\n' f7c689e893e8696dcf093cf859dbb07dfc6b31b5332ce4108a19be13252efca1 drivers/iio/common/uke-ssc/uke-ssc-iio.c | sha256sum -c --strict - git apply ssc-stream-freshness/src/sensors/0019-ssc-streaming-buffer-fresh-sample.patch cmp %{_topdir}/ssc-final-source.c drivers/iio/common/uke-ssc/uke-ssc-iio.c %build set -o pipefail for compiler in gcc clang;do for sanitizer in plain address-undefined;do flags= if [ "$sanitizer" = address-undefined ];then flags='-fsanitize=address,undefined -fno-sanitize-recover=all -fno-omit-frame-pointer' fi CC="$compiler" CAMCC_RESOURCE_TEST_FLAGS="$flags" bash camcc-resource/tests/camcc-crmc-resource-contract.sh | tee -a %{_topdir}/camcc-resource-checks.txt CC="$compiler" CAMCC_FDT_TEST_FLAGS="$flags" bash camcc-resource/tests/camcc-controller-fdt731-contract.sh | tee -a %{_topdir}/camcc-resource-checks.txt CC="$compiler" CAMCC_CRM_TEST_FLAGS="$flags" bash camcc-resource/tests/camcc-crm-guard731-contract.sh | tee -a %{_topdir}/camcc-resource-checks.txt CC="$compiler" CAMCC_NATIVE_TEST_FLAGS="$flags" CAMCC_NATIVE_MUTATIONS=1 bash camcc-resource/tests/camcc-native731-contract.sh "$PWD" | tee -a %{_topdir}/camcc-resource-checks.txt done done bash native-profile/tests/camcc-quarantine-sleep.sh | tee -a %{_topdir}/camcc-resource-checks.txt for compiler in gcc clang;do CC="$compiler" CAMCC_CLOCKS_TEST=1 CAMCC_CRM_CLOCKS_TEST=1 CAMCC_CRM_MUTATIONS=1 bash camcc-resource/tests/camcc-provider-contract.sh "$PWD" | tee -a %{_topdir}/camcc-resource-checks.txt CC="$compiler" CAMCC_CLOCKS_TEST=1 CAMCC_CRM_CLOCKS_TEST=1 CAMCC_TEST_FLAGS='-fsanitize=address,undefined -fno-sanitize-recover=all -fno-omit-frame-pointer' bash camcc-resource/tests/camcc-provider-contract.sh "$PWD" | tee -a %{_topdir}/camcc-resource-checks.txt done bash camcc-resource/tests/camcc-resource-object733.sh "$PWD" "$PWD/resource-object" native-profile/native.config | tee -a %{_topdir}/camcc-resource-checks.txt bash ssc-stream-freshness/tests/ssc-stream-freshness.sh drivers/iio/common/uke-ssc/uke-ssc-iio.c include/uapi/linux/iio/types.h | tee -a %{_topdir}/camcc-resource-checks.txt bash native-profile/tests/ssc-quaternion-buffer.sh "$PWD" | tee -a %{_topdir}/camcc-resource-checks.txt bash native-profile/tests/ssc-heading-callbacks.sh "$PWD" | tee -a %{_topdir}/camcc-resource-checks.txt bash native-profile/tests/ssc-proximity-abi.sh "$PWD" | tee -a %{_topdir}/camcc-resource-checks.txt grep -E '^CONFIG_IIO_UKE_SSC=[my]$' resource-object/.config make ARCH=arm64 LLVM=1 LLVM_IAS=1 O="$PWD/resource-object" LOCALVERSION=-24-unstable KCFLAGS=-Werror -j4 drivers/iio/common/uke-ssc/uke-ssc-iio.o drivers/iio/common/uke-ssc/uke-ssc-protocol.o for object in resource-object/drivers/iio/common/uke-ssc/uke-ssc-{iio,protocol}.o;do llvm-readelf -h "$object" | grep -E 'Machine:.*AArch64' sha256sum "$object" | tee -a %{_topdir}/camcc-resource-checks.txt done sha256sum drivers/iio/common/uke-ssc/uke-ssc-iio.c | tee -a %{_topdir}/camcc-resource-checks.txt %install install -d %{buildroot}%{_datadir}/%{name} install -m644 %{_topdir}/camcc-resource-checks.txt camcc-resource/source-commit camcc-resource/manifests/camera-crmc-owner-20261113.json %{buildroot}%{_datadir}/%{name}/ install -m644 ssc-stream-freshness/manifests/ssc-stream-freshness-20261113.json %{buildroot}%{_datadir}/%{name}/ %check test ! -e arch/arm64/boot/Image test ! -e resource-object/arch/arm64/boot/Image test ! -e resource-object/drivers/clk/qcom/camcc-sm7675.ko test -s %{buildroot}%{_datadir}/%{name}/camcc-resource-checks.txt %files %license camcc-resource/LICENSES/GPL-2.0-only.txt %{_datadir}/%{name}/* %changelog * Fri Nov 13 2026 Uke contributors - 7.3.3-106 - Require a fresh streaming report when joining an existing SSC buffer. - Own exact CRMC resources permanently before provider power or publication. - Preserve firmware-enabled refusal and test clean unwind and fault retention.