kernel-6.6/kernel.spec

1816 lines
65 KiB
RPMSpec
Raw Normal View History

# _get_email() in %%build contains bashisms for regexping
%define _buildshell /bin/bash
# brp-python-bytecompile uses /usr/bin/python,
# but it is a different python version in different ROSA
# releases; there is no good way to tell brp-python-bytecompile
# which iterpreter to use; so just disable it to avoid problems
%define _python_bytecompile_build 0
2020-06-19 23:42:50 +03:00
# Probably dwz bug, on i686 only file is not packaged:
# /usr/lib/debug/usr/bin/trace-5.4.40-3.i386.debug.#dwz#.b5xuKG
# dwz compresses only debuginfo from perf, cpupower, uml,
# not the kernel itself (because it is stripped not by RPM),
# so we do not loose much by disabling it.
%global _find_debuginfo_dwz_opts %{nil}
2020-06-19 23:42:50 +03:00
# Put everything into one non-standard debuginfo subpackage
# TODO: make multiple debuginfo packages coinstallable as installonlypkg,
# to achive this, there must be no conflicting files.
# Probably signing and compressing of kernel modules
# has to be moved to %%_spec_install_post.
%global _debuginfo_subpackages %{nil}
%global _debuginfo_template %{nil}
%undefine _debugsource_packages
2023-02-08 15:54:13 +03:00
# Avoid rediffing patches like AUFS when possible
%define _default_patch_fuzz 10
# Hack: flavour and major version are variable, make %%_build_pkgcheck_* always detect and use this config
%global _build_pkgcheck_set %(echo "%{_build_pkgcheck_set}" | sed -e 's,/%{name}.rpmlintrc,/kernel.rpmlintrc,')
%global _build_pkgcheck_srpm %(echo "%{_build_pkgcheck_srpm}" | sed -e 's,/%{name}.rpmlintrc,/kernel.rpmlintrc,')
%define kernelversion 6
%define patchlevel 1
[bot] upd: 6.1.24 -> 6.1.27 Changelog: 9p/xen : Fix use after free bug in xen_9pfs_front_remove due to race condition ACPI: resource: Add Medion S17413 to IRQ override quirk ACPI: video: Add backlight=native DMI quirk for Acer Aspire 3830TG ALSA: emu10k1: don't create old pass-through playback device on Audigy ALSA: emu10k1: fix capture interrupt handler unlinking ALSA: firewire-tascam: add missing unwind goto in snd_tscm_stream_start_duplex() ALSA: hda/hdmi: disable KAE for Intel DG2 ALSA: hda: patch_realtek: add quirk for Asus N7601ZM ALSA: hda/realtek: Add quirks for Lenovo Z13/Z16 Gen2 ALSA: hda/realtek: fix mute/micmute LEDs for a HP ProBook ALSA: hda/sigmatel: add pin overrides for Intel DP45SG motherboard ALSA: hda/sigmatel: fix S/PDIF out on Intel D*45* motherboards ALSA: i2c/cs8427: fix iec958 mixer control deactivation arm64: dts: imx8mm-evk: correct pmic clock source arm64: dts: imx8mm-verdin: correct off-on-delay arm64: dts: imx8mp-verdin: correct off-on-delay arm64: dts: meson-g12-common: specify full DMC range arm64: dts: qcom: hk10: use "okay" instead of "ok" arm64: dts: qcom: ipq8074-hk01: enable QMP device, not the PHY node arm64: dts: qcom: ipq8074-hk10: enable QMP device, not the PHY node arm64: dts: qcom: sc8280xp-pmics: fix pon compatible and registers arm64: dts: rockchip: Lower sd speed on rk3566-soquartz ARM: 9290/1: uaccess: Fix KASAN false-positives ARM: dts: qcom: apq8026-lg-lenok: add missing reserved memory ARM: dts: rockchip: fix a typo error for rk3288 spdif node ASN.1: Fix check for strdup() success ASoC: fsl_asrc_dma: fix potential null-ptr-deref ASoC: fsl_sai: Fix pins setting for i.MX8QM platform ASoC: SOF: pm: Tear down pipelines only if DSP was active asymmetric_keys: log on fatal failures in PE/pkcs7 block: ublk_drv: mark device as LIVE before adding disk bluetooth: btbcm: Fix logic error in forming the board name. Bluetooth: Fix printing errors if LE Connection times out Bluetooth: Fix race condition in hidp_session_thread Bluetooth: Free potentially unfreed SCO connection Bluetooth: hci_conn: Fix not cleaning up on LE Connection failure Bluetooth: hci_conn: Fix possible UAF Bluetooth: L2CAP: Fix use-after-free in l2cap_disconnect_{req,rsp} bluetooth: Perform careful capability checks in hci_sock_ioctl() Bluetooth: SCO: Fix possible circular locking dependency sco_sock_getsockopt Bluetooth: Set ISO Data Path on broadcast sink bnxt_en: Do not initialize PTP on older P3/P4 chips bonding: Fix memory leak when changing bond type to Ethernet bonding: fix ns validation on backup slaves bpf, arm64: Fixed a BTI error on returning to patched function bpf: Fix incorrect verifier pruning due to missing register precision taints bpf: tcp: Use sock_gen_put instead of sock_put in bpf_iter_tcp btrfs: fix fast csum implementation detection btrfs: fix uninitialized variable warnings btrfs: get the next extent map during fiemap/lseek more efficiently btrfs: restore the thread_pool= behavior in remount for the end I/O workqueues cgroup/cpuset: Add cpuset_can_fork() and cpuset_cancel_fork() methods cgroup/cpuset: Fix partition root's cpuset.cpus update bug cgroup/cpuset: Make cpuset_fork() handle CLONE_INTO_CGROUP properly cgroup/cpuset: Skip spread flags update on v2 cgroup/cpuset: Wake up cpuset_attach_wq tasks in cpuset_cancel_attach() cgroup: fix display of forceidle time at root cgroup,freezer: hold cpu_hotplug_lock before freezer_mutex cifs: fix negotiate context parsing clk: rs9: Fix suspend/resume clk: sprd: set max_register according to mapping range dccp: Call inet6_destroy_sock() via sk->sk_destruct(). dmaengine: apple-admac: Fix 'current_tx' not getting freed dmaengine: apple-admac: Handle 'global' interrupt flags dmaengine: apple-admac: Set src_addr_widths capability driver core: Don't require dynamic_debug for initcall_debug probe timing drm/amd/display: Pass the right info to drm_dp_remove_payload drm/amd/display: set dcn315 lb bpp to 48 drm/amdgpu: add mes resume when do gfx post soft reset drm/amdgpu: Fix desktop freezed after gpu-reset drm/amdgpu: Force signal hw_fences that are embedded in non-sched jobs drm/amdgpu/gfx: set cg flags to enter/exit safe mode drm/amdgpu/vcn: Disable indirect SRAM on Vangogh broken BIOSes drm/amd/pm: correct SMU13.0.7 max shader clock reporting drm/amd/pm: correct SMU13.0.7 pstate profiling clock settings drm/armada: Fix a potential double free in an error handling path drm: buddy_allocator: Fix buddy allocator init on 32-bit systems drm/fb-helper: set x/yres_virtual in drm_fb_helper_check_var drm/i915/dsi: fix DSS CTL register offsets for TGL+ drm/i915: Fix fast wake AUX sync len drm: panel-orientation-quirks: Add quirk for Lenovo Yoga Book X90F drm/rockchip: vop2: fix suspend/resume drm/rockchip: vop2: Use regcache_sync() to fix suspend/resume drm: test: Fix 32-bit issue in drm_buddy_test e1000e: Disable TSO on i219-LM card to increase speed efi: sysfb_efi: Add quirk for Lenovo Yoga Book X91F/L f2fs: Fix f2fs_truncate_partial_nodes ftrace event fbcon: Fix error paths in set_con2fb_map fbcon: set_con2fb_map needs to set con2fb_map! fbmem: Reject FB_ACTIVATE_KD_TEXT from userspace fpga: bridge: properly initialize bridge device before populating children fuse: always revalidate rename target dentry gcc: disable '-Warray-bounds' for gcc-13 too gpiolib: acpi: Add a ignore wakeup quirk for Clevo NL5xNU HID: intel-ish-hid: Fix kernel panic during warm reset hwmon: (peci/cputemp) Fix miscalculated DTS for SKX hwmon: (xgene) Fix ioremap and memremap leak i2c: hisi: Avoid redundant interrupts i2c: imx-lpi2c: clean rx/tx buffers upon new message i2c: mchp-pci1xxxx: Update Timing registers i2c: ocores: generate stop condition after timeout in polling mode i40e: fix accessing vsi->active_filters without holding lock i40e: fix i40e_setup_misc_vector() error handling iavf: refactor VLAN filter states iavf: remove active_cvlans and active_svlans bitmaps IB/mlx5: Add support for 400G_8X lane speed iio: adc: at91-sama5d2_adc: fix an error code in at91_adc_allocate_trigger() iio: dac: ad5755: Add missing fwnode_handle_put() iio: light: tsl2772: fix reading proximity-diodes from device tree inet6: Remove inet6_destroy_sock() in sk->sk_prot->destroy(). Input: pegasus-notetaker - check pipe type when probing kernel/sys.c: fix and improve control flow in __sys_setres[ug]id() ksmbd: avoid out of bounds access in decode_preauth_ctxt() KVM: arm64: Advertise ID_AA64PFR0_EL1.CSV2/3 to protected VMs KVM: arm64: Fix buffer overflow in kvm_arm_set_fw_reg() KVM: arm64: Initialise hypervisor copies of host symbols unconditionally KVM: arm64: Make vcpu flag updates non-preemptible KVM: arm64: PMU: Restore the guest's EL0 event counting after migration KVM: arm64: Retry fault if vma_lookup() results become invalid KVM: selftests: Move "struct hv_enlightenments" to x86_64/svm.h KVM: SVM: Add a proper field for Hyper-V VMCB enlightenments KVM: SVM: Flush Hyper-V TLB when required libbpf: Fix single-line struct definition output in btf_dump LoongArch, bpf: Fix jit to skip speculation barrier opcode LoongArch: Fix probing of the CRC32 feature LoongArch: Mark 3 symbol exports as non-GPL maple_tree: fix a potential memory leak, OOB access, or other unpredictable bug maple_tree: fix mas_empty_area() search maple_tree: fix write memory barrier of nodes once dead for RCU mode maple_tree: make maple state reusable after mas_empty_area_rev() memstick: fix memory leak if card device is never registered MIPS: Define RUNTIME_DISCARD_EXIT in LD script mlxfw: fix null-ptr-deref in mlxfw_mfa2_tlv_next() mlxsw: pci: Fix possible crash during initialization mmc: sdhci_am654: Set HIGH_SPEED_ENA for SDR12 and SDR25 mm/huge_memory.c: warn with pr_warn_ratelimited instead of VM_WARN_ON_ONCE_FOLIO mm/khugepaged: check again on anon uffd-wp during isolation mm: kmsan: handle alloc failures in kmsan_ioremap_page_range() mm: kmsan: handle alloc failures in kmsan_vmap_pages_range_noflush() mm/mempolicy: fix use-after-free of VMA iterator mm/mmap: regression fix for unmapped_area{_topdown} mm/page_alloc: fix potential deadlock on zonelist_update_seq seqlock mm: page_alloc: skip regions with hugetlbfs pages when allocating 1G pages mm/userfaultfd: fix uffd-wp handling for THP migration entries mptcp: fix accept vs worker race mptcp: stops worker on unaccepted sockets at listener close mptcp: stricter state check in mptcp_worker mptcp: use mptcp_schedule_work instead of open-coding it mtdblock: tolerate corrected bit-flips mtd: rawnand: meson: fix bitmask for length in command word mtd: rawnand: stm32_fmc2: remove unsupported EDO mode mtd: rawnand: stm32_fmc2: use timings.mode instead of checking tRC_min mtd: spi-nor: fix memory leak when using debugfs_lookup() net: bridge: switchdev: don't notify FDB entries with "master dynamic" net: dsa: b53: mmap: add phy ops netfilter: br_netfilter: fix recent physdev match breakage netfilter: nf_tables: fix ifdef to also consider nf_tables=m netfilter: nf_tables: Modify nla_memdup's flag to GFP_KERNEL_ACCOUNT netfilter: nf_tables: tighten netlink attribute requirements for catch-all elements netfilter: nf_tables: validate catch-all set elements net: macb: fix a memory corruption in extended buffer descriptor mode net: openvswitch: fix race on port output net: phy: nxp-c45-tja11xx: add remove callback net: phy: nxp-c45-tja11xx: fix unsigned long multiplication overflow net: qrtr: Fix an uninit variable access bug in qrtr_tx_resume() net: rpl: fix rpl header size calculation net: sched: sch_qfq: prevent slab-out-of-bounds in qfq_activate_agg net: sfp: initialize sfp->i2c_block_size at sfp allocation net: wwan: iosm: Fix error handling path in ipc_pcie_probe() nilfs2: initialize unused bytes in segment summary blocks niu: Fix missing unwind goto in niu_alloc_channels() nvme-pci: add NVME_QUIRK_BOGUS_NID for T-FORCE Z330 SSD nvme-pci: mark Lexar NM760 as IGNORE_DEV_SUBNQN nvme: send Identify with CNS 06h only to I/O controllers nvme-tcp: fix a possible UAF when failing to allocate an io queue phy: phy-brcm-usb: Utilize platform_get_irq_byname_optional() platform/x86: asus-nb-wmi: Add quirk_asus_tablet_mode to other ROG Flow X13 models platform/x86 (gigabyte-wmi): Add support for A320M-S2H V2 platform/x86: gigabyte-wmi: add support for B650 AORUS ELITE AX platform/x86: gigabyte-wmi: add support for X570S AORUS ELITE platform/x86/intel: vsec: Fix a memory leak in intel_vsec_add_aux powerpc/papr_scm: Update the NUMA distance table for the target node power: supply: axp288_fuel_gauge: Added check for negative values power: supply: cros_usbpd: reclassify "default case!" as debug power: supply: rk817: Fix unsigned comparison with less than zero purgatory: fix disabling debug info qlcnic: check pci_reset_function result RDMA/cma: Allow UD qp_type to join multicast only RDMA/core: Fix GID entry ref leak when create_ah fails RDMA/erdma: Defer probing if netdevice can not be found RDMA/erdma: Inline mtt entries into WQE if supported RDMA/erdma: Update default EQ depth to 4096 and max_send_wr to 8192 RDMA/irdma: Add ipv4 check to irdma_find_listener() RDMA/irdma: Do not generate SW completions for NOPs RDMA/irdma: Fix memory leak of PBLE objects RDMA/irdma: Increase iWARP CM default rexmit count regulator: fan53555: Explicitly include bits header regulator: fan53555: Fix wrong TCS_SLEW_MASK Revert "pinctrl: amd: Disable and mask interrupts on resume" Revert "userfaultfd: don't fail on unrecognized features" riscv: add icache flush for nommu sigreturn trampoline riscv: Do not set initial_boot_params to the linear address of the dtb riscv: Move early dtb mapping into the fixmap region riscv: No need to relocate the dtb as it lies in the fixmap region rust: kernel: Mark rust_fmt_argument as extern "C" rust: str: fix requierments->requirements typo s390/ptrace: fix PTRACE_GET_LAST_BREAK error handling sched/fair: Consider capacity inversion in util_fits_cpu() sched/fair: Detect capacity inversion sched/fair: Fixes for capacity inversion detection sched/fair: Fix imbalance overflow scsi: core: Improve scsi_vpd_inquiry() checks scsi: megaraid_sas: Fix fw_crash_buffer_show() scsi: ses: Handle enclosure with just a primary component gracefully sctp: Call inet6_destroy_sock() via sk->sk_destruct(). sctp: fix a potential overflow in sctp_ifwdtsn_skip selftests/bpf: Fix progs/find_vma_fail1.c build error. selftests: openvswitch: adjust datapath NL message declaration selftests: sigaltstack: fix -Wuninitialized sfc: Fix use-after-free due to selftest_work skbuff: Fix a race between coalescing and releasing SKBs spi: spi-rockchip: Fix missing unwind goto in rockchip_sfc_probe() tcp: restrict net.ipv4.tcp_app_win tools/mm/page_owner_sort.c: fix TGID output when cull=tg is used tracing: Add trace_array_puts() to write into instance tracing: Have tracing_snapshot_instance_cond() write errors to the appropriate instance ubi: Fix deadlock caused by recursively holding work_sem ubi: Fix failure attaching when vid_hdr offset equals to (sub)page size udp6: fix potential access to stale information um: Only disable SSE on clang to work around old GCC bugs USB: serial: option: add UNISOC vendor and TOZED LT70C product verify_pefile: relax wrapper length check virtio_net: bugfix overflow inside xdp_linearize_page() wifi: brcmfmac: slab-out-of-bounds read in brcmf_get_assoc_ies() wifi: iwlwifi: mvm: fix mvmtxq->stopped handling wifi: iwlwifi: mvm: protect TXQ list manipulation wifi: mwifiex: mark OF related data as maybe unused writeback, cgroup: fix null-ptr-deref write in bdi_split_work_to_wbs x86/hyperv: KVM: Rename "hv_enlightenments" to "hv_vmcb_enlightenments" x86/hyperv: Move VMCB enlightenment definitions to hyperv-tlfs.h x86/PCI: Add quirk for AMD XHCI controller that loses MSI-X state in D3hot x86/rtc: Remove __init for runtime functions xen/netback: use same error messages for same errors Updated by kernel-updater-bot (https://abf.io/mikhailnov/kernel-updater-bot)
2023-05-04 14:32:39 +03:00
%define sublevel 27
2013-11-16 00:27:01 +04:00
# Release number. Increase this before a rebuild.
[bot] upd: 6.1.23 -> 6.1.24 Changelog: ACPI: video: Add acpi_backlight=video quirk for Apple iMac14,1 and iMac14,2 ACPI: video: Add acpi_backlight=video quirk for Lenovo ThinkPad W530 ACPI: video: Add auto_detect arg to __acpi_video_get_backlight_type() ACPI: video: Make acpi_backlight=video work independent from GPU driver ALSA: hda/hdmi: Preserve the previous PCM device upon re-enablement ALSA: hda/realtek: Add quirk for Clevo X370SNW ALSA: hda/realtek: fix mute/micmute LEDs for a HP ProBook arm64: compat: Work around uninitialized variable warning ASoC: codecs: lpass: fix the order or clks turn off during suspend ASoC: hdac_hdmi: use set_stream() instead of set_tdm_slots() ASoC: SOF: ipc4: Ensure DSP is in D0I0 during sof_ipc4_set_get_data() blk-mq: directly poll requests blk-throttle: Fix that bps of child could exceed bps limited in parent block: don't set GD_NEED_PART_SCAN if scan partition failed block: ublk: make sure that block size is set correctly bpftool: Print newline before '}' for struct with padding only fields can: isotp: fix race between isotp_sendsmg() and isotp_release() can: isotp: isotp_ops: fix poll() to not report false EPOLLOUT events can: isotp: isotp_recvmsg(): use sock_recv_cmsgs() to get SOCK_RXQ_OVFL infos can: j1939: j1939_tp_tx_dat_new(): fix out-of-bounds memory access cifs: sanitize paths in cifs_update_super_prepath. coresight-etm4: Fix for() loop drvdata->nr_addr_cmp range bug coresight: etm4x: Do not access TRCIDR1 for identification counter: 104-quad-8: Fix race condition between FLAG and CNTR reads counter: 104-quad-8: Fix Synapse action reported for Index signals cxl/pci: Fix CDAT retrieval on big endian cxl/pci: Handle excessive CDAT length cxl/pci: Handle truncated CDAT entries cxl/pci: Handle truncated CDAT header dm cache: Add some documentation to dm-cache-background-tracker.h dm: change "unsigned" to "unsigned int" dm: fix improper splitting for abnormal bios dm integrity: Remove bi_sector that's only used by commented debug code drivers: iio: adc: ltc2497: fix LSB shift Drivers: vmbus: Check for channel allocation before looking up relids drm/amd/display: Clear MST topology if it fails to resume drm/amdgpu: for S0ix, skip SDMA 5.x+ suspend/resume drm/amdgpu: skip psp suspend for IMU enabled ASICs mode2 reset drm/bridge: lt9611: Fix PLL being unable to lock drm/display/dp_mst: Handle old/new payload states in drm_dp_remove_payload() drm/i915/dp_mst: Fix payload removal during output disabling drm/i915: Fix context runtime accounting drm/i915: fix race condition UAF in i915_perf_add_config_ioctl drm/i915: Split icl_color_commit_noarm() from skl_color_commit_noarm() drm/i915: Use _MMIO_PIPE() for SKL_BOTTOM_COLOR drm/nouveau/disp: Support more modes by checking with lower bpc drm/panfrost: Fix the panfrost_mmu_map_fault_addr() error path dt-bindings: serial: renesas,scif: Fix 4th IRQ for 4-IRQ SCIFs ethtool: reset #lanes when lanes is omitted fs: drop peer group ids under namespace lock ftrace: Fix issue that 'direct->addr' not restored in modify_ftrace_direct() ftrace: Mark get_lock_parent_ip() __always_inline gpio: davinci: Add irq chip flag to skip set wake gpio: davinci: Do not clear the bank intr enable bit in save_context gpio: GPIO_REGMAP: select REGMAP instead of depending on it gve: Secure enough bytes in the first TX desc for all TCP pkts ice: fix wrong fallback logic for FDIR ice: Reset FDIR counter in FDIR init stage icmp: guard against too small mtu iio: adc: ad7791: fix IRQ flags iio: adc: qcom-spmi-adc5: Fix the channel name iio: adc: ti-ads7950: Set `can_sleep` flag for GPIO chip iio: adis16480: select CONFIG_CRC32 iio: buffer: correctly return bytes written in output buffers iio: buffer: make sure O_NONBLOCK is respected iio: dac: cio-dac: Fix max DAC write value check for 12-bit iio: light: cm32181: Unregister second I2C client if present io_uring: fix memory leak when removing provided buffers io_uring: fix return value when removing provided buffers ipv6: Fix an uninit variable access bug in __ip6_make_skb() ksmbd: do not call kvmalloc() with __GFP_NORETRY | __GFP_NO_WARN ksmbd: fix slab-out-of-bounds in init_smb2_rsp_hdr KVM: arm64: PMU: Align chained counter implementation with architecture pseudocode KVM: arm64: PMU: Distinguish between 64bit counter and 64bit overflow KVM: arm64: PMU: Don't save PMCR_EL0.{C,P} for the vCPU KVM: arm64: PMU: Sanitise PMCR_EL0.LP on first vcpu run KVM: nVMX: Do not report error code when synthesizing VM-Exit from Real Mode KVM: s390: pv: fix external interruption loop not always detected KVM: x86: Clear "has_error_code", not "error_code", for RM exception injection l2tp: generate correct module alias strings maple_tree: add RCU lock checking to rcu callback functions maple_tree: add smp_rmb() to dead node detection maple_tree: be more cautious about dead nodes maple_tree: detect dead nodes in mas_start() maple_tree: fix a potential concurrency bug in RCU mode maple_tree: fix freeing of nodes in rcu mode maple_tree: fix get wrong data_end in mtree_lookup_walk() maple_tree: fix handle of invalidated state in mas_wr_store_setup() maple_tree: fix mas_prev() and mas_find() state handling maple_tree: fix potential rcu issue maple_tree: reduce user error potential maple_tree: refine ma_state init from mas_start() maple_tree: remove extra smp_wmb() from mas_dead_leaves() maple_tree: remove GFP_ZERO from kmem_cache_alloc() and kmem_cache_alloc_bulk() mm: enable maple tree RCU mode by default. mm/hugetlb: fix uffd wr-protection for CoW optimization path mm: kfence: fix handling discontiguous page mm: kfence: fix PG_slab and memcg_data clearing mm/swap: fix swap_info_struct race between swapoff and get_swap_pages() mm: take a page reference when removing device exclusive entries mm: vmalloc: avoid warn_alloc noise caused by fatal signal net: don't let netpoll invoke NAPI if in xmit context net: dsa: mv88e6xxx: Reset mv88e6393x force WD event bit net: ethernet: ti: am65-cpsw: Fix mdio cleanup in probe netlink: annotate lockless accesses to nlk->max_recvmsg_len net: phylink: add phylink_expects_phy() method net: qrtr: Do not do DEL_SERVER broadcast after DEL_CLIENT net: qrtr: Fix a refcount bug in qrtr_recvmsg() net: stmmac: Add queue reset into stmmac_xdp_open() function net: stmmac: check fwnode for phy device before scanning for phy net: stmmac: check if MAC needs to attach to a PHY net: stmmac: fix up RX flow hash indirection table when setting channels net: stmmac: remove redundant fixup to support fixed-link mode NFSD: Avoid calling OPDESC() with ops->opnum == OP_ILLEGAL NFSD: callback request does not use correct credential for AUTH_SYS nfsd: call op_release, even when op_func returns an error nilfs2: fix potential UAF of struct nilfs_sc_info in nilfs_segctor_thread() nilfs2: fix sysfs interface lifetime nvme: fix discard support without oncs PCI/DOE: Fix memory leak with CONFIG_DEBUG_OBJECTS=y PCI/DOE: Silence WARN splat with CONFIG_DEBUG_OBJECTS=y perf/core: Fix the same task check in perf_event_set_output ping: Fix potentail NULL deref for /proc/net/icmp. platform/x86: think-lmi: Clean up display of current_value on Thinkstation platform/x86: think-lmi: Fix memory leaks when parsing ThinkStation WMI strings platform/x86: think-lmi: Fix memory leak when showing current settings pwm: cros-ec: Explicitly set .polarity in .get_state() pwm: hibvt: Explicitly set .polarity in .get_state() pwm: iqs620a: Explicitly set .polarity in .get_state() pwm: Make .get_state() callback return an error code pwm: meson: Explicitly set .polarity in .get_state() pwm: sprd: Explicitly set .polarity in .get_state() raw: Fix NULL deref in raw_get_next(). raw: use net_hash_mix() in hash function ring-buffer: Fix race while reader and writer are on the same page scsi: iscsi_tcp: Check that sock is valid before iscsi_set_param() scsi: qla2xxx: Fix memory leak in qla2x00_probe_one() sctp: check send stream number after wait_for_sndbuf serial: 8250: Prevent starting up DMA Rx on THRI interrupt sunrpc: only free unix grouplist after RCU settles tracing: Free error logs of tracing instances tracing/osnoise: Fix notify new tracing_max_latency tracing/synthetic: Fix races on freeing last_cmd tracing/synthetic: Make lastcmd_mutex static tracing/timerlat: Notify new max thread latency tty: serial: fsl_lpuart: avoid checking for transfer complete when UARTCTRL_SBK is asserted in lpuart32_tx_empty tty: serial: sh-sci: Fix Rx on RZ/G2L SCI tty: serial: sh-sci: Fix transmit end interrupt handler ublk: read any SQE values upfront usb: cdnsp: Fixes error: uninitialized symbol 'len' usb: dwc3: pci: add support for the Intel Meteor Lake-S USB: serial: cp210x: add Silicon Labs IFS-USB-DATACABLE IDs USB: serial: option: add Quectel RM500U-CN modem USB: serial: option: add Telit FE990 compositions usb: typec: altmodes/displayport: Fix configure initial pin assignment usb: xhci: tegra: fix sleep in atomic call wifi: brcmfmac: Fix SDIO suspend/resume regression wifi: mac80211: fix invalid drv_sta_pre_rcu_remove calls for non-uploaded sta wifi: mac80211: fix the size calculation of ieee80211_ie_len_eht_cap() wifi: mt76: ignore key disable commands x86/acpi/boot: Correct acpi_is_processor_usable() check x86/ACPI/boot: Use FADT version to check support for online capable xhci: also avoid the XHCI_ZERO_64B_REGS quirk with a passthrough iommu xhci: Free the command allocated for setting LPM if we return early zsmalloc: document freeable stats Updated by kernel-updater-bot (https://abf.io/mikhailnov/kernel-updater-bot)
2023-04-13 19:53:29 +03:00
%define rpmrel 1
%define fullrpmrel %{rpmrel}
2013-11-16 00:27:01 +04:00
%define rpmtag %{disttag}
2013-11-16 00:27:01 +04:00
# Version defines
%define kversion %{kernelversion}.%{patchlevel}.%{sublevel}
%define kverrel %{kversion}-%{fullrpmrel}
2022-12-14 02:55:50 +00:00
%define tar_ver %{kernelversion}.%{patchlevel}
2013-11-16 00:27:01 +04:00
%ifarch %{ix86}
%define arch_suffix i686
2020-11-26 21:09:27 +00:00
%endif
%ifarch %{x86_64}
%define arch_suffix x86_64
%endif
2020-11-26 21:09:27 +00:00
%ifarch aarch64
%define arch_suffix arm64
2020-11-26 21:09:27 +00:00
%endif
%define buildrpmrel %{fullrpmrel}%{rpmtag}-%{arch_suffix}
%define buildrel %{kversion}-%{buildrpmrel}
2013-11-16 00:27:01 +04:00
# Add not only the build time generated key to the trusted keyring,
# but also add public keys of private ROSA's keys
%bcond_without additional_keys
2021-05-22 12:08:22 +03:00
# Fail the build after "make oldconfig" to edit kernel configs
%bcond_with fail
2021-05-22 12:08:22 +03:00
2020-03-13 20:35:12 +03:00
# User Mode Linux, https://habr.com/ru/company/itsumma/blog/459558/
# Not buildable on aarch64, rarely needed in general
%bcond_with uml
# "Nickel" is a special brand for certified distros
2022-03-17 10:23:10 +03:00
%if %{mdvver} == 201905
%bcond_without nickel
# Require kernel modules to be signed
%bcond_without oblig_signed_modules
%else
%bcond_with nickel
%bcond_with oblig_signed_modules
%endif
# Build binary out-of-tree kernel modules (experimental)
%bcond_without binary_extra_modules
# Sign kernel modules with GOST key (experimental)
%bcond_without gost_sign
2020-07-29 10:59:41 +03:00
%bcond_with ccache
%bcond_without flow_abi
%bcond_without aufs
Update from 5.4 to 5.10.1 - rediffed most of patches, renamed files to easify further rediffs by git format-patch - thanks to abf.io/kernels_stable for some patches for kernel 5.9 - using unofficial patch for AUFS for kernel 5.10, there may be issues with stability, try to avoid using AUFS (I would have dropped it, but MagOS wants it very much) - pulled updates of AltHa from http://git.altlinux.org/gears/k/kernel-image-un-def.git?p=kernel-image-un-def.git;a=history;f=security/altha;hb=HEAD - dropped patch adding sysctl to disable disk-based swap because it has not found any usage - bpf is now in the list of LSM modules (ability to write LSM modules as BPF programs), enable it, it is potentially useful and does not seem to be harmful - keeping kernel libc headers in older kernels for now - dropped building external virtualbox guest modules because they are now included into the mainline kernel - offed building VirtualBox host modules, I do not know how to keep these binary modules in sync with userspace part of VirtualBox, users can continue using dkms - offed building kernel-shredder because it is not buildable on kernel 5.10 - updated rtl8821ce and added a dependency from its "blacklist" subpackage here (see https://github.com/tomaspinho/rtl8821ce/commit/14b536f0) It is not clear if kernel 5.10 will receive an LTS support longer than 5.4 or not. Support until Dec, 2022 is declared right now at https://www.kernel.org/category/releases.html for 5.10 and until Dec, 2025 - for 5.4. TODO: update kernel configs TODO: solve problems with version of virtualbox host modules not matching version of the virtualbox package after virtualbox is updated but kernel is not rebuilt
2020-12-20 18:49:24 +03:00
# 1. VirtualBox is for x86_32 and x86_64 only
# 2. I do not know how to solve the problem that userspace part of VirtualBox
# will be updated ahead of these binary modules. So just off building them.
Update from 5.4 to 5.10.1 - rediffed most of patches, renamed files to easify further rediffs by git format-patch - thanks to abf.io/kernels_stable for some patches for kernel 5.9 - using unofficial patch for AUFS for kernel 5.10, there may be issues with stability, try to avoid using AUFS (I would have dropped it, but MagOS wants it very much) - pulled updates of AltHa from http://git.altlinux.org/gears/k/kernel-image-un-def.git?p=kernel-image-un-def.git;a=history;f=security/altha;hb=HEAD - dropped patch adding sysctl to disable disk-based swap because it has not found any usage - bpf is now in the list of LSM modules (ability to write LSM modules as BPF programs), enable it, it is potentially useful and does not seem to be harmful - keeping kernel libc headers in older kernels for now - dropped building external virtualbox guest modules because they are now included into the mainline kernel - offed building VirtualBox host modules, I do not know how to keep these binary modules in sync with userspace part of VirtualBox, users can continue using dkms - offed building kernel-shredder because it is not buildable on kernel 5.10 - updated rtl8821ce and added a dependency from its "blacklist" subpackage here (see https://github.com/tomaspinho/rtl8821ce/commit/14b536f0) It is not clear if kernel 5.10 will receive an LTS support longer than 5.4 or not. Support until Dec, 2022 is declared right now at https://www.kernel.org/category/releases.html for 5.10 and until Dec, 2025 - for 5.4. TODO: update kernel configs TODO: solve problems with version of virtualbox host modules not matching version of the virtualbox package after virtualbox is updated but kernel is not rebuilt
2020-12-20 18:49:24 +03:00
%bcond_with binary_virtualbox_host
# Shredder-kernel works only on x86_64, makes manipulations with syscalls tables,
Update from 5.4 to 5.10.1 - rediffed most of patches, renamed files to easify further rediffs by git format-patch - thanks to abf.io/kernels_stable for some patches for kernel 5.9 - using unofficial patch for AUFS for kernel 5.10, there may be issues with stability, try to avoid using AUFS (I would have dropped it, but MagOS wants it very much) - pulled updates of AltHa from http://git.altlinux.org/gears/k/kernel-image-un-def.git?p=kernel-image-un-def.git;a=history;f=security/altha;hb=HEAD - dropped patch adding sysctl to disable disk-based swap because it has not found any usage - bpf is now in the list of LSM modules (ability to write LSM modules as BPF programs), enable it, it is potentially useful and does not seem to be harmful - keeping kernel libc headers in older kernels for now - dropped building external virtualbox guest modules because they are now included into the mainline kernel - offed building VirtualBox host modules, I do not know how to keep these binary modules in sync with userspace part of VirtualBox, users can continue using dkms - offed building kernel-shredder because it is not buildable on kernel 5.10 - updated rtl8821ce and added a dependency from its "blacklist" subpackage here (see https://github.com/tomaspinho/rtl8821ce/commit/14b536f0) It is not clear if kernel 5.10 will receive an LTS support longer than 5.4 or not. Support until Dec, 2022 is declared right now at https://www.kernel.org/category/releases.html for 5.10 and until Dec, 2025 - for 5.4. TODO: update kernel configs TODO: solve problems with version of virtualbox host modules not matching version of the virtualbox package after virtualbox is updated but kernel is not rebuilt
2020-12-20 18:49:24 +03:00
# loading/unloading of the module failed sometimes on kernel 5.4
# and it has not been adapted for kernel 5.10 (is not buildable)
%bcond_with binary_shredder
# Compress modules with zstd (zstd is good compression and fast decompression)
%bcond_without compress_modules
# Spend more resources on compression, but make resulting size less;
# decompression speed will not be affected, but more memory will be required
# which should not a problem here (performance penalty from allocating more
# memory should not be big, I think, but I did not benchmark).
%define zstd_cmd zstd -q --format=zstd --ultra -22
# Kernel flavour
%if %{with nickel}
%define flavour nickel
%else
%define flavour generic
%endif
2013-11-16 00:27:01 +04:00
# The full kernel version
%define kver_full %{kversion}-%{flavour}-%{buildrpmrel}
2021-10-10 16:12:22 +03:00
############################################################################
%define top_dir_name kernel-%{_arch}
%define build_dir ${RPM_BUILD_DIR}/%{top_dir_name}
%define src_dir %{build_dir}/linux-%{tar_ver}
# Common target directories
%define _bootdir /boot
%define _modulesdir /lib/modules
%define devel_root /usr/src/linux-%{kver_full}
%define initrd_path %{_bootdir}/initrd-%{kver_full}.img
# Directories needed for building
%define temp_root %{build_dir}/temp-root
%define temp_boot %{temp_root}%{_bootdir}
%define temp_modules %{temp_root}%{_modulesdir}
%define temp_devel_root %{temp_root}%{devel_root}
# Directories definition needed for installing
%define target_boot %{buildroot}%{_bootdir}
%define target_modules %{buildroot}%{_modulesdir}
2019-11-11 17:47:53 +03:00
# Manual control of creating and deleting keys
# "rnd" is "random" and means that a key pair is generated at build time
# and is not saved anywhere.
%define certs_dir_rnd certs
%define certs_signing_key_priv_rnd %{certs_dir_rnd}/signing_key_priv.key
%define certs_signing_der %{certs_dir_rnd}/signing_key.x509
%define certs_key_config_rnd %{certs_dir_rnd}/x509.genkey
%define certs_public_keys %{certs_dir_rnd}/public.pem
%define certs_verify_tmp %{certs_dir_rnd}/verify.tmp
%define kernel_files %{_builddir}/kernel_files.list
%define debuginfo_files %{_builddir}/debuginfo_files.list
# Append list of files generate by find-debuginfo.sh to our custom list
%global __debug_install_post \
%{__debug_install_post} \
cat %{_builddir}/debugfiles.list >> %{debuginfo_files}
############################################################################
2013-11-16 00:27:01 +04:00
%if %{with binary_extra_modules}
# global instead of define to speed up things
2022-10-16 00:19:07 +03:00
%global nvidia_340_j %{kroko_j -p kernel-source-nvidia340 -r 340}
%global nvidia_340_n %{kroko_n -p kernel-source-nvidia340 -r 340}
%global nvidia_390_j %{kroko_j -p kernel-source-nvidia390 -r 390}
%global nvidia_390_n %{kroko_n -p kernel-source-nvidia390 -r 390}
%global nvidia_470_j %{kroko_j -p kernel-source-nvidia470 -r 470}
%global nvidia_470_n %{kroko_n -p kernel-source-nvidia470 -r 470}
%global nvidia_510_j %{kroko_j -p kernel-source-nvidia510 -r 510}
%global nvidia_510_n %{kroko_n -p kernel-source-nvidia510 -r 510}
%global nvidia_515_j %{kroko_j -p kernel-source-nvidia515 -r 515}
%global nvidia_515_n %{kroko_n -p kernel-source-nvidia515 -r 515}
2022-10-14 18:16:15 +03:00
%global nvidia_520_j %{kroko_j -p kernel-source-nvidia520 -r 520}
%global nvidia_520_n %{kroko_n -p kernel-source-nvidia520 -r 520}
2023-03-13 23:05:12 +03:00
%global nvidia_525_j %{kroko_j -p kernel-source-nvidia525 -r 525}
%global nvidia_525_n %{kroko_n -p kernel-source-nvidia525 -r 525}
2021-10-10 16:12:22 +03:00
# For SRPM stage when auto-krokodil-rpm-macros is not installed
%{?!kroko_mk_release:%global kroko_mk_release(n:) %{nil}}
%{?!kroko_req_modules_in_kernel:%global kroko_req_modules_in_kernel(j:n:p:) %{nil}}
# global, not define, must be expanded only once
%global kroko_release %kroko_mk_release -n kernel-%{kernelversion}.%{patchlevel}-%{flavour}
%endif #/binary_extra_modules
2021-10-10 16:12:22 +03:00
############################################################################
# Buildtime flags
2013-11-16 00:27:01 +04:00
%{?_without_doc: %global build_doc 0}
%{?_without_devel: %global build_devel 0}
%{?_without_debug: %global build_debug 0}
%{?_without_perf: %global build_perf 0}
%{?_without_cpupower: %global build_cpupower 0}
%{?_with_doc: %global build_doc 1}
%{?_with_devel: %global build_devel 1}
%{?_with_debug: %global build_debug 1}
%{?_with_perf: %global build_perf 1}
%{?_with_cpupower: %global build_cpupower 1}
%{?_with_modxz: %global build_modxz 0}
2013-11-16 00:27:01 +04:00
# Build defines
%define build_doc 1
%define build_devel 1
%define build_debug 1
# Build kernel-headers package
%define build_headers 0
# Build perf and cpupower tools
%define build_perf 1
%define build_cpupower 1
2020-07-29 10:59:41 +03:00
%if %{with compress_modules}
%if %{with modxz}
%define kmod_suffix .xz
%else
%define kmod_suffix .zst
%endif
%else
%define kmod_suffix %{nil}
%endif
%if !%{build_debug}
# Disable debug rpms.
%define _enable_debug_packages %{nil}
%define debug_package %{nil}
%endif
# End of user definitions
# http://nickdesaulniers.github.io/blog/2018/06/02/speeding-up-linux-kernel-builds-with-ccache/
%if %{with ccache}
%define kmake KBUILD_BUILD_TIMESTAMP='' %make CC='ccache gcc' ARCH="%{arch_type}"
2013-11-16 00:27:01 +04:00
%else
%define kmake %make CC='gcc' ARCH="%{arch_type}"
2013-11-16 00:27:01 +04:00
%endif
# There are places where parallel make don't work
%define smake make
2020-11-26 18:48:55 +00:00
%ifarch %{ix86} %{x86_64}
%define arch_type x86
2020-11-26 18:48:55 +00:00
%endif
%ifarch aarch64
%define arch_type arm64
2020-11-26 18:48:55 +00:00
%endif
2013-11-16 00:27:01 +04:00
# Parallelize xargs invocations on smp machines
%define kxargs xargs %([ -z "$RPM_BUILD_NCPUS" ] \\\
2013-11-16 00:27:01 +04:00
&& RPM_BUILD_NCPUS="`/usr/bin/getconf _NPROCESSORS_ONLN`"; \\\
[ "$RPM_BUILD_NCPUS" -gt 1 ] && echo "-P $RPM_BUILD_NCPUS")
#
# SRC RPM description
#
Summary: The Linux kernel
Name: kernel-%{kernelversion}.%{patchlevel}-%{flavour}
Version: %{kversion}
Release: %{fullrpmrel}
License: GPLv2
Group: System/Kernel and hardware
Url: https://www.kernel.org
2013-11-16 00:27:01 +04:00
ExclusiveArch: %{x86_64} %{ix86} aarch64
2013-11-16 00:27:01 +04:00
####################################################################
#
# Sources
#
#Source0: https://cdn.kernel.org/pub/linux/kernel/v%{kernelversion}.x/linux-%{tar_ver}.tar.xz
2022-12-14 18:46:00 +03:00
Source0: https://github.com/torvalds/linux/archive/refs/tags/v6.1.tar.gz?/linux-6.1.tar.gz
Revisited the set of kernel flavours and the generation of config files Until now, the build system for the kernel supported a number of flavours: nrj and non-nrj ones, desktop-, laptop-, server- and netbook-oriented, etc. It turned out over the years, however, that our users mostly need the following: * a kernel to use on the desktops (home and office use) with reasonable default settings for performance and responsiveness; * a kernel for laptops, with a bit more emphasis on power consumption. Other variants were rarely used. We also did not have enough time to properly support all these. Besides, the kernels for ARM and other architectures need a somewhat different build process than for x86. So, they are better off to be in separate ABF projects, even if they are needed. No signs of ROSA on ARM yet, btw. So, I kept only nrj-desktop and nrj-laptop flavours and only x86. Non-PAE systems also seem to be rare now, so I enabled PAE by default for the 32-bit kernels. Non-PAE kernels are no longer built. If they are needed, we may use a separate git branch or an ABF project for that. To simplify debugging, maintenance and experimentation with the kernel builds further, I revisited the process of preparing the kernel configuration files. The goal is to get rid of a separate git repo with the default configs (kernel-patches-and-configs) and keep everything in this project. The default config files are now kept here. For x86_64: * kernel-x86_64.config contains the options for both nrj-desktop and nrn-laptop flavours; * kernel-{nrj_desktop|nrj_laptop}-x86_64.config files contain the flavour-specific options. This way, it is easier to track which config options changed when, easier to experiment with the custom configs and so on. The kernel will be built with debug info if rpmbuild is called with "--with debug".
2016-07-21 13:56:25 +03:00
2013-11-16 00:27:01 +04:00
# This is for disabling *config, mrproper, prepare, scripts on -devel rpms
# Needed, because otherwise the -devel won't build correctly.
#Source2: 0001-disable-mrproper-prepare-scripts-configs-in-devel-rp.patch
2013-11-16 00:27:01 +04:00
# TODO: Make a separate package "ksobirator" and BR it
2020-07-29 10:59:41 +03:00
# after testing these macros properly
Source3: macros.ksobirator
%{load:%{SOURCE3}}
Revisited the set of kernel flavours and the generation of config files Until now, the build system for the kernel supported a number of flavours: nrj and non-nrj ones, desktop-, laptop-, server- and netbook-oriented, etc. It turned out over the years, however, that our users mostly need the following: * a kernel to use on the desktops (home and office use) with reasonable default settings for performance and responsiveness; * a kernel for laptops, with a bit more emphasis on power consumption. Other variants were rarely used. We also did not have enough time to properly support all these. Besides, the kernels for ARM and other architectures need a somewhat different build process than for x86. So, they are better off to be in separate ABF projects, even if they are needed. No signs of ROSA on ARM yet, btw. So, I kept only nrj-desktop and nrj-laptop flavours and only x86. Non-PAE systems also seem to be rare now, so I enabled PAE by default for the 32-bit kernels. Non-PAE kernels are no longer built. If they are needed, we may use a separate git branch or an ABF project for that. To simplify debugging, maintenance and experimentation with the kernel builds further, I revisited the process of preparing the kernel configuration files. The goal is to get rid of a separate git repo with the default configs (kernel-patches-and-configs) and keep everything in this project. The default config files are now kept here. For x86_64: * kernel-x86_64.config contains the options for both nrj-desktop and nrn-laptop flavours; * kernel-{nrj_desktop|nrj_laptop}-x86_64.config files contain the flavour-specific options. This way, it is easier to track which config options changed when, easier to experiment with the custom configs and so on. The kernel will be built with debug info if rpmbuild is called with "--with debug".
2016-07-21 13:56:25 +03:00
# Kernel configuration files.
Source111: kernel-x86_64.config
Source112: kernel-i686.config
Source113: kernel-arm64.config
2013-11-16 00:27:01 +04:00
# Cpupower: the service, the config, etc.
Source50: cpupower.service
Source51: cpupower.config
Source52: cpupower-start.sh
Source53: cpupower.path
2013-11-16 00:27:01 +04:00
Source80: kernel.rpmlintrc
# Additional keys that can be used to sign kernel modules
# Generated by https://abf.io/soft/kernel-keys
# Source201..206: public_key_GOST_*.pem
%{expand:%(for i in `seq 1 6`; do echo "Source$((200+${i})): public_key_GOST_${i}.pem"; done)}
# Source207..212: public_key_RSA_*.pem
%{expand:%(for i in `seq 7 12`; do echo "Source$((200+${i})): public_key_RSA_${i}.pem"; done)}
####################################################################
Revisited the set of kernel flavours and the generation of config files Until now, the build system for the kernel supported a number of flavours: nrj and non-nrj ones, desktop-, laptop-, server- and netbook-oriented, etc. It turned out over the years, however, that our users mostly need the following: * a kernel to use on the desktops (home and office use) with reasonable default settings for performance and responsiveness; * a kernel for laptops, with a bit more emphasis on power consumption. Other variants were rarely used. We also did not have enough time to properly support all these. Besides, the kernels for ARM and other architectures need a somewhat different build process than for x86. So, they are better off to be in separate ABF projects, even if they are needed. No signs of ROSA on ARM yet, btw. So, I kept only nrj-desktop and nrj-laptop flavours and only x86. Non-PAE systems also seem to be rare now, so I enabled PAE by default for the 32-bit kernels. Non-PAE kernels are no longer built. If they are needed, we may use a separate git branch or an ABF project for that. To simplify debugging, maintenance and experimentation with the kernel builds further, I revisited the process of preparing the kernel configuration files. The goal is to get rid of a separate git repo with the default configs (kernel-patches-and-configs) and keep everything in this project. The default config files are now kept here. For x86_64: * kernel-x86_64.config contains the options for both nrj-desktop and nrn-laptop flavours; * kernel-{nrj_desktop|nrj_laptop}-x86_64.config files contain the flavour-specific options. This way, it is easier to track which config options changed when, easier to experiment with the custom configs and so on. The kernel will be built with debug info if rpmbuild is called with "--with debug".
2016-07-21 13:56:25 +03:00
2013-11-16 00:27:01 +04:00
# Patches
# The patch to make kernel x.y.z from x.y.0.
2023-01-04 17:13:03 +00:00
Patch1: https://cdn.kernel.org/pub/linux/kernel/v%{kernelversion}.x/patch-%{kversion}.xz
2013-11-16 00:27:01 +04:00
# ROSA-specific patches
Patch2: kernel-5.10.93-fix-perf-build.patch
2023-03-13 21:59:13 +03:00
# Keep in sync with patch in r8168
Patch3: 0001-r8169-remove-devices-supported-by-r8168.patch
# Perf docs are built after all the kernels. To validate the xml files
# generated during that process, xmlto tries to get DTD files from the Net.
# If it fails, the whole build fails, which is unfortunate. Let us avoid
# this.
Patch101: 0001-perf-skip-xmlto-validation.patch
# http://bugs.rosalinux.ru/show_bug.cgi?id=6235
# http://bugs.rosalinux.ru/show_bug.cgi?id=6459
Patch102: 0001-audit-make-it-less-verbose.patch
%if %{with aufs}
# https://github.com/sfjro/aufs-linux/compare/830b3c68c1fb1e9176028d02ef86f3cf76aa2476..834d19786ccd95485e397fc0f36ef7d6c3b04c95.diff
Patch103: aufs-6.1.diff
%endif
2019-12-07 21:57:55 +03:00
2020-06-18 18:38:30 +03:00
# For kmod() generator of RPM Provides
# Changes version of aacraid.ko
Patch111: 0001-Remove-RPM-illegal-chars-from-module-version.patch
2020-06-18 18:38:30 +03:00
# AltHa LSM Module
# https://www.altlinux.org/AltHa
# http://git.altlinux.org/gears/k/kernel-image-un-def.git
# TODO: known problem: https://bugzilla.altlinux.org/show_bug.cgi?id=38225
2022-03-17 10:23:10 +03:00
Patch201: 0001-altha.patch
2020-03-20 11:27:35 +03:00
# sent to upstream, https://patchwork.kernel.org/patch/11446123/
Patch302: 0001-sign-file-full-functionality-with-modern-LibreSSL.patch
# Allow to off modules signature check dynamically
Patch306: 0001-ROSA-ima-allow-to-off-modules-signature-check-dynami.patch
2013-11-16 00:27:01 +04:00
# Support sound on notebook Aquarius NS685U R11 (https://linux-hardware.org/?probe=339dc3db60)
Patch0401: 0401-ASoC-es8316-Use-increased-GPIO-debounce-time.patch
Patch0402: 0402-ASoC-Intel-sof_es8336-Add-more-quirks-for-Russian-ha.patch
Patch0403: 0403-ASoC-Intel-sof_es8336-Add-a-quirk-for-Aquarius-NS685.patch
Add support of Baikal-M SoCs Information about config values was taken from: From 804820df7bcb3d53a33ecd074b1eac277e938f24 Mon Sep 17 00:00:00 2001 From: Alexey Sheplyakov <asheplyakov@altlinux.org> Date: Thu, 4 Feb 2021 19:35:14 +0400 Subject: [PATCH] config-aarch64: adjusted for Baikal-M (MBM1.0 board) * DW_APB_TIMER=y, DW_APB_TIMER_OF=y: SoC clocks * SERIAL_8250_DW=y: serial console * I2C_DESIGNWARE_CORE=y, I2C_DESIGNWARE_PLATFORM=y: BMC (board management controller) and RTC (Real Time Clock) are connected via I2C. * GPIO_DWAPB=y: device (PCIe, PHY, etc) reset/configuration * RTC_DRV_PCF2127=y: RTC compiled in so the kernel automatically sets the system time from the hardware clock * TP_BMC=y: amongst other things handles the power button * DRM_BAIKAL_VDU=m, DRM_BAIKAL_HDMI=m: video unit and HDMI transmitter * CMA_SIZE_MBYTES=256: video display unit and GPU use system RAM, hence CMA should reserve enough (contiguous) memory. Note: CMA reserves memory during very early init, hence the size has to be hard-coded into CONFIG * MALI_MIDGARD=m: GPU driver, kernel side of proprietary mali blob. Note: kernel mode code is GPLv2, so it's fine to distribute it. * SENSORS_BT1_PVT=m: hardware temperature/voltage sensors * PCI_BAIKAL=m: PCIe root complex. Compiled as a module since takes ages (60 seconds or so) to probe the hardware. If compiled in substantially increases the boot time, and machine is completely unresponsive during probing PCIe. When built as a module probing executes concurrently with other boot activities (unless booting from a PCIe device) * STMMAC_ETH=m, STMMAC_PLATFORM=m, DWMAC_BAIKAL=m: Ethernet driver
2021-06-22 16:12:03 +03:00
# Support Baikal-M (aarch64)
# From https://github.com/asheplyakov/linux/commits/baikalm-6.1.y
Patch0600: 0600-clk-added-Baikal-M-clock-management-unit-driver.patch
Patch0601: 0601-cpufreq-dt-don-t-load-on-Baikal-M-SoC.patch
Patch0602: 0602-serial-8250_dw-verify-clock-rate-in-dw8250_set_termi.patch
Patch0603: 0603-usb-dwc3-of-simple-added-compatible-string-for-Baika.patch
Patch0604: 0604-dw-pcie-refuse-to-load-on-Baikal-M-with-recent-firmw.patch
Patch0605: 0605-arm64-Enable-armv8-based-Baikal-M-SoC-support.patch
Patch0606: 0606-efi-rtc-avoid-calling-efi.get_time-on-Baikal-M-SoC.patch
Patch0607: 0607-arm64-stub-fixed-secondary-cores-boot-on-Baikal-M-So.patch
Patch0608: 0608-pm-disable-all-sleep-states-on-Baikal-M-based-boards.patch
Patch0609: 0609-net-fwnode_get_phy_id-consider-all-compatible-string.patch
Patch0610: 0610-net-stmmac-inital-support-of-Baikal-T1-M-SoCs-GMAC.patch
Patch0611: 0611-dt-bindings-dwmac-Add-bindings-for-Baikal-T1-M-SoCs.patch
Patch0612: 0612-net-dwmac-baikal-added-compatible-strings.patch
Patch0613: 0613-Added-TF307-TF306-board-management-controller-driver.patch
Patch0614: 0614-hwmon-bt1-pvt-access-registers-via-pvt_-readl-writel.patch
Patch0615: 0615-hwmon-bt1-pvt-define-pvt_readl-pvt_writel-for-Baikal.patch
Patch0616: 0616-hwmon-bt1-pvt-adjusted-probing-for-Baikal-M-SoC.patch
Patch0617: 0617-hwmon-bt1-pvt-added-compatible-baikal-pvt.patch
Patch0618: 0618-drm-new-bridge-driver-stdp4028.patch
Patch0619: 0619-drm-added-Baikal-M-SoC-video-display-unit-driver.patch
Patch0620: 0620-drm-bridge-dw-hdmi-support-ahb-audio-hw-revision-0x2.patch
Patch0621: 0621-dt-bindings-dw-hdmi-added-ahb-audio-regshift.patch
Patch0622: 0622-drm-bridge-dw-hdmi-force-ahb-audio-register-offset-f.patch
Patch0623: 0623-drm-panfrost-forcibly-set-dma-coherent-on-Baikal-M.patch
Patch0624: 0624-drm-panfrost-disable-devfreq-on-Baikal-M.patch
Patch0625: 0625-ALSA-hda-Baikal-M-support.patch
Patch0626: 0626-PCI-pcie-baikal-driver-for-Baikal-M-with-new-firmwar.patch
Patch0627: 0627-BROKEN-dwc-i2s-support-Baikal-M-SoC.patch
Patch0628: 0628-input-added-TF307-serio-PS-2-emulator-driver.patch
Patch0629: 0629-input-new-driver-serdev-serio.patch
Patch0630: 0630-phy-realtek-leds-configuration-for-RTL8211f.patch
Patch0631: 0631-arm64-defconfig-for-Baikal-M-testing.patch
2020-03-09 10:50:38 +03:00
# Disable AutoReq
AutoReq: 0
2020-03-09 10:50:38 +03:00
# but keep autoprov for kmod(xxx)
AutoProv: 1
2013-11-16 00:27:01 +04:00
BuildRequires: bash
BuildRequires: bc
BuildRequires: binutils
BuildRequires: bison
BuildRequires: bzip2
%if %{with ccache}
BuildRequires: ccache
%endif
BuildRequires: flex
BuildRequires: gcc
# ./scripts/mkcompile_h
BuildRequires: hostname
BuildRequires: kmod-compat
2019-09-24 11:56:44 +03:00
BuildRequires: rsync
%if %{with compress_modules}
%if %{with modxz}
BuildRequires: xz
%else
BuildRequires: zstd
%endif
%endif
2022-03-17 10:23:10 +03:00
%ifarch aarch64
BuildRequires: uboot-tools
%endif
BuildRequires: kmod-devel
BuildRequires: pkgconfig(libelf)
2020-11-26 21:21:05 +00:00
%ifarch x86_64 aarch64
BuildRequires: numa-devel
%endif
%if %{with uml}
BuildRequires: vde-devel
%endif
# For power tools
BuildRequires: pkgconfig(ncurses)
# For perf, cpufreq and all other tools
# For cpupower
%if %{build_cpupower}
BuildRequires: pciutils-devel
%endif
# For perf
%if %{build_perf}
BuildRequires: asciidoc
BuildRequires: perl-ExtUtils-Embed
BuildRequires: python3
BuildRequires: xmlto
BuildRequires: audit-devel
BuildRequires: binutils-devel
BuildRequires: elfutils-devel
BuildRequires: java-1.8.0-openjdk-devel
BuildRequires: libunwind-devel
BuildRequires: newt-devel
BuildRequires: perl-devel
BuildRequires: pkgconfig(babeltrace)
BuildRequires: pkgconfig(libcap)
BuildRequires: pkgconfig(libcrypto)
BuildRequires: pkgconfig(python3)
BuildRequires: pkgconfig(slang)
BuildRequires: pkgconfig(zlib)
BuildRequires: python3-setuptools
%endif
2019-12-01 02:03:15 +03:00
# (To generate keys)
2019-12-07 21:57:55 +03:00
# LibreSSL has GOST support without editing openssl.cnf
# or dlopen()-ing external library
BuildRequires: libressl
BuildRequires: libressl-devel
# To verify signatures (find, xargs, hexdump)
BuildRequires: findutils
BuildRequires: util-linux
2019-11-11 17:47:53 +03:00
2020-07-29 10:59:41 +03:00
%if %{with binary_extra_modules}
BuildRequires: auto-krokodil-rpm-macros
BuildRequires: kernel-source-rtl8821cu
2022-10-15 14:00:47 +03:00
BuildRequires: kernel-source-rtl88x2bu
2022-10-15 15:03:47 +03:00
BuildRequires: kernel-source-rtl8812au
2022-10-15 15:39:08 +03:00
BuildRequires: kernel-source-rtl8821au
2022-10-15 15:52:51 +03:00
BuildRequires: kernel-source-rtl8814au
2022-10-15 18:02:04 +03:00
BuildRequires: kernel-source-rtk_btusb
2022-10-18 18:44:54 +03:00
BuildRequires: kernel-source-rtl8188gu
BuildRequires: kernel-source-rtl8723du
BuildRequires: kernel-source-rtl8852au
BuildRequires: kernel-source-rtl8192du
BuildRequires: kernel-source-rtw89
2023-03-13 21:59:13 +03:00
BuildRequires: kernel-source-r8168
2022-10-16 00:19:07 +03:00
# Broadcom-wl and nvidia contain a proprietary blob which is only for x86
2021-10-07 00:45:03 +03:00
%ifarch %{ix86} %{x86_64}
BuildRequires: kernel-source-broadcom-wl
2022-10-16 00:19:07 +03:00
BuildRequires: kernel-source-nvidia340
BuildRequires: kernel-source-nvidia390
2021-10-07 00:45:03 +03:00
%endif
# Nvidia470+ are x86_64 only (maybe aarch64 will be also packaged later)
%ifarch %{x86_64}
BuildRequires: kernel-source-nvidia470
BuildRequires: kernel-source-nvidia510
BuildRequires: kernel-source-nvidia515
2022-10-14 18:16:15 +03:00
BuildRequires: kernel-source-nvidia520
2023-03-13 23:05:12 +03:00
BuildRequires: kernel-source-nvidia525
%endif
BuildRequires: kernel-source-tripso
BuildRequires: kernel-source-ipt-so
Update from 5.4 to 5.10.1 - rediffed most of patches, renamed files to easify further rediffs by git format-patch - thanks to abf.io/kernels_stable for some patches for kernel 5.9 - using unofficial patch for AUFS for kernel 5.10, there may be issues with stability, try to avoid using AUFS (I would have dropped it, but MagOS wants it very much) - pulled updates of AltHa from http://git.altlinux.org/gears/k/kernel-image-un-def.git?p=kernel-image-un-def.git;a=history;f=security/altha;hb=HEAD - dropped patch adding sysctl to disable disk-based swap because it has not found any usage - bpf is now in the list of LSM modules (ability to write LSM modules as BPF programs), enable it, it is potentially useful and does not seem to be harmful - keeping kernel libc headers in older kernels for now - dropped building external virtualbox guest modules because they are now included into the mainline kernel - offed building VirtualBox host modules, I do not know how to keep these binary modules in sync with userspace part of VirtualBox, users can continue using dkms - offed building kernel-shredder because it is not buildable on kernel 5.10 - updated rtl8821ce and added a dependency from its "blacklist" subpackage here (see https://github.com/tomaspinho/rtl8821ce/commit/14b536f0) It is not clear if kernel 5.10 will receive an LTS support longer than 5.4 or not. Support until Dec, 2022 is declared right now at https://www.kernel.org/category/releases.html for 5.10 and until Dec, 2025 - for 5.4. TODO: update kernel configs TODO: solve problems with version of virtualbox host modules not matching version of the virtualbox package after virtualbox is updated but kernel is not rebuilt
2020-12-20 18:49:24 +03:00
%if %{with binary_virtualbox_host}
BuildRequires: kernel-source-virtualbox
2020-11-26 18:58:01 +00:00
%endif
BuildRequires: kernel-source-v4l2loopback
Update from 5.4 to 5.10.1 - rediffed most of patches, renamed files to easify further rediffs by git format-patch - thanks to abf.io/kernels_stable for some patches for kernel 5.9 - using unofficial patch for AUFS for kernel 5.10, there may be issues with stability, try to avoid using AUFS (I would have dropped it, but MagOS wants it very much) - pulled updates of AltHa from http://git.altlinux.org/gears/k/kernel-image-un-def.git?p=kernel-image-un-def.git;a=history;f=security/altha;hb=HEAD - dropped patch adding sysctl to disable disk-based swap because it has not found any usage - bpf is now in the list of LSM modules (ability to write LSM modules as BPF programs), enable it, it is potentially useful and does not seem to be harmful - keeping kernel libc headers in older kernels for now - dropped building external virtualbox guest modules because they are now included into the mainline kernel - offed building VirtualBox host modules, I do not know how to keep these binary modules in sync with userspace part of VirtualBox, users can continue using dkms - offed building kernel-shredder because it is not buildable on kernel 5.10 - updated rtl8821ce and added a dependency from its "blacklist" subpackage here (see https://github.com/tomaspinho/rtl8821ce/commit/14b536f0) It is not clear if kernel 5.10 will receive an LTS support longer than 5.4 or not. Support until Dec, 2022 is declared right now at https://www.kernel.org/category/releases.html for 5.10 and until Dec, 2025 - for 5.4. TODO: update kernel configs TODO: solve problems with version of virtualbox host modules not matching version of the virtualbox package after virtualbox is updated but kernel is not rebuilt
2020-12-20 18:49:24 +03:00
%if %{with binary_shredder}
BuildRequires: kernel-source-shredder-kernel
%endif
# Rosa-test-suite is maintained in certified branches only nlkm, memfreetest, pcietest
%if %{with nickel}
BuildRequires: kernel-source-rosa-test-suite
2020-07-29 10:59:41 +03:00
%endif
%endif
# End of with binary_extra_modules
Provides: kernel = %{EVRD}
Provides: kernel-%{flavour} = %{EVRD}
2021-10-10 16:12:22 +03:00
Provides: kernel-abi(%{kver_full}) = %{EVRD}
# Dnf config-manager --dump | grep installonly
Provides: installonlypkg(kernel) = %{EVRD}.image
Provides: installonlypkg(kernel) = %{EVRD}.modules
# >= because of added support of zstd-compressed modules
Requires(posttrans): dracut >= 053-0.git5eb736.5
Requires(posttrans): kmod >= 28-3
# Need for rebuild dkms drivers
Requires: (%{name}-devel%{_isa} = %{EVRD} if dkms)
2023-03-13 21:59:13 +03:00
# not blob, support of devices supported by r8168 is removed from r8169
Recommends: %{ksob_module_pkg_name r8168} = %{EVRD}
# Usually necessary, but sometimes user may want to not install them
Recommends: crda
Recommends: linux-firmware
Recommends: microcode
# Set BFQ as default scheduler for HDDs
# https://www.phoronix.com/scan.php?page=article&item=linux-50hdd-io
Recommends: udev-rules-ioschedulers
Recommends: wireless-regdb
%if %{with flow_abi}
Requires: kernel-%{kernelversion}.%{patchlevel}-rosa-flow-abi
2013-11-16 00:27:01 +04:00
%endif
%ifarch %{ix86}
Conflicts: arch(x86_64)
2013-11-16 00:27:01 +04:00
%endif
2016-07-21 15:58:13 +03:00
# XXX temporary hack to upgrade from kernel-headers 1:5.4
%if %{build_headers}
Recommends: kernel-headers = %{EVRD}
%endif
2021-10-10 16:12:22 +03:00
%if %{with binary_extra_modules}
%ifarch %{ix86} %{x86_64}
2022-10-16 00:19:07 +03:00
%kroko_req_modules_in_kernel -j %{nvidia_340_j} -n %{nvidia_340_n} -p %{kver_full}
%kroko_req_modules_in_kernel -j %{nvidia_390_j} -n %{nvidia_390_n} -p %{kver_full}
2021-10-10 16:12:22 +03:00
%endif
%ifarch %{x86_64}
%kroko_req_modules_in_kernel -j %{nvidia_470_j} -n %{nvidia_470_n} -p %{kver_full}
%kroko_req_modules_in_kernel -j %{nvidia_510_j} -n %{nvidia_510_n} -p %{kver_full}
%kroko_req_modules_in_kernel -j %{nvidia_515_j} -n %{nvidia_515_n} -p %{kver_full}
2022-10-14 18:16:15 +03:00
%kroko_req_modules_in_kernel -j %{nvidia_520_j} -n %{nvidia_520_n} -p %{kver_full}
2023-03-13 23:05:12 +03:00
%kroko_req_modules_in_kernel -j %{nvidia_525_j} -n %{nvidia_525_n} -p %{kver_full}
%endif
2021-10-10 16:12:22 +03:00
%endif
%description
The kernel package contains the Linux kernel (vmlinuz), the core of your
operating system. The kernel handles the basic functions
of the operating system: memory allocation, process allocation, device
input and output, etc. This is a general-purpose kernel.
%posttrans
2022-10-18 23:20:11 +03:00
# update information about modules, useful if kernel-module* packages were
# installed in one transaction with this kernel (%%transfiletrigger* will run later)
depmod -a %{kver_full}
# We always regenerate initrd here, even if it already exists. This may
# happen if kernel-<...>-devel is installed first, triggers rebuild of
# DKMS modules and some of these request remaking of initrd. The initrd
# that is created then will be non-functional. But when the user installs
# kernel-<...> package, that defunct initrd will be replaced with a working
# one here.
dracut -f %{initrd_path} %{kver_full}
2013-11-16 00:27:01 +04:00
# File triggers from grub packages will handle this.
#/usr/sbin/update-grub2
2013-11-16 00:27:01 +04:00
%transfiletriggerin -- %{_modulesdir}/%{kver_full}
# Detect all modules, including ones inside kernel-module* packages
if grep -qE '/.*\.ko(|\..*)' ; then
depmod -a %{kver_full}
fi
%transfiletriggerpostun -- %{_modulesdir}/%{kver_full}
# Handle e.g. removal of kernel-module* packages
# List of files is not available here (?)
depmod -a %{kver_full}
%files -f %{kernel_files}
%{_bootdir}/System.map-%{kver_full}
%{_bootdir}/symvers-%{kver_full}.*
%{_bootdir}/config-%{kver_full}
%{_bootdir}/vmlinuz-%{kver_full}
%ghost %{initrd_path}
%ifarch %{armx}
%{_bootdir}/dtb-%{kver_full}
%endif
%{_modulesdir}/%{kver_full}/modules.*
%if %{with flow_abi}
%{_modulesdir}/%{kver_full}/kernel/zzz-%{kernelversion}.%{patchlevel}-rosa-flow-abi
%endif
%if %{with binary_extra_modules}
2021-10-03 16:35:09 +03:00
%exclude %{_modulesdir}/%{kver_full}/kernel/net/wireless/8821cu.ko%{kmod_suffix}
2022-10-15 14:00:47 +03:00
%exclude %{_modulesdir}/%{kver_full}/kernel/net/wireless/88x2bu.ko%{kmod_suffix}
2022-10-15 15:03:47 +03:00
%exclude %{_modulesdir}/%{kver_full}/kernel/net/wireless/8812au.ko%{kmod_suffix}
2022-10-15 15:39:08 +03:00
%exclude %{_modulesdir}/%{kver_full}/kernel/net/wireless/8821au.ko%{kmod_suffix}
2022-10-15 15:52:51 +03:00
%exclude %{_modulesdir}/%{kver_full}/kernel/net/wireless/8814au.ko%{kmod_suffix}
2022-10-15 18:02:04 +03:00
%exclude %{_modulesdir}/%{kver_full}/kernel/drivers/bluetooth/rtk_btusb.ko%{kmod_suffix}
2022-10-18 18:44:54 +03:00
%exclude %{_modulesdir}/%{kver_full}/kernel/net/wireless/8188gu.ko%{kmod_suffix}
%exclude %{_modulesdir}/%{kver_full}/kernel/net/wireless/8723du.ko%{kmod_suffix}
%exclude %{_modulesdir}/%{kver_full}/kernel/net/wireless/8852au.ko%{kmod_suffix}
%exclude %{_modulesdir}/%{kver_full}/kernel/net/wireless/8192du.ko%{kmod_suffix}
%exclude %{_modulesdir}/%{kver_full}/kernel/net/wireless/realtek/rtw89p
2023-03-13 21:59:13 +03:00
%exclude %{_modulesdir}/%{kver_full}/kernel/drivers/net/ethernet/realtek/r8168.ko%{kmod_suffix}
2021-10-07 00:45:03 +03:00
%ifarch %{ix86} %{x86_64}
%exclude %{_modulesdir}/%{kver_full}/kernel/net/wireless/wl.ko%{kmod_suffix}
%endif
%if %{with binary_shredder}
%exclude %{_modulesdir}/%{kver_full}/kernel/extra/shredder-kernel.ko%{kmod_suffix}
%endif
2021-10-16 20:11:50 +03:00
%exclude %{_modulesdir}/%{kver_full}/kernel/drivers/media/v4l2loopback.ko%{kmod_suffix}
%if %{with binary_virtualbox_host}
# vbox host modules may be built here (vboxnetflt vboxnetadp vboxdrv vboxpci)
# vbox guest modules are in the mainline kernel now (vboxvideo vboxguest vboxsf)
%exclude %{_modulesdir}/%{kver_full}/kernel/misc/vbox*.ko%{kmod_suffix}
%endif
%exclude %{_modulesdir}/%{kver_full}/kernel/net/xt_TRIPSO.ko%{kmod_suffix}
%exclude %{_modulesdir}/%{kver_full}/kernel/net/xt_so.ko%{kmod_suffix}
%if %{with nickel}
%exclude %{_modulesdir}/%{kver_full}/kernel/misc/nlkm.ko%{kmod_suffix}
%exclude %{_modulesdir}/%{kver_full}/kernel/misc/memfreetest.ko%{kmod_suffix}
%exclude %{_modulesdir}/%{kver_full}/kernel/misc/pcietest.ko%{kmod_suffix}
%endif
%endif
# End of with binary_extra_modules
############################################################################
%if %{build_devel}
%package devel
Summary: Development files for %{name}
Group: Development/Kernel
Requires: glibc-devel
Requires: ncurses-devel
Requires: gcc
Requires: make
Requires: perl
2022-06-09 17:28:02 +03:00
Requires: %{name} = %{EVRD}
Provides: kernel-devel = %{kverrel}
Provides: kernel-%{flavour}-devel = %{kverrel}
Provides: installonlypkg(kernel) = %{EVRD}.devel
# Have dkms updated/installed before the kernel, scriptlet here checks if dkms exists
OrderWithRequires(post): dkms
# Try to remove the main kernel package after removing this devel package
# because there may be dkms-built kernel modules inside directories owned
# by the main package, try to get rid of such files before RPM starts to
# deal with directories owned in the main package
# (note that the devel package does not explicitly require the main package,
# there is no need to do so, a kernel module may be built using just the devel part).
OrderWithRequires(postun): %{name} = %{EVRD}
%ifarch %{ix86}
Conflicts: arch(x86_64)
2013-11-16 00:27:01 +04:00
%endif
%description devel
This package contains the kernel files (headers and build tools) that should
be enough to build additional drivers for use with %{name}.
%post devel
2020-08-03 21:07:52 +03:00
if command -v dkms_autoinstaller >/dev/null 2>&1; then
dkms_autoinstaller start %{kver_full}
fi
%preun devel
# If any DKMS modules with REMAKE_INITRD=yes in their configs have been
# uninstalled, initrd has been regenerated for the given kernel. However,
# the kernel itself might have been uninstalled before, so that (defunct)
# initrd image files would be left behind. Remove them if the kernel itself
# is no longer installed. Should work if they are uninstalled in parallel
# too.
if ! test -f /boot/vmlinuz-%{kver_full}; then
rm -f /boot/initrd-%{kver_full}.img
rm -f /boot/initrd-%{kver_full}_old.img
fi
if ! command -v dkms >/dev/null 2>&1; then exit 0; fi
for ii in $(/usr/sbin/dkms status -k %{kver_full} | awk '{ print $1 $2; }'); do
mod=$(echo $ii | awk -v FS=',' '{ print $1; }')
ver=$(echo $ii | awk -v FS=',' '{ print $2; }')
/usr/sbin/dkms --rpm_safe_upgrade uninstall -m $mod -v $ver -k %{kver_full} || :
done
%files devel
Fix list of devel files New files appeared, there is not much sense to list all files explicitly here... DEBUG: Checking for unpackaged file(s): /usr/lib/rpm/check-files /builddir/build/BUILDROOT/kernel-6.1-generic-6.1.0-0.rc4.1.aarch64 DEBUG: error: Installed (but unpackaged) file(s) found: DEBUG: /usr/src/linux-6.1.0-generic-0.rc4.1rosa2021.1-arm64/arch/loongarch/Kbuild DEBUG: /usr/src/linux-6.1.0-generic-0.rc4.1rosa2021.1-arm64/arch/loongarch/Kconfig DEBUG: /usr/src/linux-6.1.0-generic-0.rc4.1rosa2021.1-arm64/arch/loongarch/Kconfig.debug DEBUG: /usr/src/linux-6.1.0-generic-0.rc4.1rosa2021.1-arm64/arch/loongarch/Makefile DEBUG: /usr/src/linux-6.1.0-generic-0.rc4.1rosa2021.1-arm64/arch/loongarch/boot/Makefile DEBUG: /usr/src/linux-6.1.0-generic-0.rc4.1rosa2021.1-arm64/arch/loongarch/boot/dts/Makefile DEBUG: /usr/src/linux-6.1.0-generic-0.rc4.1rosa2021.1-arm64/arch/loongarch/include/asm/Kbuild DEBUG: /usr/src/linux-6.1.0-generic-0.rc4.1rosa2021.1-arm64/arch/loongarch/include/uapi/asm/Kbuild DEBUG: /usr/src/linux-6.1.0-generic-0.rc4.1rosa2021.1-arm64/arch/loongarch/kernel/Makefile DEBUG: /usr/src/linux-6.1.0-generic-0.rc4.1rosa2021.1-arm64/arch/loongarch/lib/Makefile DEBUG: /usr/src/linux-6.1.0-generic-0.rc4.1rosa2021.1-arm64/arch/loongarch/mm/Makefile DEBUG: /usr/src/linux-6.1.0-generic-0.rc4.1rosa2021.1-arm64/arch/loongarch/net/Makefile DEBUG: /usr/src/linux-6.1.0-generic-0.rc4.1rosa2021.1-arm64/arch/loongarch/pci/Makefile DEBUG: /usr/src/linux-6.1.0-generic-0.rc4.1rosa2021.1-arm64/arch/loongarch/vdso/Makefile DEBUG: /usr/src/linux-6.1.0-generic-0.rc4.1rosa2021.1-arm64/include/rv/automata.h DEBUG: /usr/src/linux-6.1.0-generic-0.rc4.1rosa2021.1-arm64/include/rv/da_monitor.h DEBUG: /usr/src/linux-6.1.0-generic-0.rc4.1rosa2021.1-arm64/include/rv/instrumentation.h DEBUG: /usr/src/linux-6.1.0-generic-0.rc4.1rosa2021.1-arm64/include/ufs/ufs.h DEBUG: /usr/src/linux-6.1.0-generic-0.rc4.1rosa2021.1-arm64/include/ufs/ufs_quirks.h DEBUG: /usr/src/linux-6.1.0-generic-0.rc4.1rosa2021.1-arm64/include/ufs/ufshcd.h DEBUG: /usr/src/linux-6.1.0-generic-0.rc4.1rosa2021.1-arm64/include/ufs/ufshci.h DEBUG: /usr/src/linux-6.1.0-generic-0.rc4.1rosa2021.1-arm64/include/ufs/unipro.h DEBUG: /usr/src/linux-6.1.0-generic-0.rc4.1rosa2021.1-arm64/io_uring/Makefile DEBUG: /usr/src/linux-6.1.0-generic-0.rc4.1rosa2021.1-arm64/rust/Makefile
2022-11-07 18:19:22 +03:00
%{devel_root}
%{_modulesdir}/%{kver_full}/build
%{_modulesdir}/%{kver_full}/source
%endif
# End of build_devel
############################################################################
%if %{build_debug}
%package debuginfo
Summary: Debuginfo for %{name}
Group: Development/Debug
Provides: kernel-debug = %{kverrel}
AutoReq: 0
AutoProv: 0
%description debuginfo
This package contains the files with debuginfo for %{name}.
%files debuginfo -f %{debuginfo_files}
%{_bootdir}/vmlinux-%{kver_full}
%endif
# End of build_debug
############################################################################
%if %{build_doc}
%package doc
Summary: Various documentation bits found in the kernel source
Group: Documentation
BuildArch: noarch
2013-11-16 00:27:01 +04:00
%description doc
This package contains documentation files from the kernel source.
%files doc
%doc linux-%{tar_ver}/Documentation/*
2013-11-16 00:27:01 +04:00
%endif
############################################################################
2013-11-16 00:27:01 +04:00
%if %{build_perf}
%package -n perf
Summary: perf tool and the supporting documentation
Group: System/Kernel and hardware
%description -n perf
The package contains perf tool and the supporting documentation.
%files -n perf
%{_bindir}/perf
%ifarch x86_64
%{_bindir}/perf-read-vdso32
2013-11-16 00:27:01 +04:00
%endif
%{_bindir}/trace
%{_includedir}/perf/perf_dlfilter.h
%dir %{_libexecdir}/perf-core
%dir %{_libdir}/traceevent
%dir %{_libdir}/traceevent/plugins
%{_libdir}/libperf-jvmti.so
%{_libdir}/traceevent/plugins/*
%{_libexecdir}/perf-core/*
%{_mandir}/man[1-8]/perf*
%{_sysconfdir}/bash_completion.d/perf
%{_datadir}/perf-core/strace/groups/*
%{_datadir}/doc/perf-tip/*.txt
/usr/lib/perf/examples/bpf/*
/usr/lib/perf/include/bpf/*
%endif
############################################################################
2013-11-16 00:27:01 +04:00
%if %{build_cpupower}
%package -n cpupower
Summary: The cpupower tools
2013-11-16 00:27:01 +04:00
Group: System/Kernel and hardware
%description -n cpupower
The cpupower tools.
2013-11-16 00:27:01 +04:00
%post -n cpupower
if [ $1 -ge 0 ]; then
# Do not enable/disable cpupower.service directly, because it should start
# when cpupower.path triggers it.
/bin/systemctl enable cpupower.path >/dev/null 2>&1 || :
/bin/systemctl start cpupower.path >/dev/null 2>&1 || :
2014-04-01 15:25:39 +04:00
fi
2013-11-16 00:27:01 +04:00
%preun -n cpupower
2014-04-01 15:25:39 +04:00
if [ $1 -eq 0 ]; then
/bin/systemctl --no-reload disable cpupower.path > /dev/null 2>&1 || :
/bin/systemctl stop cpupower.path > /dev/null 2>&1 || :
2014-04-01 15:25:39 +04:00
fi
2013-11-16 00:27:01 +04:00
%files -n cpupower -f cpupower.lang
%config(noreplace) %{_sysconfdir}/sysconfig/cpupower
%{_bindir}/cpupower
%{_bindir}/cpupower-start.sh
%{_libdir}/libcpupower.so.0
%{_libdir}/libcpupower.so.0.0.1
%{_unitdir}/cpupower.service
%{_unitdir}/cpupower.path
%{_datadir}/bash-completion/completions/cpupower
%{_mandir}/man[1-8]/cpupower*
############################################################################
2013-11-16 00:27:01 +04:00
%package -n cpupower-devel
Summary: Development files for cpupower
2013-11-16 00:27:01 +04:00
Group: Development/Kernel
Requires: cpupower = %{EVRD}
2013-11-16 00:27:01 +04:00
Conflicts: %{_lib}cpufreq-devel
%description -n cpupower-devel
This package contains the development files for cpupower.
%files -n cpupower-devel
%{_libdir}/libcpupower.so
%{_includedir}/cpufreq.h
2020-03-21 12:28:56 +03:00
%{_includedir}/cpuidle.h
2013-11-16 00:27:01 +04:00
%endif
############################################################################
%if %{build_headers}
%package -n kernel-headers
2013-11-16 00:27:01 +04:00
Summary: Linux kernel header files mostly used by your C library
Group: System/Kernel and hardware
Provides: linux-userspace-headers = %{EVRD}
Provides: kernel-release-headers = %{EVRD}
2013-11-16 00:27:01 +04:00
%description -n kernel-headers
2013-11-16 00:27:01 +04:00
C header files from the Linux kernel. The header files define
structures and constants that are needed for building most
standard programs, notably the C library.
This package is not suitable for building kernel modules, you
should use the 'kernel-devel' package instead.
%files -n kernel-headers
2020-03-21 12:28:56 +03:00
%{_includedir}/*
2013-11-16 00:27:01 +04:00
# Don't conflict with cpupower-devel
%if %{build_cpupower}
2020-03-21 12:28:56 +03:00
%exclude %{_includedir}/cpufreq.h
%exclude %{_includedir}/cpuidle.h
2013-11-16 00:27:01 +04:00
%endif
%if %{build_perf}
%exclude %{_includedir}/perf/perf_dlfilter.h
%endif
%endif
2013-11-16 00:27:01 +04:00
############################################################################
2020-03-13 20:35:12 +03:00
%if %{with uml}
%package uml
2020-03-13 20:35:12 +03:00
Summary: User Mode Linux binary
Group: System/Kernel and hardware
Provides: kernel-uml = %{kverrel}
Provides: kernel-uml-%{flavour} = %{kverrel}
Provides: installonlypkg(kernel) = %{EVRD}.uml
2020-03-13 20:35:12 +03:00
%description uml
User Mode Linux binary.
Stripped, debug is in %{name}-debuginfo.
2020-03-13 20:35:12 +03:00
%files uml
2020-03-13 20:35:12 +03:00
%{_bindir}/linux-uml-%{kver_full}
#-----------------------------------------------------------------------------
2020-03-13 20:35:12 +03:00
%package uml-modules
2020-03-13 20:35:12 +03:00
Summary: User Mode Linux (UML) kernel modules
Group: System/Kernel and hardware
Provides: kernel-uml-modules = %{kverrel}
Provides: kernel-uml-modules-%{flavour} = %{kverrel}
Provides: installonlypkg(kernel-module) = %{EVRD}.uml
2020-03-13 20:35:12 +03:00
%description uml-modules
User Mode Linux (UML) kernel modules:
- not compressed;
- not stripped;
- signed.
2020-03-13 20:35:12 +03:00
%files uml-modules
2020-03-13 20:35:12 +03:00
/lib/modules-uml/%{kver_full}
%endif
# End of uml
#-----------------------------------------------------------------------------
2020-07-29 10:59:41 +03:00
###############################
# Extra modules package definitions
2020-07-29 10:59:41 +03:00
%if %{with binary_extra_modules}
2021-10-03 16:35:09 +03:00
%ksob_mk_module_pkg -n 8821cu -s net/wireless
# add "-r rtl88x2bu-blacklist" in 5.18+!!!
%ksob_mk_module_pkg -n 88x2bu -s net/wireless
# "-r xxx-blacklist" was not added for modules bellow because
# blacklisted modules have not appeared in upstream yet
%ksob_mk_module_pkg -n 8812au -s net/wireless
2022-10-15 15:39:08 +03:00
# for RTL8811AU and RTL8821AU
%ksob_mk_module_pkg -n 8821au -s net/wireless
%ksob_mk_module_pkg -n 8814au -s net/wireless
2022-10-15 18:02:04 +03:00
%ksob_mk_module_pkg -n rtk_btusb -s drivers/bluetooth -r rtk_btusb-firmware
2022-10-18 18:44:54 +03:00
%ksob_mk_module_pkg -n 8188gu -s net/wireless
%ksob_mk_module_pkg -n 8723du -s net/wireless
%ksob_mk_module_pkg -n 8852au -s net/wireless
%ksob_mk_module_pkg -n 8192du -s net/wireless
%ksob_mk_modules_pkg -n rtw89 -s net/wireless/realtek/rtw89p
2023-03-13 21:59:13 +03:00
%ksob_mk_module_pkg -n r8168 -s drivers/net/ethernet/realtek
2022-10-18 18:44:54 +03:00
2021-10-07 00:45:03 +03:00
%ifarch %{ix86} %{x86_64}
%ksob_mk_module_pkg -n wl -s net/wireless -r broadcom-wl-aliases
2022-10-16 00:19:07 +03:00
%kroko_kmod_pkg -r %{kroko_release} -j %{nvidia_340_j} -n %{nvidia_340_n} -f %{flavour} -k %{kernelversion}.%{patchlevel} -m %{sublevel} -p %{kver_full} -s %{NAME} -c %{kmod_suffix}
2022-09-26 15:32:27 +03:00
%kroko_kmod_pkg -r %{kroko_release} -j %{nvidia_390_j} -n %{nvidia_390_n} -f %{flavour} -k %{kernelversion}.%{patchlevel} -m %{sublevel} -p %{kver_full} -s %{NAME} -c %{kmod_suffix}
2021-10-07 00:45:03 +03:00
%endif
%ifarch %{x86_64}
2022-09-26 15:32:27 +03:00
%kroko_kmod_pkg -r %{kroko_release} -j %{nvidia_470_j} -n %{nvidia_470_n} -f %{flavour} -k %{kernelversion}.%{patchlevel} -m %{sublevel} -p %{kver_full} -s %{NAME} -c %{kmod_suffix}
%kroko_kmod_pkg -r %{kroko_release} -j %{nvidia_510_j} -n %{nvidia_510_n} -f %{flavour} -k %{kernelversion}.%{patchlevel} -m %{sublevel} -p %{kver_full} -s %{NAME} -c %{kmod_suffix}
%kroko_kmod_pkg -r %{kroko_release} -j %{nvidia_515_j} -n %{nvidia_515_n} -f %{flavour} -k %{kernelversion}.%{patchlevel} -m %{sublevel} -p %{kver_full} -s %{NAME} -c %{kmod_suffix}
2022-10-14 18:16:15 +03:00
%kroko_kmod_pkg -r %{kroko_release} -j %{nvidia_520_j} -n %{nvidia_520_n} -f %{flavour} -k %{kernelversion}.%{patchlevel} -m %{sublevel} -p %{kver_full} -s %{NAME} -c %{kmod_suffix}
2023-03-13 23:05:12 +03:00
%kroko_kmod_pkg -r %{kroko_release} -j %{nvidia_525_j} -n %{nvidia_525_n} -f %{flavour} -k %{kernelversion}.%{patchlevel} -m %{sublevel} -p %{kver_full} -s %{NAME} -c %{kmod_suffix}
%endif
2020-07-29 10:59:41 +03:00
%ksob_mk_module_pkg -n xt_TRIPSO -s net -r tripso
%ksob_mk_module_pkg -n xt_so -s net -r ipt-so
2021-10-16 20:11:50 +03:00
%ksob_mk_module_pkg -n v4l2loopback -s drivers/media -r v4l2loopback
2020-07-29 10:59:41 +03:00
Update from 5.4 to 5.10.1 - rediffed most of patches, renamed files to easify further rediffs by git format-patch - thanks to abf.io/kernels_stable for some patches for kernel 5.9 - using unofficial patch for AUFS for kernel 5.10, there may be issues with stability, try to avoid using AUFS (I would have dropped it, but MagOS wants it very much) - pulled updates of AltHa from http://git.altlinux.org/gears/k/kernel-image-un-def.git?p=kernel-image-un-def.git;a=history;f=security/altha;hb=HEAD - dropped patch adding sysctl to disable disk-based swap because it has not found any usage - bpf is now in the list of LSM modules (ability to write LSM modules as BPF programs), enable it, it is potentially useful and does not seem to be harmful - keeping kernel libc headers in older kernels for now - dropped building external virtualbox guest modules because they are now included into the mainline kernel - offed building VirtualBox host modules, I do not know how to keep these binary modules in sync with userspace part of VirtualBox, users can continue using dkms - offed building kernel-shredder because it is not buildable on kernel 5.10 - updated rtl8821ce and added a dependency from its "blacklist" subpackage here (see https://github.com/tomaspinho/rtl8821ce/commit/14b536f0) It is not clear if kernel 5.10 will receive an LTS support longer than 5.4 or not. Support until Dec, 2022 is declared right now at https://www.kernel.org/category/releases.html for 5.10 and until Dec, 2025 - for 5.4. TODO: update kernel configs TODO: solve problems with version of virtualbox host modules not matching version of the virtualbox package after virtualbox is updated but kernel is not rebuilt
2020-12-20 18:49:24 +03:00
%if %{with binary_shredder}
%ksob_mk_module_pkg -n shredder-kernel -s extra -r rosa-shredder-user
%endif
#-----------------------------------------------------------------------------
###############
# Virtualbox host
Update from 5.4 to 5.10.1 - rediffed most of patches, renamed files to easify further rediffs by git format-patch - thanks to abf.io/kernels_stable for some patches for kernel 5.9 - using unofficial patch for AUFS for kernel 5.10, there may be issues with stability, try to avoid using AUFS (I would have dropped it, but MagOS wants it very much) - pulled updates of AltHa from http://git.altlinux.org/gears/k/kernel-image-un-def.git?p=kernel-image-un-def.git;a=history;f=security/altha;hb=HEAD - dropped patch adding sysctl to disable disk-based swap because it has not found any usage - bpf is now in the list of LSM modules (ability to write LSM modules as BPF programs), enable it, it is potentially useful and does not seem to be harmful - keeping kernel libc headers in older kernels for now - dropped building external virtualbox guest modules because they are now included into the mainline kernel - offed building VirtualBox host modules, I do not know how to keep these binary modules in sync with userspace part of VirtualBox, users can continue using dkms - offed building kernel-shredder because it is not buildable on kernel 5.10 - updated rtl8821ce and added a dependency from its "blacklist" subpackage here (see https://github.com/tomaspinho/rtl8821ce/commit/14b536f0) It is not clear if kernel 5.10 will receive an LTS support longer than 5.4 or not. Support until Dec, 2022 is declared right now at https://www.kernel.org/category/releases.html for 5.10 and until Dec, 2025 - for 5.4. TODO: update kernel configs TODO: solve problems with version of virtualbox host modules not matching version of the virtualbox package after virtualbox is updated but kernel is not rebuilt
2020-12-20 18:49:24 +03:00
%if %{with binary_virtualbox_host}
2020-07-29 10:59:41 +03:00
%ksob_mk_module_pkg -n vboxnetflt -s misc
%ksob_mk_module_pkg -n vboxnetadp -s misc
%ksob_mk_module_pkg -n vboxdrv -s misc
%ksob_mk_module_pkg -n vboxpci -s misc
# A package which will pull all those modules
%package -n kernel-modules-virtualbox-host-%{ksob_kernel}
Summary: Meta package to pull VirtualBox host kernel modules for kernel-%{flavour}-%{kernelversion}.%{patchlevel}
Group: System/Kernel and hardware
2023-03-13 21:59:13 +03:00
Requires: %ksob_module_pkg_name vboxnetflt
Requires: %ksob_module_pkg_name vboxnetadp
Requires: %ksob_module_pkg_name vboxdrv
Requires: %ksob_module_pkg_name vboxpci
2020-07-29 10:59:41 +03:00
%description -n kernel-modules-virtualbox-host-%{ksob_kernel}
Meta package to pull VirtualBox host kernel modules for %{name}.
2020-07-29 10:59:41 +03:00
%files -n kernel-modules-virtualbox-host-%{ksob_kernel}
2020-07-29 10:59:41 +03:00
# empty
%endif
#End of ifarch x86
#-----------------------------------------------------------------------------
2020-07-29 10:59:41 +03:00
%if %{with nickel}
%ksob_mk_module_pkg -n nlkm -s misc
%ksob_mk_module_pkg -n memfreetest -s misc
%ksob_mk_module_pkg -n pcietest -s misc
%endif
%endif
# End of binary_extra_modules
2020-07-29 10:59:41 +03:00
#################################################################
%if %{with flow_abi}
%package -n kernel-%{kernelversion}.%{patchlevel}-rosa-flow-abi
Summary: Directory to install third-party binary kernel modules for kernels %{kernelversion}.%{patchlevel}.x
Group: System/Kernel and hardware
%description -n kernel-%{kernelversion}.%{patchlevel}-rosa-flow-abi
This package contains a directory to install third-party binary kernel modules for kernels %{kernelversion}.%{patchlevel}.x.
Some vendors provide binary-only kernel modules. They can put them into /lib/modules/%{kernelversion}.%{patchlevel}-rosa-flow-abi.
kmod tools will find them for kernels 5.4.x of "generic" and "nickel" flavours
but there is no guarantee that these modules will load and work correctly on
newer or older kernels then the ones they were build against.
We call this "flow ABI" because most ABIs are not changed between %{kernelversion}.%{patchlevel}.x releases,
but there are no specific guarantees. ABI may evolve and change.
We highly recommend to use DKMS and build third-party kernel modules from source for every kernel!
This package does nothing, just owns a directory for third-party binary kernel modules.
%files -n kernel-%{kernelversion}.%{patchlevel}-rosa-flow-abi
/lib/modules/%{kernelversion}.%{patchlevel}-rosa-flow-abi
%endif
# End of flow_abi
################################################
2020-03-13 20:35:12 +03:00
2013-11-16 00:27:01 +04:00
%prep
# Avoid accidental merge
%if 0%{?rpm5}
%{error:Package structure is for dnf, not for urpmi!}
%endif
%setup -q -n %{top_dir_name} -c
2020-03-13 20:35:12 +03:00
%if %{with uml}
cp -r %{src_dir} %{src_dir}.uml
%endif
cd %{src_dir}
2013-11-16 00:27:01 +04:00
2020-11-26 18:48:55 +00:00
%autopatch -p1
2013-11-16 00:27:01 +04:00
#
# Setup Begin
#
##################################
# Kernel configuration
echo "Creating the kernel configuration file."
Revisited the set of kernel flavours and the generation of config files Until now, the build system for the kernel supported a number of flavours: nrj and non-nrj ones, desktop-, laptop-, server- and netbook-oriented, etc. It turned out over the years, however, that our users mostly need the following: * a kernel to use on the desktops (home and office use) with reasonable default settings for performance and responsiveness; * a kernel for laptops, with a bit more emphasis on power consumption. Other variants were rarely used. We also did not have enough time to properly support all these. Besides, the kernels for ARM and other architectures need a somewhat different build process than for x86. So, they are better off to be in separate ABF projects, even if they are needed. No signs of ROSA on ARM yet, btw. So, I kept only nrj-desktop and nrj-laptop flavours and only x86. Non-PAE systems also seem to be rare now, so I enabled PAE by default for the 32-bit kernels. Non-PAE kernels are no longer built. If they are needed, we may use a separate git branch or an ABF project for that. To simplify debugging, maintenance and experimentation with the kernel builds further, I revisited the process of preparing the kernel configuration files. The goal is to get rid of a separate git repo with the default configs (kernel-patches-and-configs) and keep everything in this project. The default config files are now kept here. For x86_64: * kernel-x86_64.config contains the options for both nrj-desktop and nrn-laptop flavours; * kernel-{nrj_desktop|nrj_laptop}-x86_64.config files contain the flavour-specific options. This way, it is easier to track which config options changed when, easier to experiment with the custom configs and so on. The kernel will be built with debug info if rpmbuild is called with "--with debug".
2016-07-21 13:56:25 +03:00
# Configs
cp %{SOURCE111} .
cp %{SOURCE112} .
cp %{SOURCE113} .
cp kernel-%{arch_suffix}.config .config
touch %{build_dir}/.config.append
# Get rid of unwanted files
2020-11-26 21:17:21 +00:00
find . -name '*~' -o -name '*.orig' -o -name '*.append' -delete
# Wipe all .gitignore/.get_maintainer.ignore files
2020-11-26 21:17:21 +00:00
find . -name "*.g*ignore" -delete
# Disable debug info if requested (enabled by default)
%if ! %build_debug
sed -i -e '/CONFIG_DEBUG_INFO/d' -e '/CONFIG_GDB_SCRIPTS/d' .config
echo '# CONFIG_DEBUG_INFO is not set' >> %{build_dir}/.config.append
echo '# CONFIG_GDB_SCRIPTS is not set' >> %{build_dir}/.config.append
2013-11-16 00:27:01 +04:00
%endif
sed -i '/CONFIG_MODULE_SIG_FORCE/d' .config
%if %{with oblig_signed_modules}
2019-11-11 17:47:53 +03:00
# Disallow loading not signed modules
# But 0001-ROSA-ima-allow-to-off-modules-signature-check-dynami.patch allows to override this in cmdline
2020-03-13 20:35:12 +03:00
echo CONFIG_MODULE_SIG_FORCE=y >> %{build_dir}/.config.append
%else
2020-03-13 20:35:12 +03:00
echo CONFIG_MODULE_SIG_FORCE=n >> %{build_dir}/.config.append
%endif
sed -i '/CONFIG_MODULE_SIG_KEY/d' .config
2019-12-01 02:03:15 +03:00
# Set path to the key that will be generated later by openssl/libressl
2020-03-13 20:35:12 +03:00
echo CONFIG_MODULE_SIG_KEY=\"%{certs_signing_key_priv_rnd}\" >> %{build_dir}/.config.append
# Set path to one PEM file with all keys that the kernel must trust
sed -i '/CONFIG_SYSTEM_TRUSTED_KEYS/d' .config
2020-03-13 20:35:12 +03:00
echo CONFIG_SYSTEM_TRUSTED_KEYS=\"%{certs_public_keys}\" >> %{build_dir}/.config.append
# Memory wiping
# Introduced in kernel 5.3 by commit 6471384af2a6530696fc0203bafe4de41a23c9ef
# Estimated performance impact is described in the commit
# "Fill newly allocated pages and heap objects with zeroes."
# To enable, add to cmdline: init_on_alloc=1
sed -i '/CONFIG_INIT_ON_ALLOC_DEFAULT_ON/d' .config
echo CONFIG_INIT_ON_ALLOC_DEFAULT_ON=n >> %{build_dir}/.config.append
# "Fill freed pages and heap objects with zeroes"
# To disable, add to cmdline: init_on_free=0
sed -i '/CONFIG_INIT_ON_FREE_DEFAULT_ON/d' .config
%if %{with nickel}
2020-03-13 20:35:12 +03:00
echo CONFIG_INIT_ON_FREE_DEFAULT_ON=y >> %{build_dir}/.config.append
%else
echo CONFIG_INIT_ON_FREE_DEFAULT_ON=n >> %{build_dir}/.config.append
%endif
# Here enabling only either only init_on_free or only init_on_alloc
# makes sense; init_on_alloc is not about protecting information.
2020-03-13 20:35:12 +03:00
# To load kernel keyring in UML
for i in STREEBOG SHA1 SHA256 SHA512 ECRDSA RSA ; do
if ! grep -q "^CONFIG_CRYPTO_${i}=y$" .config; then
sed -i "/CONFIG_CRYPTO_${i}/d" .config
echo "CONFIG_CRYPTO_${i}=y" >> %{build_dir}/.config.append
fi
done
2020-03-13 20:35:12 +03:00
cat %{build_dir}/.config.append >> .config
##################
# End of kernel config
# Store the config file in the appropriate directory.
2020-11-26 18:48:55 +00:00
CONFIG_DIR=arch/%{arch_type}/configs
Revisited the set of kernel flavours and the generation of config files Until now, the build system for the kernel supported a number of flavours: nrj and non-nrj ones, desktop-, laptop-, server- and netbook-oriented, etc. It turned out over the years, however, that our users mostly need the following: * a kernel to use on the desktops (home and office use) with reasonable default settings for performance and responsiveness; * a kernel for laptops, with a bit more emphasis on power consumption. Other variants were rarely used. We also did not have enough time to properly support all these. Besides, the kernels for ARM and other architectures need a somewhat different build process than for x86. So, they are better off to be in separate ABF projects, even if they are needed. No signs of ROSA on ARM yet, btw. So, I kept only nrj-desktop and nrj-laptop flavours and only x86. Non-PAE systems also seem to be rare now, so I enabled PAE by default for the 32-bit kernels. Non-PAE kernels are no longer built. If they are needed, we may use a separate git branch or an ABF project for that. To simplify debugging, maintenance and experimentation with the kernel builds further, I revisited the process of preparing the kernel configuration files. The goal is to get rid of a separate git repo with the default configs (kernel-patches-and-configs) and keep everything in this project. The default config files are now kept here. For x86_64: * kernel-x86_64.config contains the options for both nrj-desktop and nrn-laptop flavours; * kernel-{nrj_desktop|nrj_laptop}-x86_64.config files contain the flavour-specific options. This way, it is easier to track which config options changed when, easier to experiment with the custom configs and so on. The kernel will be built with debug info if rpmbuild is called with "--with debug".
2016-07-21 13:56:25 +03:00
mkdir -p "${CONFIG_DIR}"
2020-11-26 18:48:55 +00:00
cfg_file=arch/%{arch_type}/configs/%{arch_suffix}_defconfig-%{flavour}
2021-05-22 12:08:22 +03:00
make ARCH=%{arch_type} oldconfig
# When it is needed to edit kernel configs, run:
2021-06-01 07:01:02 +03:00
# abf fetch
# rpmbuild --define "_sourcedir $PWD" --with=fail -bb kernel.spec
2021-05-22 12:08:22 +03:00
# and then work with the config in the buildroot with applied patches etc.
%{?_with_fail:exit 1}
mv .config ${cfg_file}
echo "Created ${cfg_file}."
# Make sure the kernel has the sublevel we know it has...
LC_ALL=C sed -ri "s/^SUBLEVEL.*/SUBLEVEL = %{sublevel}/" Makefile
2013-11-16 00:27:01 +04:00
# Get rid of unwanted files
2013-11-16 00:27:01 +04:00
find . -name '*~' -o -name '*.orig' -o -name '*.append' | %kxargs rm -f
find . -name '.get_maintainer.ignore' | %kxargs rm -f
2013-11-16 00:27:01 +04:00
# Versionize python shebang (#!/usr/bin/env python -> #!/usr/bin/python3) in scripts
grep -Irl '^#!/usr/bin/env python' | xargs sed -i '1 s,^#!/usr/bin/env python$,#!%{__python3},'
# Drop env from bash scripts
2022-03-17 10:23:10 +03:00
sed -i '1 s,^#!.*env .*,#!%{_bindir}/bash,' scripts/config
# Drop env from perl scripts
grep -IrlE '^#!.*env perl' | xargs sed -i -e '1 s,^#!/usr/bin/env perl$,#!{_bindir}/perl,'
############################################################################
2013-11-16 00:27:01 +04:00
%build
2019-11-11 22:27:50 +03:00
# Ensure that build time generated private keys don't get published
# as e.g. "RPM build root" on ABF!
# Note that ABF sends SIGKILL to rpm-build.sh when the build is terminated;
# in this case trap will not work, but RPM build root also will not be
# saved because rpm-build.sh saves it, but it is SIGKILLed.
# For best security we could store private keys in RAM (not reachable from
# filesystem, so not in /tmp!) and override sth like fopen() by LD_PRELOAD
# to give the content of keys from RAM when a virtual address of a key file
# is accessed, but currently I don't know how to implement this (TODO: ).
_cleanup(){
# Show resulting kernel public keys for debugging
cat "%{src_dir}/%{certs_dir_rnd}/x509_certificate_list" | base64 -d || :
2020-03-14 13:49:15 +03:00
rm -fvr "%{src_dir}/%{certs_dir_rnd}"
2020-03-13 20:35:12 +03:00
%if %{with uml}
cat "%{src_dir}.uml/%{certs_dir_rnd}/x509_certificate_list" | base64 -d || :
2020-03-13 20:35:12 +03:00
rm -fvr "%{src_dir}.uml/%{certs_dir_rnd}"
%endif
2019-11-11 22:27:50 +03:00
}
# Make a trap to delete keys even if %%build fails in the middle
trap "_cleanup" EXIT
rm -rf %{temp_root}
install -d %{temp_root}
2013-11-16 00:27:01 +04:00
cd %{src_dir}
2013-11-16 00:27:01 +04:00
2019-11-11 17:47:53 +03:00
### Keys for signing kernel modules
# Keys can be generated both manually and automatically,
# let's generate them by ourselves to take full control of the process
# https://www.ibm.com/support/knowledgecenter/en/SSB23S_1.1.0.13/gtps7/cfgcert.html
# See also certs/Makefile in kernel source
2019-11-11 17:47:53 +03:00
mkdir -p "%{certs_dir_rnd}"
# On ABF, %%packager == $username <$email>
# Try to extract email from %%packager if it is set
_get_email(){
# Check that macro %%packager was set and is not empty
if echo '%{packager}' | grep -q 'packager}$' || [ -z "%{packager}" ]
# If was not set or is empty, use default email
then echo 'rpmbuild@rosa.unknown' && return
# Otherwise try to extract email from 'name <email>' or sth else
else temp="$(echo '%{packager}' | tr '[:upper:]' '[:lower:]' | tr ' ' '\n' | tr -d '<>' | grep -E '@.*\..*' | head -n 1)"
fi
# Validate that what we have now is a valid email
# https://stackoverflow.com/a/2138832, https://stackoverflow.com/a/41192733
# Note that we set %%_buildshell to /bin/bash to guarantee the work of this bashism
regex_email="^[a-z0-9!#\$%&'*+/=?^_\`{|}~-]+(\.[a-z0-9!#$%&'*+/=?^_\`{|}~-]+)*@([a-z0-9]([a-z0-9-]*[a-z0-9])?\.)+[a-z0-9]([a-z0-9-]*[a-z0-9])?\$"
if [[ "$temp" =~ ${regex_email} ]]
# If it is, use it
then echo "$temp" && return
# Otherwise use default email
else echo 'rpmbuild@rosa.unknown' && return
fi
# If script above has not return'ed for any reason,
# e.g. because of non-bash shell being not able to
# process regexp, use default email
echo 'rpmbuild@rosa.unknown'
}
email="$(_get_email)"
2019-11-11 17:47:53 +03:00
cat <<EOF > "%{certs_key_config_rnd}"
[ req ]
prompt = no
string_mask = utf8only
#default_keyfile = %%{certs_signing_key_priv_rnd}
2019-11-11 17:47:53 +03:00
distinguished_name = req_distinguished_name
x509_extensions = myexts
2019-11-11 17:47:53 +03:00
[ req_distinguished_name ]
organizationName = %{vendor} rpmbuild
commonName = Build time autogenerated @ALGO@ kernel key
emailAddress = ${email}
[ myexts ]
basicConstraints=critical,CA:FALSE
keyUsage=digitalSignature
subjectKeyIdentifier=hash
authorityKeyIdentifier=keyid
2019-11-11 17:47:53 +03:00
EOF
cat "%{certs_key_config_rnd}"
sed -e 's,@ALGO@,RSA,g' "%{certs_key_config_rnd}" > "%{certs_key_config_rnd}.RSA"
sed -e 's,@ALGO@,GOST R 34.10-2012,g' "%{certs_key_config_rnd}" > "%{certs_key_config_rnd}.GOST"
# Avoid using the template
rm -f "%{certs_key_config_rnd}"
_libressl_gen_key(){
if [ "$GOST_KEY" = 1 ]
then
lssl_req_gost_args="\
-newkey gost2001 \
-pkeyopt dgst:streebog512 -pkeyopt paramset:A \
-streebog512"
OUT="%{certs_signing_key_priv_rnd}.GOST"
CONFIG="%{certs_key_config_rnd}.GOST"
else
lssl_req_gost_args=""
OUT="%{certs_signing_key_priv_rnd}.RSA"
CONFIG="%{certs_key_config_rnd}.RSA"
fi
libressl req -new -nodes -utf8 -batch \
$lssl_req_gost_args \
-days 109500 \
-x509 -config "$CONFIG" \
-out "$OUT" \
-keyout "$OUT"
# Verify
if [ "$GOST_KEY" = 1 ]; then
libressl x509 -in "%{certs_signing_key_priv_rnd}.GOST" -text -noout \
| grep -E 'Signature Algorithm:.*GOST R 34.10-2012'
libressl x509 -in "%{certs_signing_key_priv_rnd}.GOST" -text -noout \
| grep -E 'Digest Algorithm:.*GOST R 34-11-2012'
libressl x509 -in "%{certs_signing_key_priv_rnd}.GOST" -text -noout \
| grep -E 'Public Key Algorithm:.*GOST R 34.10-2012'
fi
}
2019-11-11 17:47:53 +03:00
GOST_KEY=0 _libressl_gen_key
GOST_KEY=1 _libressl_gen_key
# Fake CONFIG_MODULE_SIG_KEY to make build scripts happy
cp -v "%{certs_signing_key_priv_rnd}.RSA" "%{certs_signing_key_priv_rnd}"
# Strip public parts from the generated PEMs
sed -n \
'/^-----BEGIN CERTIFICATE-----$/,/^-----END CERTIFICATE-----$/p' \
"%{certs_signing_key_priv_rnd}.GOST" \
"%{certs_signing_key_priv_rnd}.RSA" \
> "%{certs_public_keys}"
2019-12-07 21:57:55 +03:00
# Link sign-file and extract-cert with LibreSSL instead of OpenSSL
2019-12-07 21:57:55 +03:00
if [ $? != 0 ] ; then exit $? ; fi
sed -i %{src_dir}/scripts/Makefile \
2020-03-13 20:35:12 +03:00
%if %{with uml}
%{src_dir}.uml/scripts/Makefile \
2020-03-13 20:35:12 +03:00
%endif
-e "s, libcrypto , libressl-libcrypto ,g"
%if %{with additional_keys}
# Add additional public RSA keys to the list of trusted keys for kernel modules
# Build kernel --without additional_keys if you do not want to trust them
cat %{expand:%(for i in `seq 1 12`; do echo "%%SOURCE$((200+${i}))" | tr "\n" " "; done)} \
>> "%{certs_public_keys}"
%endif
# End of additional_keys
cat %{certs_public_keys}
2019-11-11 17:47:53 +03:00
# .config
%smake -s mrproper
2020-11-26 18:48:55 +00:00
cp arch/%{arch_type}/configs/%{arch_suffix}_defconfig-%{flavour} .config
2013-11-16 00:27:01 +04:00
# Make sure EXTRAVERSION says what we want it to say
LC_ALL=C sed -ri "s/^EXTRAVERSION.*/EXTRAVERSION = -%{flavour}-%{buildrpmrel}/" Makefile
2013-11-16 00:27:01 +04:00
# Build the kernel
echo "Building kernel %{kver_full}"
2013-11-16 00:27:01 +04:00
2020-11-26 21:09:27 +00:00
TARGETS="all"
# need to install dtbs to proper boot arm64 devices
%ifarch %{armx}
2020-11-26 21:09:27 +00:00
TARGETS="$TARGETS dtbs"
%endif
2021-02-23 17:35:52 +03:00
%kmake V=1 -s $TARGETS
2015-04-23 12:11:47 +03:00
2020-07-29 10:59:41 +03:00
# Install modules
mkdir -p %{temp_modules}/%{kver_full}
%smake INSTALL_MOD_PATH=%{temp_root} KERNELRELEASE=%{kver_full} modules_install
%if %{with binary_extra_modules}
# Build and install procedure is specific to each Makefile from kernmel-source-* packages
# See also: https://www.kernel.org/doc/html/latest/kbuild/modules.html
# Copy directory because write permissions are required
# `make modules_install` must be done before this, otherwise these copied files will be deleted
2022-10-18 18:44:54 +03:00
# $1: name of kernel module
# $2: directory (e.g.: kernel/net/wireless)
_build_rtl(){
cp -r "$(rpm -q --qf "/usr/src/rtl${1}-%%{VERSION}-%%{RELEASE}" kernel-source-rtl${1})" kernel-source-rtl${1}
pushd kernel-source-rtl${1}
%kmake KSRC=%{src_dir} M="$PWD"
mkdir -p %{temp_modules}/%{kver_full}/${2}
cp ${1}.ko %{temp_modules}/%{kver_full}/${2}
popd
rm -fr kernel-source-rtl${1}
}
2022-10-15 15:39:08 +03:00
2022-10-18 18:44:54 +03:00
_build_rtl 8821cu kernel/net/wireless
_build_rtl 88x2bu kernel/net/wireless
_build_rtl 8812au kernel/net/wireless
_build_rtl 8821au kernel/net/wireless
_build_rtl 8821au kernel/net/wireless
_build_rtl 8814au kernel/net/wireless
_build_rtl 8188gu kernel/net/wireless
_build_rtl 8723du kernel/net/wireless
_build_rtl 8852au kernel/net/wireless
_build_rtl 8192du kernel/net/wireless
2022-10-15 15:52:51 +03:00
2023-03-13 21:59:13 +03:00
cp -r "$(rpm -q --qf "/usr/src/r8168-%%{VERSION}-%%{RELEASE}" kernel-source-r8168)" kernel-source-r8168
pushd kernel-source-r8168
%kmake -C %{src_dir} KERNELRELEASE=%{kver_full} KERNELDIR=%{src_dir} M="$PWD" modules
mkdir -p %{temp_modules}/%{kver_full}/kernel/drivers/net/ethernet/realtek
cp r8168.ko %{temp_modules}/%{kver_full}/kernel/drivers/net/ethernet/realtek
popd
rm -fr kernel-source-r8168
2022-10-15 18:02:04 +03:00
cp -r "$(rpm -q --qf '/usr/src/rtk_btusb-%%{VERSION}-%%{RELEASE}' kernel-source-rtk_btusb)" kernel-source-rtk_btusb
pushd kernel-source-rtk_btusb
%kmake KDIR=%{src_dir}
mkdir -p %{temp_modules}/%{kver_full}/kernel/drivers/bluetooth/
cp rtk_btusb.ko %{temp_modules}/%{kver_full}/kernel/drivers/bluetooth/rtk_btusb.ko
popd
rm -fr kernel-source-rtk_btusb
cp -r "$(rpm -q --qf '/usr/src/rtw89-%%{VERSION}-%%{RELEASE}' kernel-source-rtw89)" kernel-source-rtw89
pushd kernel-source-rtw89
%kmake KSRC=%{src_dir}
mkdir -p %{temp_modules}/%{kver_full}/kernel/net/wireless/realtek/rtw89p
cp *.ko %{temp_modules}/%{kver_full}/kernel/net/wireless/realtek/rtw89p
popd
rm -fr kernel-source-rtw89
_build_nvidia(){
cp -r "$(rpm -q --qf "/usr/src/nvidia${1}-%%{VERSION}-%%{RELEASE}" kernel-source-nvidia${1})" kernel-source-nvidia${1}
pushd kernel-source-nvidia${1}
%make SYSSRC=%{src_dir}
2022-09-26 15:32:27 +03:00
mkdir -p %{temp_modules}/%{kver_full}/kernel/drivers/video/nvidia${1}.%{kroko_release}
for i in *.ko
do
# put them here to extract debug and compress, will be moved later
install -m0644 "$i" %{temp_modules}/%{kver_full}/kernel/drivers/video/nvidia${1}.%{kroko_release}/"$i"
done
popd
rm -fr kernel-source-nvidia${1}
2022-09-26 15:32:27 +03:00
# for rosa-kernel-tools
mkdir -p %{temp_root}/var/spool/initramfs-regen
touch %{temp_root}/var/spool/initramfs-regen/nvidia${1}.%{kroko_release}
}
2021-10-07 00:45:03 +03:00
%ifarch %{ix86} %{x86_64}
cp -r "$(rpm -q --qf '/usr/src/broadcom-wl-%%{VERSION}-%%{RELEASE}' kernel-source-broadcom-wl)" kernel-source-broadcom-wl
pushd kernel-source-broadcom-wl
%kmake -C %{src_dir} M="$PWD"
mkdir -p %{temp_modules}/%{kver_full}/kernel/net/wireless/
cp wl.ko %{temp_modules}/%{kver_full}/kernel/net/wireless/wl.ko
popd
rm -fr kernel-source-broadcom-wl
2021-10-10 16:12:22 +03:00
2022-10-16 00:19:07 +03:00
_build_nvidia 340
_build_nvidia 390
%endif
%ifarch %{x86_64}
_build_nvidia 470
_build_nvidia 510
_build_nvidia 515
2022-10-14 18:16:15 +03:00
_build_nvidia 520
2023-03-13 23:05:12 +03:00
_build_nvidia 525
2021-10-07 00:45:03 +03:00
%endif
2020-07-29 10:59:41 +03:00
cp -r "$(rpm -q --qf '/usr/src/tripso-%%{VERSION}-%%{RELEASE}' kernel-source-tripso)" kernel-source-tripso
pushd kernel-source-tripso
%kmake KDIR=%{src_dir}
mkdir -p %{temp_modules}/%{kver_full}/kernel/net
cp xt_TRIPSO.ko %{temp_modules}/%{kver_full}/kernel/net/
popd
rm -fr kernel-source-tripso
cp -r "$(rpm -q --qf '/usr/src/ipt-so-%%{VERSION}-%%{RELEASE}' kernel-source-ipt-so)" kernel-source-ipt-so
pushd kernel-source-ipt-so
%kmake KDIR=%{src_dir}
mkdir -p %{temp_modules}/%{kver_full}/kernel/net
cp xt_so.ko %{temp_modules}/%{kver_full}/kernel/net/
popd
rm -fr kernel-source-ipt-so
Update from 5.4 to 5.10.1 - rediffed most of patches, renamed files to easify further rediffs by git format-patch - thanks to abf.io/kernels_stable for some patches for kernel 5.9 - using unofficial patch for AUFS for kernel 5.10, there may be issues with stability, try to avoid using AUFS (I would have dropped it, but MagOS wants it very much) - pulled updates of AltHa from http://git.altlinux.org/gears/k/kernel-image-un-def.git?p=kernel-image-un-def.git;a=history;f=security/altha;hb=HEAD - dropped patch adding sysctl to disable disk-based swap because it has not found any usage - bpf is now in the list of LSM modules (ability to write LSM modules as BPF programs), enable it, it is potentially useful and does not seem to be harmful - keeping kernel libc headers in older kernels for now - dropped building external virtualbox guest modules because they are now included into the mainline kernel - offed building VirtualBox host modules, I do not know how to keep these binary modules in sync with userspace part of VirtualBox, users can continue using dkms - offed building kernel-shredder because it is not buildable on kernel 5.10 - updated rtl8821ce and added a dependency from its "blacklist" subpackage here (see https://github.com/tomaspinho/rtl8821ce/commit/14b536f0) It is not clear if kernel 5.10 will receive an LTS support longer than 5.4 or not. Support until Dec, 2022 is declared right now at https://www.kernel.org/category/releases.html for 5.10 and until Dec, 2025 - for 5.4. TODO: update kernel configs TODO: solve problems with version of virtualbox host modules not matching version of the virtualbox package after virtualbox is updated but kernel is not rebuilt
2020-12-20 18:49:24 +03:00
%if %{with binary_shredder}
2020-11-26 21:09:27 +00:00
cp -r "$(rpm -q --qf '/usr/src/shredder-kernel-%%{VERSION}-%%{RELEASE}' kernel-source-shredder-kernel)" kernel-source-shredder-kernel
pushd kernel-source-shredder-kernel
%kmake KERNEL_PATH=%{src_dir}
mkdir -p %{temp_modules}/%{kver_full}/kernel/extra/
cp shredder-kernel.ko %{temp_modules}/%{kver_full}/kernel/extra/
popd
rm -fr kernel-source-shredder-kernel
%endif
2020-11-26 21:09:27 +00:00
Update from 5.4 to 5.10.1 - rediffed most of patches, renamed files to easify further rediffs by git format-patch - thanks to abf.io/kernels_stable for some patches for kernel 5.9 - using unofficial patch for AUFS for kernel 5.10, there may be issues with stability, try to avoid using AUFS (I would have dropped it, but MagOS wants it very much) - pulled updates of AltHa from http://git.altlinux.org/gears/k/kernel-image-un-def.git?p=kernel-image-un-def.git;a=history;f=security/altha;hb=HEAD - dropped patch adding sysctl to disable disk-based swap because it has not found any usage - bpf is now in the list of LSM modules (ability to write LSM modules as BPF programs), enable it, it is potentially useful and does not seem to be harmful - keeping kernel libc headers in older kernels for now - dropped building external virtualbox guest modules because they are now included into the mainline kernel - offed building VirtualBox host modules, I do not know how to keep these binary modules in sync with userspace part of VirtualBox, users can continue using dkms - offed building kernel-shredder because it is not buildable on kernel 5.10 - updated rtl8821ce and added a dependency from its "blacklist" subpackage here (see https://github.com/tomaspinho/rtl8821ce/commit/14b536f0) It is not clear if kernel 5.10 will receive an LTS support longer than 5.4 or not. Support until Dec, 2022 is declared right now at https://www.kernel.org/category/releases.html for 5.10 and until Dec, 2025 - for 5.4. TODO: update kernel configs TODO: solve problems with version of virtualbox host modules not matching version of the virtualbox package after virtualbox is updated but kernel is not rebuilt
2020-12-20 18:49:24 +03:00
%if %{with binary_virtualbox_host}
2020-11-26 21:09:27 +00:00
# build commands for virtualbox are based on the ones from the virtualbox package
2020-07-29 10:59:41 +03:00
cp -r "$(rpm -q --qf '/usr/src/virtualbox-%%{VERSION}-%%{RELEASE}' kernel-source-virtualbox)" kernel-source-virtualbox
mkdir -p %{temp_modules}/%{kver_full}/kernel/misc/
pushd kernel-source-virtualbox
make -C vboxdrv KERN_DIR=%{src_dir} KERN_VER=%{kver_full}
cp -fv vboxdrv/Module.symvers vboxnetflt
cp -fv vboxdrv/Module.symvers vboxnetadp
make -C vboxnetflt KERN_DIR=%{src_dir} KERN_VER=%{kver_full}
make -C vboxnetadp KERN_DIR=%{src_dir} KERN_VER=%{kver_full}
cp -fv vboxnetadp/Module.symvers vboxpci/
make -C vboxpci KERN_DIR=%{src_dir} KERN_VER=%{kver_full}
for i in vboxnetflt vboxnetadp vboxdrv vboxpci
do
cp -v "${i}/${i}.ko" %{temp_modules}/%{kver_full}/kernel/misc/
done
popd
2020-11-26 18:58:01 +00:00
%endif
2020-07-29 10:59:41 +03:00
2021-10-16 20:11:50 +03:00
cp -r "$(rpm -q --qf '/usr/src/v4l2loopback-%%{VERSION}-%%{RELEASE}' kernel-source-v4l2loopback)" kernel-source-v4l2loopback
pushd kernel-source-v4l2loopback
cat Kbuild > Makefile
mkdir -p %{temp_modules}/%{kver_full}/kernel/drivers/media
make -C %{src_dir} M="$PWD" modules
cp v4l2loopback.ko %{temp_modules}/%{kver_full}/kernel/drivers/media
pushd
rm -fr kernel-source-v4l2loopback
%if %{with nickel}
# rosa-test-suite uses /sr/src/xxx-version, not /usr/src/xxx-version-release
cp -r "$(rpm -q --qf '/usr/src/rosa-test-suite-%%{VERSION}' kernel-source-rosa-test-suite)" kernel-source-rosa-test-suite
pushd kernel-source-rosa-test-suite
mkdir -p %{temp_modules}/%{kver_full}/kernel/misc/
for i in nlkm memfreetest pcietest
do
cat << EOF > Makefile
obj-m := ${i}.o
all:
make -C %{src_dir} M=\$(PWD) modules
EOF
%kmake
cp -fv ${i}.ko %{temp_modules}/%{kver_full}/kernel/misc/
done
popd
%endif
# End with nickel <- with binary_extra_modules
%endif
# End with binary_extra_modules
2020-07-29 10:59:41 +03:00
2020-03-13 20:35:12 +03:00
%if %{with uml}
cp -rv %{certs_dir_rnd} %{src_dir}.uml/
pushd %{src_dir}.uml
%kmake ARCH=um defconfig
2020-03-13 20:35:12 +03:00
%kmake ARCH=um linux
install -Dm0755 linux %{temp_root}%{_bindir}/linux-uml-%{kver_full}
#rm -fv linux
%kmake V=1 ARCH=um modules
mkdir -p %{temp_root}/lib/modules-uml/%{kver_full}/
%kmake ARCH=um INSTALL_MOD_PATH=%{temp_root}/lib/modules-uml/%{kver_full}/ modules_install
popd
%endif
install -d %{temp_boot}
install -m 644 System.map %{temp_boot}/System.map-%{kver_full}
install -m 644 .config %{temp_boot}/config-%{kver_full}
%if %{with modxz}
xz -c Module.symvers > %{temp_boot}/symvers-%{kver_full}.xz
%else
%{zstd_cmd} Module.symvers
install -m 644 Module.symvers.zst %{temp_boot}/symvers-%{kver_full}.zst
%endif
2013-11-16 00:27:01 +04:00
2021-04-06 19:36:12 +00:00
%ifarch %{armx}
%make_build ARCH=%{arch_type} V=1 INSTALL_DTBS_PATH=%{temp_boot}/dtb-%{kver_full} dtbs_install
2021-04-06 19:36:12 +00:00
%endif
2020-11-26 21:09:27 +00:00
%ifarch aarch64
cp -f arch/arm64/boot/Image* %{temp_boot}/vmlinuz-%{kver_full}
2020-11-26 21:09:27 +00:00
%else
cp -f arch/%{arch_type}/boot/bzImage %{temp_boot}/vmlinuz-%{kver_full}
%endif
2013-11-16 00:27:01 +04:00
# Headers
%if %{build_headers}
%make INSTALL_HDR_PATH=%{temp_root}%{_prefix} KERNELRELEASE=%{kver_full} headers_install
find %{temp_root}%{_prefix} -name .install -or -name ..install.cmd | %kxargs rm -f
2013-11-16 00:27:01 +04:00
%endif
# Remove /lib/firmware, we use a separate linux-firmware package
rm -rf %{temp_root}/lib/firmware
# Prepare the files for kernel*-devel
%if %{build_devel}
mkdir -p %{temp_devel_root}
for i in $(find . -name 'Makefile*'); do cp -R --parents $i %{temp_devel_root}; done
for i in $(find . -name 'Kconfig*' -o -name 'Kbuild*'); do cp -R --parents $i %{temp_devel_root}; done
2013-11-16 00:27:01 +04:00
cp -fR include %{temp_devel_root}
cp -fR scripts %{temp_devel_root}
cp -fR kernel/bounds.c %{temp_devel_root}/kernel
cp -fR kernel/time/timeconst.bc %{temp_devel_root}/kernel/time
cp -fR tools %{temp_devel_root}/
2020-11-26 18:48:55 +00:00
cp -fR arch/%{arch_type}/kernel/asm-offsets.{c,s} %{temp_devel_root}/arch/%{arch_type}/kernel/
2020-11-26 21:09:27 +00:00
%ifarch %{ix86} %{x86_64}
2020-11-26 18:48:55 +00:00
cp -fR arch/%{arch_type}/kernel/asm-offsets_{32,64}.c %{temp_devel_root}/arch/%{arch_type}/kernel/
cp -fR arch/%{arch_type}/purgatory/* %{temp_devel_root}/arch/%{arch_type}/purgatory/
# Needed for arch/x86/purgatory
2020-11-26 21:09:27 +00:00
cp -fR lib/*.h lib/*.c %{temp_devel_root}/lib/
2020-11-26 18:48:55 +00:00
cp -fR arch/%{arch_type}/entry/syscalls/syscall* %{temp_devel_root}/arch/%{arch_type}/entry/syscalls/
cp -fR arch/%{arch_type}/tools %{temp_devel_root}/arch/%{arch_type}/
2020-11-26 21:09:27 +00:00
# needed for kexec
cp -fR arch/%{arch_type}/boot/*.h %{temp_devel_root}/arch/%{arch_type}/boot/
cp -fR arch/%{arch_type}/boot/*.c %{temp_devel_root}/arch/%{arch_type}/boot/
%endif
cp -fR arch/%{arch_type}/include %{temp_devel_root}/arch/%{arch_type}/
cp -fR .config Module.symvers %{temp_devel_root}
# Needed for truecrypt build (Danny)
cp -fR drivers/md/dm.h %{temp_devel_root}/drivers/md/
2013-11-16 00:27:01 +04:00
# Needed for lirc_gpio (#39004)
cp -fR drivers/media/pci/bt8xx/bttv{,p}.h %{temp_devel_root}/drivers/media/pci/bt8xx/
cp -fR drivers/media/pci/bt8xx/bt848.h %{temp_devel_root}/drivers/media/pci/bt8xx/
cp -fR drivers/media/common/btcx-risc.h %{temp_devel_root}/drivers/media/common/
# Add acpica header files, needed for fglrx build
cp -fR drivers/acpi/acpica/*.h %{temp_devel_root}/drivers/acpi/acpica/
2013-11-16 00:27:01 +04:00
%if %{with aufs}
# aufs2 has a special file needed
cp -fR fs/aufs/magic.mk %{temp_devel_root}/fs/aufs
%endif
2013-11-16 00:27:01 +04:00
# SELinux needs security/selinux/include
cp -fR security/selinux/include %{temp_devel_root}/security/selinux
2013-11-16 00:27:01 +04:00
for i in alpha arc avr32 blackfin c6x cris csky frv h8300 hexagon ia64 m32r m68k m68knommu metag microblaze \
mips mn10300 nds32 nios2 openrisc parisc powerpc riscv s390 score sh sparc tile unicore32 xtensa; do
rm -rf %{temp_devel_root}/arch/$i
done
2013-11-16 00:27:01 +04:00
# Clean the scripts tree, and make sure everything is ok (sanity check)
# running prepare+scripts (tree was already "prepared" in build)
2020-03-14 13:49:15 +03:00
pushd %{temp_devel_root}
2020-11-26 21:09:27 +00:00
%smake V=1 -s clean ARCH=%{arch_type}
2020-03-14 13:49:15 +03:00
popd
2020-11-26 21:09:27 +00:00
rm -f %{temp_devel_root}/.config.old
2013-11-16 00:27:01 +04:00
# Fix permissions
chmod -R a+rX %{temp_devel_root}
2013-11-16 00:27:01 +04:00
# Disable mrproper in -devel rpms
#patch -p1 --fuzz=0 -d %{temp_devel_root} -i %{SOURCE2}
2013-11-16 00:27:01 +04:00
%endif
# End of build_devel
2013-11-16 00:27:01 +04:00
# TODO: maybe move to /usr/lib/debug?
%if %{build_debug}
find %{temp_modules}/%{kver_full}/kernel \
-name "*.ko" | \
%kxargs -I '{}' objcopy --only-keep-debug '{}' '{}'.debug
find %{temp_modules}/%{kver_full}/kernel \
-name "*.ko" | %kxargs -I '{}' \
sh -c 'cd `dirname {}`; \
objcopy --add-gnu-debuglink=`basename {}`.debug \
--strip-debug `basename {}`'
%endif
# End of build_debug
2020-07-29 10:59:41 +03:00
# https://patchwork.kernel.org/patch/11446123/
2019-12-07 21:57:55 +03:00
_libressl_sign(){
if [ ! -f "$1" ]; then
echo "No file $1"
return 0
2019-12-07 21:57:55 +03:00
fi
f="$1"
%if %{with gost_sign}
%{src_dir}/scripts/sign-file streebog512 \
"%{certs_signing_key_priv_rnd}.GOST" "%{certs_signing_key_priv_rnd}.GOST" "$f"
%else
%{src_dir}/scripts/sign-file sha512 \
2020-03-20 11:27:35 +03:00
"%{certs_signing_key_priv_rnd}.RSA" "%{certs_signing_key_priv_rnd}.RSA" "$f"
%endif
2019-12-07 21:57:55 +03:00
unset f
}
export -f _libressl_sign
2020-03-13 20:35:12 +03:00
find %{temp_modules}/%{kver_full}/kernel \
%if %{with uml}
%{temp_root}/lib/modules-uml/%{kver_full} \
2020-03-13 20:35:12 +03:00
%endif
-name '*.ko' -print0 | sort -u | \
2019-12-07 21:57:55 +03:00
xargs --null -P "$(nproc)" -I {} "$SHELL" -e -x -c 'if ! _libressl_sign "{}"; \
then echo Failed _libressl_sign on "{}" && exit 1; fi'
2019-11-13 17:35:59 +03:00
# Set extraversion to match srpm to get nice version reported by the tools
LC_ALL=C sed -ri "s/^EXTRAVERSION.*/EXTRAVERSION = -%{fullrpmrel}/" Makefile
2013-11-16 00:27:01 +04:00
%if %{build_perf}
%smake -C tools/perf -s PYTHON=%{__python3} HAVE_CPLUS_DEMANGLE=1 WERROR=0 prefix=%{_prefix} lib=%{_lib} NO_GTK2=1 all
2020-11-27 01:21:49 +03:00
%smake -C tools/perf -s prefix=%{_prefix} lib=%{_lib} NO_GTK2=1 man
2013-11-16 00:27:01 +04:00
%endif
%if %{build_cpupower}
# Make sure version-gen.sh is executable.
2013-11-16 00:27:01 +04:00
chmod +x tools/power/cpupower/utils/version-gen.sh
%make -C tools/power/cpupower CPUFREQ_BENCH=false
2013-11-16 00:27:01 +04:00
%endif
2019-11-11 22:27:50 +03:00
_cleanup
############################################################################
2013-11-16 00:27:01 +04:00
%install
cd %{src_dir}
2013-11-16 00:27:01 +04:00
2022-09-26 15:32:27 +03:00
# TODO: get rid of temporary directory, install to buildroot directly?
2013-11-16 00:27:01 +04:00
# We want to be able to test several times the install part
rm -rf %{buildroot}
cp -a %{temp_root} %{buildroot}
#if %%{with oblig_signed_modules}
# Multithreaded verification that every kernel module has a signature attached to it
mkdir -p "%{certs_dir_rnd}"
touch %{certs_verify_tmp}
_verify_signature(){
if [ -z "$1" ] || [ ! -f "$1" ]; then return; fi
if hexdump -C "$1" | rev | cut -f 2 -d '|' | rev | tr -d '\n' | grep -q '~Module signature appended~'; then
if [ -f %{certs_verify_tmp} ]; then
rm -f %{certs_verify_tmp}
fi
else
echo "ERROR: Module $1 has no signature attached to it!"
exit 1
fi
}
export -f _verify_signature
2020-03-13 20:35:12 +03:00
find %{target_modules} \
%if %{with uml}
%{buildroot}/lib/modules-uml/%{kver_full} \
2020-03-13 20:35:12 +03:00
%endif
-name '*.ko' -print0 | sort -u | \
xargs --null -P "$(nproc)" -I {} "$SHELL" -c '_verify_signature "{}"'
if [ -f %{certs_verify_tmp} ]; then
echo "ERROR: seems that signatures of none modules were verified!"
exit 1
fi
rm -f %{certs_verify_tmp}
#endif
# Compressing modules
%if %{with compress_modules}
# Tested on /lib/modules/5.10.34-generic-2rosa2019.1-x86_64, the results are the following:
# * decompressed: 266.3 MiB
# * xz -9 --extreme: 67.8 MiB
# * zstd --ultra -22 without training: 73.5 MiB
# * zstd -6 without training: 79.6 MiB
# * zstd --ultra -22 with training: 66.3 MiB (the winner!)
# Training takes only a few minutes, make it here in place with current zstd and kernel modules.
# But! Decompressing also requires a dictionary for zstd, that will be too complex, so not using training :(
# We already use zstd in dracut to compress initrds quickly and with good compression ration.
# Testing speed of loading modules:
# `time modinfo bcache.ko.xz` took 0,048s, `time modinfo bcache.ko.zstd` took 0,014s (for multiple times)
# find /lib/modules/5.10.34-generic-2rosa2019.1-x86_64 -type f -name '*.ko.zst' > /tmp/zst.list
# time { for i in `cat /tmp/zst.list`; do modinfo $i >/dev/null 2>&1; done ;}
# took ~31-40s, with disk cache (2+ runs) ~33s
# find /lib/modules/5.10.34-generic-1rosa2019.1-x86_64 -type f -name '*.ko.xz' > /tmp/xz.list
# time { for i in `cat /tmp/xz.list`; do modinfo $i >/dev/null 2>&1; done ;}
# took 43-47s, with disk cache (2+ runs) ~42s, +21%%
# zstd-compressed initramfs image initrd-5.10.34-generic-1rosa2019.1-x86_64.img with *.ko.xz is 56,3 MiB
# zstd-compressed initramfs image initrd-5.10.34-generic-2rosa2019.1-x86_64.img with *.ko.zst is 58,4 MiB (+3.6%%)
# /lib/modules/5.10.34-generic-1rosa2019.1-x86_64 (*.ko.xz) is 78,1 MiB
# /lib/modules/5.10.34-generic-2rosa2019.1-x86_64 (*.ko.zst) is 83,9 MiB (+7%%)
# When zstd is compressing cpio (initrd image) with zstd-compressed kernel modules inside it, does it recompress data?
# It is not easy to make a choice between zstd and xz for kernel modules... Disk space (and so speed of installing
# RPM packages) is not much bigger, we do not try to support super low end devices, operation speed is a bit better.
# I have not seen measurable difference in startup time according to systemd-analyze.
# Note that decompression after zstd --ultra -22 will consume more memory than after zstd -6, see commit message in
# https://github.com/torvalds/linux/commit/73f3d1b48f5069d46b. I did not benchmark -6 vs -22 in runtime.
# Let's use zstd for now.
# zstd may also be used to compress linux-firmware to save a lot of space on disk,
# but upstream kernels still cannot decompress it.
#{zstd_cmd} -T0 --train $(find . -type f -name '*.ko')
#[ -f dictionary ]
# -T1 (one thread) because we run multiple zstd processes by xargs
%if %{with modxz}
find %{target_modules} -name "*.ko" | %kxargs xz -6e
%else
find %{target_modules} -name "*.ko" | %kxargs %{zstd_cmd} --rm -T1 #-D dictionary
rm -f dictionary
%endif
%endif
2013-11-16 00:27:01 +04:00
2022-09-26 15:32:27 +03:00
%if %{with binary_extra_modules}
# Move nvidia modules to manage them via alternatives(8), leave *.debug
# TODO: better handle debug here and in the package in general
find %{target_modules}/%{kver_full}/kernel/drivers/video -name 'nvidia???.*' -type d -maxdepth 1 |
while read -r line
do
nv="$(basename "$line")"
mkdir -p %{buildroot}%{kroko_kmods_dir}/"$nv"-%{kver_full}
mv -v "$line"/*.ko%{kmod_suffix} %{buildroot}%{kroko_kmods_dir}/"$nv"-%{kver_full}
2022-10-07 00:01:12 +03:00
dir_no_buildroot="$(echo "$line" | sed -e 's,^%{buildroot},,')"
echo "%exclude $dir_no_buildroot" >> %{kernel_files}
%if %{build_debug}
echo "%dir $dir_no_buildroot" >> %{debuginfo_files}
%endif
2022-09-26 15:32:27 +03:00
done
%endif #/with binary_extra_modules
find %{buildroot}%{_modulesdir}/%{kver_full} -type f -name '*.ko%{kmod_suffix}' | sed -e 's,^%{buildroot},,' | sort -u >> %{kernel_files}
find %{buildroot}%{_modulesdir}/%{kver_full} -type d | sed -e 's,^%{buildroot},%dir ,' | sort -u >> %{kernel_files}
# We estimate the size of the initramfs because rpm needs to take this size
# into consideration when performing disk space calculations (See rhbz#530778)
# 65 MiB is a bit more than needed, but let's be more sure that there is enought space.
# On my PC, zstd-compressed initrds take 58,5 MiB.
# Real size of the RPM package should not increase because RPM compresses the payload.
# This file is %%ghost, so the real initrd will be deleted when uninstalling this package.
dd if=/dev/zero of=%{buildroot}%{initrd_path} bs=1M count=65
%if %{build_debug}
install -m 644 vmlinux %{buildroot}%{_bootdir}/vmlinux-%{kver_full}
find %{buildroot}%{_modulesdir} -type f -name '*.debug' | sed -e 's,^%{buildroot},,' | sort -u >> %{debuginfo_files}
%endif
# End of build_debug
pushd %{target_modules}
for i in *; do
rm -f $i/build $i/source
ln -sf /usr/src/linux-$i $i/build
ln -sf /usr/src/linux-$i $i/source
done
# Sniff, if we compressed all the modules, we change the stamp :(
2013-11-16 00:27:01 +04:00
# we really need the depmod -ae here
for i in *; do
/sbin/depmod -ae -b %{buildroot} -F %{target_boot}/System.map-$i $i
echo $?
done
# We used to create modules.description files which contained the
# description strings for the modules as shown by modinfo. These files
# are unlikely to be used right now, so create them (in case some old tool
# checks for their existence) but keep them empty.
2013-11-16 00:27:01 +04:00
for i in *; do
touch $i/modules.description
2013-11-16 00:27:01 +04:00
done
popd
# Need to set extraversion to match srpm again to avoid rebuild
LC_ALL=C sed -ri "s/^EXTRAVERSION.*/EXTRAVERSION = -%{fullrpmrel}/" Makefile
2013-11-16 00:27:01 +04:00
%if %{build_perf}
# Perf tool binary and supporting scripts/binaries
2020-12-11 19:39:08 +00:00
make -C tools/perf -s V=1 DESTDIR=%{buildroot} WERROR=0 HAVE_CPLUS_DEMANGLE=1 prefix=%{_prefix} lib=%{_lib} install
2013-11-16 00:27:01 +04:00
2020-05-11 09:33:18 +03:00
# Versionize shebang (#!/usr/bin/env python -> #!/usr/bin/python3)
2022-03-17 10:23:10 +03:00
sed -i '1 s,^#!/usr/bin/env python$,#!%{__python3},' \
%{buildroot}%{_libexecdir}/perf-core/scripts/python/exported-sql-viewer.py \
%{buildroot}%{_libexecdir}/perf-core/scripts/python/libxed.py
sed -i -e '1s,^#!/usr/bin/python$,#!%{__python3},' \
%{buildroot}%{_libexecdir}/perf-core/tests/shell/lib/perf_json_output_lint.py
2020-05-11 09:33:18 +03:00
# Perf man pages (note: implicit rpm magic compresses them later)
make -C tools/perf -s V=1 DESTDIR=%{buildroot} WERROR=0 HAVE_CPLUS_DEMANGLE=1 prefix=%{_prefix} install-man
2013-11-16 00:27:01 +04:00
%endif
%if %{build_cpupower}
make -C tools/power/cpupower DESTDIR=%{buildroot} libdir=%{_libdir} mandir=%{_mandir} CPUFREQ_BENCH=false install
2013-11-16 00:27:01 +04:00
rm -f %{buildroot}%{_libdir}/*.{a,la}
2013-11-16 00:27:01 +04:00
%find_lang cpupower
2013-11-16 00:27:01 +04:00
mv cpupower.lang ../
chmod 0755 %{buildroot}%{_libdir}/libcpupower.so*
mkdir -p %{buildroot}%{_unitdir} %{buildroot}%{_sysconfdir}/sysconfig
install -m644 %{SOURCE50} %{buildroot}%{_unitdir}/cpupower.service
install -m644 %{SOURCE53} %{buildroot}%{_unitdir}/cpupower.path
2013-11-16 00:27:01 +04:00
install -m644 %{SOURCE51} %{buildroot}%{_sysconfdir}/sysconfig/cpupower
install -m755 %{SOURCE52} %{buildroot}%{_bindir}/cpupower-start.sh
2013-11-16 00:27:01 +04:00
%endif
2020-07-29 10:59:41 +03:00
# Delete junk
rm -fr %{buildroot}%{_usr}/src/*/kernel-source-*
%if %{with flow_abi}
# Prefix with "zzz" to put this directory into the end of search list
# and avoid tricks with depmod configs
mkdir -p %{buildroot}/lib/modules/%{kernelversion}.%{patchlevel}-rosa-flow-abi
ln -s /lib/modules/%{kernelversion}.%{patchlevel}-rosa-flow-abi %{buildroot}%{_modulesdir}/%{kver_full}/kernel/zzz-%{kernelversion}.%{patchlevel}-rosa-flow-abi
%endif
# Drop hidden files
rm -f %{buildroot}%{_docdir}/kernel-5.10-generic-doc/devicetree/bindings/.yamllint
# Fix perms
2022-10-11 09:24:23 +03:00
%if %{build_perf}
chmod -x %{buildroot}%{_sysconfdir}/bash_completion.d/perf
chmod -x %{buildroot}%{_prefix}/lib/perf/examples/bpf/*.c
chmod -x %{buildroot}%{_prefix}/lib/perf/include/bpf/*.h
chmod -x %{buildroot}%{_prefix}/lib/perf/include/bpf/linux/*.h
chmod -x %{buildroot}%{_datadir}/doc/perf-tip/*.txt
2022-10-11 09:24:23 +03:00
%endif