diff --git a/meta-gnome/recipes-gnome/gdm/files/gdm.conf b/meta-citadel/recipes-citadel/bbappends/gdm/gdm.conf similarity index 100% rename from meta-gnome/recipes-gnome/gdm/files/gdm.conf rename to meta-citadel/recipes-citadel/bbappends/gdm/gdm.conf diff --git a/meta-citadel/recipes-citadel/bbappends/gdm_%.bbappend b/meta-citadel/recipes-citadel/bbappends/gdm_%.bbappend new file mode 100644 index 0000000..c8b7f72 --- /dev/null +++ b/meta-citadel/recipes-citadel/bbappends/gdm_%.bbappend @@ -0,0 +1,18 @@ +FILESEXTRAPATHS:prepend := "${THISDIR}/gdm:" + +SRC_URI += "file://gdm.conf" +DEPENDS += "plymouth" + +do_install:append() { + install -d ${D}${sysconfdir}/default/volatiles + echo "d gdm gdm 755 ${localstatedir}/run/gdm/greeter none" > ${D}${sysconfdir}/default/volatiles/99_gdm + rm ${D}${sysconfdir}/gdm/custom.conf + rm ${D}${libdir}/udev/rules.d/61-gdm.rules + install -m 644 ${WORKDIR}/gdm.conf ${D}${sysconfdir}/gdm/custom.conf +} + +EXTRA_OEMESON = " \ + -Dplymouth=enabled \ + -Ddefault-pam-config=openembedded \ + -Dpam-mod-dir=${base_libdir}/security \ +" diff --git a/meta-citadel/recipes-citadel/bbappends/gvfs_%.bbappend b/meta-citadel/recipes-citadel/bbappends/gvfs_%.bbappend new file mode 100644 index 0000000..6cc15a2 --- /dev/null +++ b/meta-citadel/recipes-citadel/bbappends/gvfs_%.bbappend @@ -0,0 +1,3 @@ + +PACKAGECONFIG:remove = "libgphoto2" +EXTRA_OEMESON:append = " -Dlibusb=false" diff --git a/meta-citadel/recipes-citadel/bbappends/libdevmapper_%.bbappend b/meta-citadel/recipes-citadel/bbappends/libdevmapper_%.bbappend index 704037a..20d10a3 100644 --- a/meta-citadel/recipes-citadel/bbappends/libdevmapper_%.bbappend +++ b/meta-citadel/recipes-citadel/bbappends/libdevmapper_%.bbappend @@ -1,2 +1 @@ PACKAGECONFIG = "odirect" -PACKAGECONFIG:append:class-target = " udev" diff --git a/meta-citadel/recipes-citadel/bbappends/networkmanager_%.bbappend b/meta-citadel/recipes-citadel/bbappends/networkmanager_%.bbappend index 34d127f..b800436 100644 --- a/meta-citadel/recipes-citadel/bbappends/networkmanager_%.bbappend +++ b/meta-citadel/recipes-citadel/bbappends/networkmanager_%.bbappend @@ -1,5 +1,5 @@ # Append recipe from meta-openembedded/meta-networking -FILESEXTRAPATHS_prepend := "${THISDIR}/networkmanager:" +FILESEXTRAPATHS:prepend := "${THISDIR}/networkmanager:" SRC_URI += "\ file://NetworkManager.conf \ @@ -7,17 +7,11 @@ SRC_URI += "\ file://watch-resolvconf.service \ " -SYSTEMD_SERVICE_${PN} += "watch-resolvconf.path" +SYSTEMD_SERVICE:${PN} += "watch-resolvconf.path" -do_install_append() { +do_install:append() { install -m 0644 ${WORKDIR}/NetworkManager.conf ${D}${sysconfdir}/NetworkManager/ install -m 644 ${WORKDIR}/watch-resolvconf.path ${D}${systemd_system_unitdir} install -m 644 ${WORKDIR}/watch-resolvconf.service ${D}${systemd_system_unitdir} } -PACKAGECONFIG = "nss systemd polkit" -PACKAGECONFIG[wifi] = "" -EXTRA_OECONF = "\ - --with-iwd \ - --enable-wifi=yes \ - --without-iptables \ -" +PACKAGECONFIG = "nss systemd polkit wifi iwd vala" diff --git a/meta-citadel/recipes-citadel/images/citadel-image.inc b/meta-citadel/recipes-citadel/images/citadel-image.inc index 557de7f..f077ee8 100644 --- a/meta-citadel/recipes-citadel/images/citadel-image.inc +++ b/meta-citadel/recipes-citadel/images/citadel-image.inc @@ -5,7 +5,7 @@ CITADEL_IMAGE_VERSION_rootfs = "1" CITADEL_IMAGE_VERSION_extra = "1" CITADEL_IMAGE_VERSION_kernel = "1" -CITADEL_KERNEL_VERSION = "5.15.8" +CITADEL_KERNEL_VERSION = "5.18.0" CITADEL_KERNEL_CONFIG = "${COREBASE}/../meta-citadel/recipes-kernel/citadel-kernel/files/defconfig" diff --git a/meta-citadel/recipes-citadel/images/citadel-installer-image.bb b/meta-citadel/recipes-citadel/images/citadel-installer-image.bb index ccfbd59..656ba5e 100644 --- a/meta-citadel/recipes-citadel/images/citadel-installer-image.bb +++ b/meta-citadel/recipes-citadel/images/citadel-installer-image.bb @@ -98,9 +98,8 @@ install_resource_image() { version=$(printf "%03d" ${2}) if [ "${1}" = "kernel" ]; then - kversion=$(cat ${DEPLOY_DIR_IMAGE}/kernel.version) - src_fname="citadel-kernel-${kversion}-${CITADEL_IMAGE_CHANNEL}-${version}.img" - dst_fname="citadel-kernel-${kversion}.img" + src_fname="citadel-kernel-${CITADEL_KERNEL_VERSION}-${CITADEL_IMAGE_CHANNEL}-${version}.img" + dst_fname="citadel-kernel-${CITADEL_KERNEL_VERSION}.img" else src_fname="citadel-${1}-${CITADEL_IMAGE_CHANNEL}-${version}.img" dst_fname="citadel-${1}.img" diff --git a/meta-citadel/recipes-citadel/packagegroups/packagegroup-gnome.bb b/meta-citadel/recipes-citadel/packagegroups/packagegroup-gnome.bb index a9d26b7..1868d1d 100644 --- a/meta-citadel/recipes-citadel/packagegroups/packagegroup-gnome.bb +++ b/meta-citadel/recipes-citadel/packagegroups/packagegroup-gnome.bb @@ -5,7 +5,6 @@ inherit packagegroup RDEPENDS:${PN} = "\ atk \ at-spi2-atk \ - libgweather \ zenity \ gnome-desktop \ gnome-bluetooth \ diff --git a/meta-citadel/recipes-kernel/citadel-kernel/citadel-kernel_5.15.8.bb b/meta-citadel/recipes-kernel/citadel-kernel/citadel-kernel_5.18.bb similarity index 93% rename from meta-citadel/recipes-kernel/citadel-kernel/citadel-kernel_5.15.8.bb rename to meta-citadel/recipes-kernel/citadel-kernel/citadel-kernel_5.18.bb index a478816..1981ac1 100644 --- a/meta-citadel/recipes-kernel/citadel-kernel/citadel-kernel_5.15.8.bb +++ b/meta-citadel/recipes-kernel/citadel-kernel/citadel-kernel_5.18.bb @@ -9,7 +9,7 @@ SRC_URI = "https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-${PV}.tar.xz\ file://defconfig \ " -SRC_URI[sha256sum] = "d756527313ee09c8b0376975fb7890e2eddce9714967504093b2c0fab5c0f3bd" +SRC_URI[sha256sum] = "51f3f1684a896e797182a0907299cc1f0ff5e5b51dd9a55478ae63a409855cee" LINUX_VERSION ?= "${PV}" S = "${WORKDIR}/linux-${LINUX_VERSION}" diff --git a/meta-citadel/recipes-kernel/citadel-kernel/files/defconfig b/meta-citadel/recipes-kernel/citadel-kernel/files/defconfig index 4b0d7b7..6c74482 100644 --- a/meta-citadel/recipes-kernel/citadel-kernel/files/defconfig +++ b/meta-citadel/recipes-kernel/citadel-kernel/files/defconfig @@ -1,21 +1,23 @@ # # Automatically generated file; DO NOT EDIT. -# Linux/x86 5.15.8 Kernel Configuration +# Linux/x86 5.18.0 Kernel Configuration # -CONFIG_CC_VERSION_TEXT="gcc (Debian 10.2.1-6) 10.2.1 20210110" +CONFIG_CC_VERSION_TEXT="gcc (Debian 11.3.0-3) 11.3.0" CONFIG_CC_IS_GCC=y -CONFIG_GCC_VERSION=100201 +CONFIG_GCC_VERSION=110300 CONFIG_CLANG_VERSION=0 CONFIG_AS_IS_GNU=y -CONFIG_AS_VERSION=23502 +CONFIG_AS_VERSION=23800 CONFIG_LD_IS_BFD=y -CONFIG_LD_VERSION=23502 +CONFIG_LD_VERSION=23800 CONFIG_LLD_VERSION=0 CONFIG_CC_CAN_LINK=y CONFIG_CC_CAN_LINK_STATIC=y CONFIG_CC_HAS_ASM_GOTO=y +CONFIG_CC_HAS_ASM_GOTO_OUTPUT=y CONFIG_CC_HAS_ASM_INLINE=y CONFIG_CC_HAS_NO_PROFILE_FN_ATTR=y +CONFIG_PAHOLE_VERSION=0 CONFIG_IRQ_WORK=y CONFIG_BUILDTIME_TABLE_SORT=y CONFIG_THREAD_INFO_IN_TASK=y @@ -100,6 +102,7 @@ CONFIG_CONTEXT_TRACKING=y # CONFIG_CONTEXT_TRACKING_FORCE is not set CONFIG_NO_HZ=y CONFIG_HIGH_RES_TIMERS=y +CONFIG_CLOCKSOURCE_WATCHDOG_MAX_SKEW_US=100 # end of Timers subsystem CONFIG_BPF=y @@ -116,9 +119,13 @@ CONFIG_USERMODE_DRIVER=y # CONFIG_BPF_PRELOAD is not set # end of BPF subsystem +CONFIG_PREEMPT_BUILD=y # CONFIG_PREEMPT_NONE is not set CONFIG_PREEMPT_VOLUNTARY=y # CONFIG_PREEMPT is not set +CONFIG_PREEMPT_COUNT=y +CONFIG_PREEMPTION=y +CONFIG_PREEMPT_DYNAMIC=y # CONFIG_SCHED_CORE is not set # @@ -143,16 +150,18 @@ CONFIG_CPU_ISOLATION=y # RCU Subsystem # CONFIG_TREE_RCU=y +CONFIG_PREEMPT_RCU=y CONFIG_RCU_EXPERT=y CONFIG_SRCU=y CONFIG_TREE_SRCU=y CONFIG_TASKS_RCU_GENERIC=y +CONFIG_TASKS_RCU=y CONFIG_TASKS_TRACE_RCU=y CONFIG_RCU_STALL_COMMON=y CONFIG_RCU_NEED_SEGCBLIST=y CONFIG_RCU_FANOUT=32 CONFIG_RCU_FANOUT_LEAF=16 -CONFIG_RCU_FAST_NO_HZ=y +# CONFIG_RCU_BOOST is not set CONFIG_RCU_NOCB_CPU=y # CONFIG_TASKS_TRACE_RCU_READ_MB is not set # end of RCU Subsystem @@ -175,6 +184,7 @@ CONFIG_HAVE_UNSTABLE_SCHED_CLOCK=y CONFIG_ARCH_SUPPORTS_NUMA_BALANCING=y CONFIG_ARCH_WANT_BATCHED_UNMAP_TLB_FLUSH=y CONFIG_CC_HAS_INT128=y +CONFIG_CC_IMPLICIT_FALLTHROUGH="-Wimplicit-fallthrough=5" CONFIG_ARCH_SUPPORTS_INT128=y # CONFIG_NUMA_BALANCING is not set CONFIG_CGROUPS=y @@ -261,6 +271,7 @@ CONFIG_RSEQ=y # CONFIG_DEBUG_RSEQ is not set # CONFIG_EMBEDDED is not set CONFIG_HAVE_PERF_EVENTS=y +CONFIG_GUEST_PERF_EVENTS=y # CONFIG_PC104 is not set # @@ -304,14 +315,9 @@ CONFIG_GENERIC_BUG_RELATIVE_POINTERS=y CONFIG_ARCH_MAY_HAVE_PC_FDC=y CONFIG_GENERIC_CALIBRATE_DELAY=y CONFIG_ARCH_HAS_CPU_RELAX=y -CONFIG_ARCH_HAS_FILTER_PGPROT=y -CONFIG_HAVE_SETUP_PER_CPU_AREA=y -CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK=y -CONFIG_NEED_PER_CPU_PAGE_FIRST_CHUNK=y CONFIG_ARCH_HIBERNATION_POSSIBLE=y CONFIG_ARCH_NR_GPIO=1024 CONFIG_ARCH_SUSPEND_POSSIBLE=y -CONFIG_ARCH_WANT_GENERAL_HUGETLB=y CONFIG_AUDIT_ARCH=y CONFIG_HAVE_INTEL_TXT=y CONFIG_X86_64_SMP=y @@ -329,6 +335,8 @@ CONFIG_X86_X2APIC=y CONFIG_X86_MPPARSE=y # CONFIG_GOLDFISH is not set CONFIG_RETPOLINE=y +CONFIG_CC_HAS_SLS=y +# CONFIG_SLS is not set CONFIG_X86_CPU_RESCTRL=y # CONFIG_X86_EXTENDED_PLATFORM is not set CONFIG_X86_INTEL_LPSS=y @@ -382,6 +390,7 @@ CONFIG_NR_CPUS_RANGE_BEGIN=2 CONFIG_NR_CPUS_RANGE_END=512 CONFIG_NR_CPUS_DEFAULT=64 CONFIG_NR_CPUS=64 +CONFIG_SCHED_CLUSTER=y CONFIG_SCHED_SMT=y CONFIG_SCHED_MC=y CONFIG_SCHED_MC_PRIO=y @@ -407,7 +416,6 @@ CONFIG_PERF_EVENTS_AMD_UNCORE=y # CONFIG_X86_VSYSCALL_EMULATION is not set # CONFIG_X86_IOPL_IOPERM is not set -# CONFIG_I8K is not set CONFIG_MICROCODE=y CONFIG_MICROCODE_INTEL=y CONFIG_MICROCODE_AMD=y @@ -425,7 +433,6 @@ CONFIG_X86_64_ACPI_NUMA=y CONFIG_NODES_SHIFT=6 CONFIG_ARCH_SPARSEMEM_ENABLE=y CONFIG_ARCH_SPARSEMEM_DEFAULT=y -CONFIG_ARCH_SELECT_MEMORY_MODEL=y CONFIG_ILLEGAL_POINTER_VALUE=0xdead000000000000 # CONFIG_X86_PMEM_LEGACY is not set CONFIG_X86_CHECK_BIOS_CORRUPTION=y @@ -439,6 +446,8 @@ CONFIG_ARCH_USES_PG_UNCACHED=y CONFIG_ARCH_RANDOM=y CONFIG_X86_SMAP=y CONFIG_X86_UMIP=y +CONFIG_CC_HAS_IBT=y +CONFIG_X86_KERNEL_IBT=y CONFIG_X86_INTEL_MEMORY_PROTECTION_KEYS=y # CONFIG_X86_INTEL_TSX_MODE_OFF is not set # CONFIG_X86_INTEL_TSX_MODE_ON is not set @@ -472,12 +481,12 @@ CONFIG_HOTPLUG_CPU=y CONFIG_LEGACY_VSYSCALL_NONE=y # CONFIG_CMDLINE_BOOL is not set # CONFIG_MODIFY_LDT_SYSCALL is not set +# CONFIG_STRICT_SIGALTSTACK_SIZE is not set CONFIG_HAVE_LIVEPATCH=y # end of Processor type and features CONFIG_ARCH_HAS_ADD_PAGES=y CONFIG_ARCH_MHP_MEMMAP_ON_MEMORY_ENABLE=y -CONFIG_USE_PERCPU_NUMA_NODE_ID=y # # Power management and ACPI options @@ -554,6 +563,8 @@ CONFIG_ACPI_APEI_EINJ=m # CONFIG_ACPI_APEI_ERST_DEBUG is not set # CONFIG_ACPI_DPTF is not set # CONFIG_ACPI_CONFIGFS is not set +# CONFIG_ACPI_PFRUT is not set +CONFIG_ACPI_PCC=y # CONFIG_PMIC_OPREGION is not set CONFIG_X86_PM_TIMER=y CONFIG_ACPI_PRMT=y @@ -581,6 +592,7 @@ CONFIG_CPU_FREQ_GOV_SCHEDUTIL=y # CONFIG_X86_INTEL_PSTATE=y CONFIG_X86_PCC_CPUFREQ=m +CONFIG_X86_AMD_PSTATE=y CONFIG_X86_ACPI_CPUFREQ=y # CONFIG_X86_ACPI_CPUFREQ_CPB is not set # CONFIG_X86_POWERNOW_K8 is not set @@ -623,13 +635,15 @@ CONFIG_AMD_NB=y # Binary Emulations # # CONFIG_IA32_EMULATION is not set -# CONFIG_X86_X32 is not set +# CONFIG_X86_X32_ABI is not set # end of Binary Emulations CONFIG_HAVE_KVM=y +CONFIG_HAVE_KVM_PFNCACHE=y CONFIG_HAVE_KVM_IRQCHIP=y CONFIG_HAVE_KVM_IRQFD=y CONFIG_HAVE_KVM_IRQ_ROUTING=y +CONFIG_HAVE_KVM_DIRTY_RING=y CONFIG_HAVE_KVM_EVENTFD=y CONFIG_KVM_MMIO=y CONFIG_KVM_ASYNC_PF=y @@ -647,7 +661,6 @@ CONFIG_KVM_WERROR=y CONFIG_KVM_INTEL=m CONFIG_KVM_AMD=m # CONFIG_KVM_XEN is not set -# CONFIG_KVM_MMU_AUDIT is not set CONFIG_AS_AVX512=y CONFIG_AS_SHA1_NI=y CONFIG_AS_SHA256_NI=y @@ -667,12 +680,14 @@ CONFIG_UPROBES=y CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y CONFIG_ARCH_USE_BUILTIN_BSWAP=y CONFIG_KRETPROBES=y +CONFIG_KRETPROBE_ON_RETHOOK=y CONFIG_USER_RETURN_NOTIFIER=y CONFIG_HAVE_IOREMAP_PROT=y CONFIG_HAVE_KPROBES=y CONFIG_HAVE_KRETPROBES=y CONFIG_HAVE_OPTPROBES=y CONFIG_HAVE_KPROBES_ON_FTRACE=y +CONFIG_ARCH_CORRECT_STACKTRACE_ON_KRETPROBE=y CONFIG_HAVE_FUNCTION_ERROR_INJECTION=y CONFIG_HAVE_NMI=y CONFIG_TRACE_IRQFLAGS_SUPPORT=y @@ -726,6 +741,7 @@ CONFIG_HAVE_MOVE_PMD=y CONFIG_HAVE_ARCH_TRANSPARENT_HUGEPAGE=y CONFIG_HAVE_ARCH_TRANSPARENT_HUGEPAGE_PUD=y CONFIG_HAVE_ARCH_HUGE_VMAP=y +CONFIG_HAVE_ARCH_HUGE_VMALLOC=y CONFIG_ARCH_WANT_HUGE_PMD_SHARE=y CONFIG_HAVE_ARCH_SOFT_DIRTY=y CONFIG_HAVE_MOD_ARCH_SPECIFIC=y @@ -736,12 +752,15 @@ CONFIG_ARCH_HAS_ELF_RANDOMIZE=y CONFIG_HAVE_ARCH_MMAP_RND_BITS=y CONFIG_HAVE_EXIT_THREAD=y CONFIG_ARCH_MMAP_RND_BITS=28 +CONFIG_PAGE_SIZE_LESS_THAN_64KB=y +CONFIG_PAGE_SIZE_LESS_THAN_256KB=y CONFIG_HAVE_STACK_VALIDATION=y CONFIG_HAVE_RELIABLE_STACKTRACE=y # CONFIG_COMPAT_32BIT_TIME is not set CONFIG_HAVE_ARCH_VMAP_STACK=y CONFIG_VMAP_STACK=y CONFIG_HAVE_ARCH_RANDOMIZE_KSTACK_OFFSET=y +CONFIG_RANDOMIZE_KSTACK_OFFSET=y # CONFIG_RANDOMIZE_KSTACK_OFFSET_DEFAULT is not set CONFIG_ARCH_HAS_STRICT_KERNEL_RWX=y CONFIG_STRICT_KERNEL_RWX=y @@ -754,10 +773,13 @@ CONFIG_ARCH_HAS_MEM_ENCRYPT=y CONFIG_HAVE_STATIC_CALL=y CONFIG_HAVE_STATIC_CALL_INLINE=y CONFIG_HAVE_PREEMPT_DYNAMIC=y +CONFIG_HAVE_PREEMPT_DYNAMIC_CALL=y CONFIG_ARCH_WANT_LD_ORPHAN_WARN=y CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y +CONFIG_ARCH_SUPPORTS_PAGE_TABLE_CHECK=y CONFIG_ARCH_HAS_ELFCORE_COMPAT=y CONFIG_ARCH_HAS_PARANOID_L1D_FLUSH=y +CONFIG_DYNAMIC_SIGFRAME=y # # GCOV-based kernel profiling @@ -796,6 +818,7 @@ CONFIG_MODPROBE_PATH="/sbin/modprobe" # CONFIG_TRIM_UNUSED_KSYMS is not set CONFIG_MODULES_TREE_LOOKUP=y CONFIG_BLOCK=y +# CONFIG_BLOCK_LEGACY_AUTOLOAD is not set CONFIG_BLK_DEV_BSG_COMMON=y CONFIG_BLK_DEV_BSGLIB=y CONFIG_BLK_DEV_INTEGRITY=y @@ -839,6 +862,7 @@ CONFIG_BLK_MQ_PCI=y CONFIG_BLK_MQ_VIRTIO=y CONFIG_BLK_PM=y CONFIG_BLOCK_HOLDER_DEPRECATED=y +CONFIG_BLK_MQ_STACKING=y # # IO Schedulers @@ -851,11 +875,7 @@ CONFIG_MQ_IOSCHED_KYBER=y CONFIG_PREEMPT_NOTIFIERS=y CONFIG_PADATA=y CONFIG_ASN1=y -CONFIG_INLINE_SPIN_UNLOCK_IRQ=y -CONFIG_INLINE_READ_UNLOCK=y -CONFIG_INLINE_READ_UNLOCK_IRQ=y -CONFIG_INLINE_WRITE_UNLOCK=y -CONFIG_INLINE_WRITE_UNLOCK_IRQ=y +CONFIG_UNINLINE_SPIN_UNLOCK=y CONFIG_ARCH_SUPPORTS_ATOMIC_RMW=y CONFIG_MUTEX_SPIN_ON_OWNER=y CONFIG_RWSEM_SPIN_ON_OWNER=y @@ -883,14 +903,13 @@ CONFIG_COREDUMP=y # # Memory Management options # -CONFIG_SELECT_MEMORY_MODEL=y -CONFIG_SPARSEMEM_MANUAL=y CONFIG_SPARSEMEM=y CONFIG_SPARSEMEM_EXTREME=y CONFIG_SPARSEMEM_VMEMMAP_ENABLE=y CONFIG_SPARSEMEM_VMEMMAP=y CONFIG_HAVE_FAST_GUP=y CONFIG_NUMA_KEEP_MEMINFO=y +CONFIG_EXCLUSIVE_SYSTEM_RAM=y CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y # CONFIG_MEMORY_HOTPLUG is not set CONFIG_SPLIT_PTLOCK_CPUS=4 @@ -912,9 +931,13 @@ CONFIG_ARCH_SUPPORTS_MEMORY_FAILURE=y CONFIG_TRANSPARENT_HUGEPAGE=y # CONFIG_TRANSPARENT_HUGEPAGE_ALWAYS is not set CONFIG_TRANSPARENT_HUGEPAGE_MADVISE=y +CONFIG_ARCH_WANT_GENERAL_HUGETLB=y CONFIG_ARCH_WANTS_THP_SWAP=y CONFIG_THP_SWAP=y -CONFIG_CLEANCACHE=y +CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK=y +CONFIG_NEED_PER_CPU_PAGE_FIRST_CHUNK=y +CONFIG_USE_PERCPU_NUMA_NODE_ID=y +CONFIG_HAVE_SETUP_PER_CPU_AREA=y CONFIG_FRONTSWAP=y # CONFIG_CMA is not set CONFIG_ZSWAP=y @@ -939,6 +962,8 @@ CONFIG_GENERIC_EARLY_IOREMAP=y # CONFIG_DEFERRED_STRUCT_PAGE_INIT is not set # CONFIG_IDLE_PAGE_TRACKING is not set CONFIG_ARCH_HAS_CACHE_LINE_SIZE=y +CONFIG_ARCH_HAS_CURRENT_STACK_POINTER=y +CONFIG_ARCH_HAS_FILTER_PGPROT=y CONFIG_ARCH_HAS_PTE_DEVMAP=y CONFIG_ARCH_HAS_ZONE_DMA_SET=y CONFIG_ZONE_DMA=y @@ -953,6 +978,7 @@ CONFIG_ARCH_HAS_PKEYS=y CONFIG_ARCH_HAS_PTE_SPECIAL=y CONFIG_MAPPING_DIRTY_HELPERS=y CONFIG_SECRETMEM=y +# CONFIG_ANON_VMA_NAME is not set # # Data Access Monitoring @@ -1039,6 +1065,7 @@ CONFIG_BRIDGE_NETFILTER=y # Core Netfilter Configuration # CONFIG_NETFILTER_INGRESS=y +# CONFIG_NETFILTER_EGRESS is not set CONFIG_NETFILTER_NETLINK=y CONFIG_NETFILTER_FAMILY_BRIDGE=y # CONFIG_NETFILTER_NETLINK_HOOK is not set @@ -1082,7 +1109,6 @@ CONFIG_NF_TABLES=y # CONFIG_NF_TABLES_NETDEV is not set CONFIG_NFT_NUMGEN=y CONFIG_NFT_CT=y -CONFIG_NFT_COUNTER=y # CONFIG_NFT_CONNLIMIT is not set CONFIG_NFT_LOG=y # CONFIG_NFT_LIMIT is not set @@ -1348,6 +1374,7 @@ CONFIG_BT_DEBUGFS=y CONFIG_BT_INTEL=m CONFIG_BT_BCM=m CONFIG_BT_RTL=m +CONFIG_BT_MTK=m CONFIG_BT_HCIBTUSB=m # CONFIG_BT_HCIBTUSB_AUTOSUSPEND is not set CONFIG_BT_HCIBTUSB_BCM=y @@ -1404,6 +1431,7 @@ CONFIG_RFKILL_LEDS=y CONFIG_RFKILL_INPUT=y # CONFIG_RFKILL_GPIO is not set CONFIG_NET_9P=m +# CONFIG_NET_9P_FD is not set CONFIG_NET_9P_VIRTIO=m # CONFIG_NET_9P_DEBUG is not set # CONFIG_CAIF is not set @@ -1418,6 +1446,7 @@ CONFIG_NET_SELFTESTS=y CONFIG_NET_SOCK_MSG=y CONFIG_NET_DEVLINK=y CONFIG_PAGE_POOL=y +# CONFIG_PAGE_POOL_STATS is not set CONFIG_FAILOVER=y CONFIG_ETHTOOL_NETLINK=y @@ -1457,6 +1486,8 @@ CONFIG_PCIE_BUS_DEFAULT=y # CONFIG_PCIE_BUS_SAFE is not set # CONFIG_PCIE_BUS_PERFORMANCE is not set # CONFIG_PCIE_BUS_PEER2PEER is not set +CONFIG_VGA_ARB=y +CONFIG_VGA_ARB_MAX_GPUS=16 CONFIG_HOTPLUG_PCI=y CONFIG_HOTPLUG_PCI_ACPI=y CONFIG_HOTPLUG_PCI_ACPI_IBM=m @@ -1512,6 +1543,7 @@ CONFIG_AUXILIARY_BUS=y # CONFIG_UEVENT_HELPER is not set CONFIG_DEVTMPFS=y CONFIG_DEVTMPFS_MOUNT=y +CONFIG_DEVTMPFS_SAFE=y CONFIG_STANDALONE=y CONFIG_PREVENT_FIRMWARE_BUILD=y @@ -1633,7 +1665,6 @@ CONFIG_ZRAM_DEF_COMP="lzo-rle" # CONFIG_ZRAM_MEMORY_TRACKING is not set CONFIG_BLK_DEV_LOOP=y CONFIG_BLK_DEV_LOOP_MIN_COUNT=4 -# CONFIG_BLK_DEV_CRYPTOLOOP is not set # CONFIG_BLK_DEV_DRBD is not set CONFIG_BLK_DEV_NBD=y # CONFIG_BLK_DEV_SX8 is not set @@ -1642,7 +1673,6 @@ CONFIG_BLK_DEV_NBD=y # CONFIG_ATA_OVER_ETH is not set CONFIG_VIRTIO_BLK=y # CONFIG_BLK_DEV_RBD is not set -# CONFIG_BLK_DEV_RSXX is not set # # NVME Support @@ -1650,6 +1680,7 @@ CONFIG_VIRTIO_BLK=y CONFIG_NVME_CORE=y CONFIG_BLK_DEV_NVME=y CONFIG_NVME_MULTIPATH=y +# CONFIG_NVME_VERBOSE_ERRORS is not set CONFIG_NVME_HWMON=y # CONFIG_NVME_FC is not set # CONFIG_NVME_TCP is not set @@ -1716,6 +1747,7 @@ CONFIG_INTEL_MEI=m CONFIG_INTEL_MEI_ME=m # CONFIG_INTEL_MEI_TXE is not set CONFIG_INTEL_MEI_HDCP=m +# CONFIG_INTEL_MEI_PXP is not set # CONFIG_VMWARE_VMCI is not set # CONFIG_GENWQE is not set # CONFIG_ECHO is not set @@ -2011,12 +2043,15 @@ CONFIG_ENA_ETHERNET=m CONFIG_NET_VENDOR_AQUANTIA=y # CONFIG_AQTION is not set # CONFIG_NET_VENDOR_ARC is not set +CONFIG_NET_VENDOR_ASIX=y +# CONFIG_SPI_AX88796C is not set CONFIG_NET_VENDOR_ATHEROS=y CONFIG_ATL2=m CONFIG_ATL1=m CONFIG_ATL1E=m CONFIG_ATL1C=m CONFIG_ALX=m +# CONFIG_CX_ECAT is not set CONFIG_NET_VENDOR_BROADCOM=y CONFIG_B44=m CONFIG_B44_PCI_AUTOSELECT=y @@ -2034,7 +2069,6 @@ CONFIG_BNXT=m CONFIG_BNXT_SRIOV=y CONFIG_BNXT_FLOWER_OFFLOAD=y CONFIG_BNXT_HWMON=y -# CONFIG_NET_VENDOR_BROCADE is not set CONFIG_NET_VENDOR_CADENCE=y # CONFIG_MACB is not set # CONFIG_NET_VENDOR_CAVIUM is not set @@ -2042,7 +2076,7 @@ CONFIG_NET_VENDOR_CADENCE=y CONFIG_NET_VENDOR_CISCO=y CONFIG_ENIC=m CONFIG_NET_VENDOR_CORTINA=y -# CONFIG_CX_ECAT is not set +# CONFIG_NET_VENDOR_DAVICOM is not set # CONFIG_DNET is not set # CONFIG_NET_VENDOR_DEC is not set CONFIG_NET_VENDOR_DLINK=y @@ -2050,7 +2084,9 @@ CONFIG_DL2K=m CONFIG_SUNDANCE=m CONFIG_SUNDANCE_MMIO=y # CONFIG_NET_VENDOR_EMULEX is not set +# CONFIG_NET_VENDOR_ENGLEDER is not set # CONFIG_NET_VENDOR_EZCHIP is not set +# CONFIG_NET_VENDOR_FUNGIBLE is not set CONFIG_NET_VENDOR_GOOGLE=y # CONFIG_GVE is not set CONFIG_NET_VENDOR_HUAWEI=y @@ -2074,7 +2110,6 @@ CONFIG_I40EVF=m # CONFIG_ICE is not set CONFIG_FM10K=m # CONFIG_IGC is not set -CONFIG_NET_VENDOR_MICROSOFT=y # CONFIG_JME is not set # CONFIG_NET_VENDOR_LITEX is not set CONFIG_NET_VENDOR_MARVELL=y @@ -2105,15 +2140,16 @@ CONFIG_MLX5_SW_STEERING=y # CONFIG_NET_VENDOR_MICREL is not set # CONFIG_NET_VENDOR_MICROCHIP is not set CONFIG_NET_VENDOR_MICROSEMI=y +CONFIG_NET_VENDOR_MICROSOFT=y # CONFIG_NET_VENDOR_MYRI is not set # CONFIG_FEALNX is not set +CONFIG_NET_VENDOR_NI=y +# CONFIG_NI_XGE_MANAGEMENT_ENET is not set # CONFIG_NET_VENDOR_NATSEMI is not set CONFIG_NET_VENDOR_NETERION=y # CONFIG_S2IO is not set # CONFIG_VXGE is not set # CONFIG_NET_VENDOR_NETRONOME is not set -CONFIG_NET_VENDOR_NI=y -# CONFIG_NI_XGE_MANAGEMENT_ENET is not set # CONFIG_NET_VENDOR_NVIDIA is not set # CONFIG_NET_VENDOR_OKI is not set # CONFIG_ETHOC is not set @@ -2122,6 +2158,7 @@ CONFIG_NET_VENDOR_PACKET_ENGINES=y # CONFIG_YELLOWFIN is not set # CONFIG_NET_VENDOR_PENSANDO is not set # CONFIG_NET_VENDOR_QLOGIC is not set +# CONFIG_NET_VENDOR_BROCADE is not set # CONFIG_NET_VENDOR_QUALCOMM is not set # CONFIG_NET_VENDOR_RDC is not set CONFIG_NET_VENDOR_REALTEK=y @@ -2136,11 +2173,11 @@ CONFIG_R8169=m # CONFIG_NET_VENDOR_ROCKER is not set # CONFIG_NET_VENDOR_SAMSUNG is not set # CONFIG_NET_VENDOR_SEEQ is not set +# CONFIG_NET_VENDOR_SILAN is not set +# CONFIG_NET_VENDOR_SIS is not set CONFIG_NET_VENDOR_SOLARFLARE=y # CONFIG_SFC is not set # CONFIG_SFC_FALCON is not set -# CONFIG_NET_VENDOR_SILAN is not set -# CONFIG_NET_VENDOR_SIS is not set # CONFIG_NET_VENDOR_SMSC is not set CONFIG_NET_VENDOR_SOCIONEXT=y # CONFIG_NET_VENDOR_STMICRO is not set @@ -2148,6 +2185,7 @@ CONFIG_NET_VENDOR_SOCIONEXT=y # CONFIG_NET_VENDOR_SYNOPSYS is not set # CONFIG_NET_VENDOR_TEHUTI is not set # CONFIG_NET_VENDOR_TI is not set +# CONFIG_NET_VENDOR_VERTEXCOM is not set # CONFIG_NET_VENDOR_VIA is not set # CONFIG_NET_VENDOR_WIZNET is not set CONFIG_NET_VENDOR_XILINX=y @@ -2368,7 +2406,6 @@ CONFIG_IWLWIFI_LEDS=y CONFIG_IWLDVM=m CONFIG_IWLMVM=m CONFIG_IWLWIFI_OPMODE_MODULAR=y -# CONFIG_IWLWIFI_BCAST_FILTERING is not set # # Debugging Options @@ -2377,6 +2414,7 @@ CONFIG_IWLWIFI_OPMODE_MODULAR=y CONFIG_IWLWIFI_DEVICE_TRACING=y # end of Debugging Options +# CONFIG_IWLMEI is not set # CONFIG_WLAN_VENDOR_INTERSIL is not set # CONFIG_WLAN_VENDOR_MARVELL is not set # CONFIG_WLAN_VENDOR_MEDIATEK is not set @@ -2414,6 +2452,7 @@ CONFIG_INPUT=y CONFIG_INPUT_FF_MEMLESS=m CONFIG_INPUT_SPARSEKMAP=m CONFIG_INPUT_MATRIXKMAP=m +CONFIG_INPUT_VIVALDIFMAP=y # # Userland interfaces @@ -2456,6 +2495,7 @@ CONFIG_KEYBOARD_LM8323=m # CONFIG_KEYBOARD_SUNKBD is not set # CONFIG_KEYBOARD_TM2_TOUCHKEY is not set # CONFIG_KEYBOARD_XTKBD is not set +# CONFIG_KEYBOARD_CYPRESS_SF is not set CONFIG_INPUT_MOUSE=y CONFIG_MOUSE_PS2=y CONFIG_MOUSE_PS2_ALPS=y @@ -2530,6 +2570,7 @@ CONFIG_TOUCHSCREEN_MMS114=m # CONFIG_TOUCHSCREEN_MELFAS_MIP4 is not set # CONFIG_TOUCHSCREEN_MSG2638 is not set CONFIG_TOUCHSCREEN_MTOUCH=m +# CONFIG_TOUCHSCREEN_IMAGIS is not set CONFIG_TOUCHSCREEN_INEXIO=m CONFIG_TOUCHSCREEN_MK712=m CONFIG_TOUCHSCREEN_PENMOUNT=m @@ -2676,6 +2717,7 @@ CONFIG_SERIAL_8250_DWLIB=y # CONFIG_SERIAL_8250_RT288X is not set CONFIG_SERIAL_8250_LPSS=y # CONFIG_SERIAL_8250_MID is not set +# CONFIG_SERIAL_8250_PERICOM is not set # # Non-8250 serial port support @@ -2689,7 +2731,6 @@ CONFIG_SERIAL_CORE_CONSOLE=y # CONFIG_SERIAL_LANTIQ is not set # CONFIG_SERIAL_SCCNXP is not set # CONFIG_SERIAL_SC16IS7XX is not set -# CONFIG_SERIAL_BCM63XX is not set # CONFIG_SERIAL_ALTERA_JTAGUART is not set # CONFIG_SERIAL_ALTERA_UART is not set # CONFIG_SERIAL_ARC is not set @@ -2715,6 +2756,7 @@ CONFIG_IPMI_PLAT_DATA=y CONFIG_IPMI_DEVICE_INTERFACE=m CONFIG_IPMI_SI=m CONFIG_IPMI_SSIF=m +# CONFIG_IPMI_IPMB is not set CONFIG_IPMI_WATCHDOG=m CONFIG_IPMI_POWEROFF=m # CONFIG_IPMB_DEVICE_INTERFACE is not set @@ -2791,6 +2833,7 @@ CONFIG_I2C_ALGOBIT=y # # PC SMBus host controller drivers # +CONFIG_I2C_CCGX_UCSI=y # CONFIG_I2C_ALI1535 is not set # CONFIG_I2C_ALI1563 is not set # CONFIG_I2C_ALI15X3 is not set @@ -2822,6 +2865,7 @@ CONFIG_I2C_SCMI=m CONFIG_I2C_DESIGNWARE_CORE=y CONFIG_I2C_DESIGNWARE_SLAVE=y CONFIG_I2C_DESIGNWARE_PLATFORM=y +# CONFIG_I2C_DESIGNWARE_AMDPSP is not set CONFIG_I2C_DESIGNWARE_BAYTRAIL=y CONFIG_I2C_DESIGNWARE_PCI=y # CONFIG_I2C_EMEV2 is not set @@ -2941,6 +2985,10 @@ CONFIG_GENERIC_PINCONF=y CONFIG_PINCTRL_AMD=m # CONFIG_PINCTRL_MCP23S08 is not set # CONFIG_PINCTRL_SX150X is not set + +# +# Intel pinctrl drivers +# CONFIG_PINCTRL_BAYTRAIL=y CONFIG_PINCTRL_CHERRYVIEW=y # CONFIG_PINCTRL_LYNXPOINT is not set @@ -2959,6 +3007,7 @@ CONFIG_PINCTRL_BROXTON=m # CONFIG_PINCTRL_LEWISBURG is not set CONFIG_PINCTRL_SUNRISEPOINT=m CONFIG_PINCTRL_TIGERLAKE=m +# end of Intel pinctrl drivers # # Renesas pinctrl drivers @@ -3048,6 +3097,7 @@ CONFIG_GPIO_AMD_FCH=m # CONFIG_GPIO_AGGREGATOR is not set # CONFIG_GPIO_MOCKUP is not set # CONFIG_GPIO_VIRTIO is not set +# CONFIG_GPIO_SIM is not set # end of Virtual GPIO drivers # CONFIG_W1 is not set @@ -3056,12 +3106,14 @@ CONFIG_POWER_SUPPLY=y # CONFIG_POWER_SUPPLY_DEBUG is not set CONFIG_POWER_SUPPLY_HWMON=y # CONFIG_PDA_POWER is not set +# CONFIG_IP5XXX_POWER is not set # CONFIG_TEST_POWER is not set # CONFIG_CHARGER_ADP5061 is not set # CONFIG_BATTERY_CW2015 is not set # CONFIG_BATTERY_DS2780 is not set # CONFIG_BATTERY_DS2781 is not set # CONFIG_BATTERY_DS2782 is not set +# CONFIG_BATTERY_SAMSUNG_SDI is not set # CONFIG_BATTERY_SBS is not set # CONFIG_CHARGER_SBS is not set # CONFIG_MANAGER_SBS is not set @@ -3073,6 +3125,7 @@ CONFIG_POWER_SUPPLY_HWMON=y # CONFIG_CHARGER_GPIO is not set CONFIG_CHARGER_LT3651=m # CONFIG_CHARGER_LTC4162L is not set +# CONFIG_CHARGER_MAX77976 is not set # CONFIG_CHARGER_BQ2415X is not set # CONFIG_CHARGER_BQ24190 is not set # CONFIG_CHARGER_BQ24257 is not set @@ -3086,6 +3139,7 @@ CONFIG_CHARGER_LT3651=m # CONFIG_BATTERY_RT5033 is not set # CONFIG_CHARGER_RT9455 is not set # CONFIG_CHARGER_BD99954 is not set +# CONFIG_BATTERY_UG3105 is not set CONFIG_HWMON=y # CONFIG_HWMON_DEBUG_CHIP is not set @@ -3165,6 +3219,7 @@ CONFIG_SENSORS_CORETEMP=m # CONFIG_SENSORS_MAX197 is not set # CONFIG_SENSORS_MAX31722 is not set # CONFIG_SENSORS_MAX31730 is not set +# CONFIG_SENSORS_MAX6620 is not set # CONFIG_SENSORS_MAX6621 is not set # CONFIG_SENSORS_MAX6639 is not set # CONFIG_SENSORS_MAX6642 is not set @@ -3194,12 +3249,12 @@ CONFIG_SENSORS_CORETEMP=m # CONFIG_SENSORS_LM95245 is not set # CONFIG_SENSORS_PC87360 is not set # CONFIG_SENSORS_PC87427 is not set -# CONFIG_SENSORS_NTC_THERMISTOR is not set # CONFIG_SENSORS_NCT6683 is not set # CONFIG_SENSORS_NCT6775 is not set # CONFIG_SENSORS_NCT7802 is not set # CONFIG_SENSORS_NPCM7XX is not set # CONFIG_SENSORS_NZXT_KRAKEN2 is not set +# CONFIG_SENSORS_NZXT_SMART2 is not set # CONFIG_SENSORS_PCF8591 is not set # CONFIG_PMBUS is not set # CONFIG_SENSORS_SBTSI is not set @@ -3210,6 +3265,7 @@ CONFIG_SENSORS_CORETEMP=m # CONFIG_SENSORS_SHT4x is not set # CONFIG_SENSORS_SHTC1 is not set # CONFIG_SENSORS_SIS5595 is not set +# CONFIG_SENSORS_SY7636A is not set # CONFIG_SENSORS_DME1737 is not set # CONFIG_SENSORS_EMC1403 is not set # CONFIG_SENSORS_EMC2103 is not set @@ -3225,6 +3281,7 @@ CONFIG_SENSORS_CORETEMP=m # CONFIG_SENSORS_AMC6821 is not set # CONFIG_SENSORS_INA209 is not set # CONFIG_SENSORS_INA2XX is not set +# CONFIG_SENSORS_INA238 is not set # CONFIG_SENSORS_INA3221 is not set # CONFIG_SENSORS_TC74 is not set # CONFIG_SENSORS_THMC50 is not set @@ -3233,6 +3290,7 @@ CONFIG_SENSORS_CORETEMP=m # CONFIG_SENSORS_TMP108 is not set # CONFIG_SENSORS_TMP401 is not set # CONFIG_SENSORS_TMP421 is not set +# CONFIG_SENSORS_TMP464 is not set # CONFIG_SENSORS_TMP513 is not set # CONFIG_SENSORS_VIA_CPUTEMP is not set # CONFIG_SENSORS_VIA686A is not set @@ -3255,6 +3313,8 @@ CONFIG_SENSORS_CORETEMP=m # CONFIG_SENSORS_ACPI_POWER=m # CONFIG_SENSORS_ATK0110 is not set +CONFIG_SENSORS_ASUS_WMI=m +CONFIG_SENSORS_ASUS_EC=m CONFIG_THERMAL=y CONFIG_THERMAL_NETLINK=y # CONFIG_THERMAL_STATISTICS is not set @@ -3293,6 +3353,7 @@ CONFIG_PROC_THERMAL_MMIO_RAPL=m CONFIG_INTEL_PCH_THERMAL=m CONFIG_INTEL_TCC_COOLING=m # CONFIG_INTEL_MENLOW is not set +# CONFIG_INTEL_HFI_THERMAL is not set # end of Intel thermal drivers # CONFIG_WATCHDOG is not set @@ -3353,7 +3414,6 @@ CONFIG_MFD_INTEL_LPSS=y CONFIG_MFD_INTEL_LPSS_ACPI=y CONFIG_MFD_INTEL_LPSS_PCI=y # CONFIG_MFD_INTEL_PMC_BXT is not set -CONFIG_MFD_INTEL_PMT=y # CONFIG_MFD_IQS62X is not set # CONFIG_MFD_JANZ_CMODIO is not set # CONFIG_MFD_KEMPLD is not set @@ -3380,6 +3440,7 @@ CONFIG_MFD_INTEL_PMT=y # CONFIG_MFD_RT5033 is not set # CONFIG_MFD_RC5T583 is not set # CONFIG_MFD_SI476X_CORE is not set +# CONFIG_MFD_SIMPLE_MFD_I2C is not set # CONFIG_MFD_SM501 is not set # CONFIG_MFD_SKY81452 is not set # CONFIG_MFD_SYSCON is not set @@ -3398,7 +3459,6 @@ CONFIG_MFD_INTEL_PMT=y # CONFIG_MFD_TPS65910 is not set # CONFIG_MFD_TPS65912_I2C is not set # CONFIG_MFD_TPS65912_SPI is not set -# CONFIG_MFD_TPS80031 is not set # CONFIG_TWL4030_CORE is not set # CONFIG_TWL6040_CORE is not set # CONFIG_MFD_WL1273_CORE is not set @@ -3418,7 +3478,13 @@ CONFIG_MFD_INTEL_PMT=y # CONFIG_REGULATOR is not set # CONFIG_RC_CORE is not set + +# +# CEC support +# # CONFIG_MEDIA_CEC_SUPPORT is not set +# end of CEC support + CONFIG_MEDIA_SUPPORT=m # CONFIG_MEDIA_SUPPORT_FILTER is not set CONFIG_MEDIA_SUBDRV_AUTOSELECT=y @@ -3446,7 +3512,6 @@ CONFIG_DVB_CORE=m # # Video4Linux options # -CONFIG_VIDEO_V4L2=m CONFIG_VIDEO_V4L2_I2C=y # CONFIG_VIDEO_ADV_DEBUG is not set # CONFIG_VIDEO_FIXED_MINOR_RANGES is not set @@ -3463,6 +3528,10 @@ CONFIG_DVB_DYNAMIC_MINORS=y # CONFIG_DVB_ULE_DEBUG is not set # end of Digital TV options +# +# Media drivers +# + # # Media drivers # @@ -3471,23 +3540,23 @@ CONFIG_MEDIA_USB_SUPPORT=y # # Webcam devices # -CONFIG_USB_VIDEO_CLASS=m -CONFIG_USB_VIDEO_CLASS_INPUT_EVDEV=y +# CONFIG_VIDEO_CPIA2 is not set # CONFIG_USB_GSPCA is not set # CONFIG_USB_PWC is not set -# CONFIG_VIDEO_CPIA2 is not set -# CONFIG_USB_ZR364XX is not set -# CONFIG_USB_STKWEBCAM is not set # CONFIG_USB_S2255 is not set +# CONFIG_USB_STKWEBCAM is not set # CONFIG_VIDEO_USBTV is not set +CONFIG_USB_VIDEO_CLASS=m +CONFIG_USB_VIDEO_CLASS_INPUT_EVDEV=y +# CONFIG_USB_ZR364XX is not set # # Analog TV USB devices # -# CONFIG_VIDEO_PVRUSB2 is not set -# CONFIG_VIDEO_HDPVR is not set -# CONFIG_VIDEO_STK1160_COMMON is not set # CONFIG_VIDEO_GO7007 is not set +# CONFIG_VIDEO_HDPVR is not set +# CONFIG_VIDEO_PVRUSB2 is not set +# CONFIG_VIDEO_STK1160_COMMON is not set # # Analog/digital TV USB devices @@ -3498,12 +3567,12 @@ CONFIG_USB_VIDEO_CLASS_INPUT_EVDEV=y # # Digital TV USB devices # +# CONFIG_DVB_AS102 is not set +# CONFIG_DVB_B2C2_FLEXCOP_USB is not set # CONFIG_DVB_USB_V2 is not set +# CONFIG_SMS_USB_DRV is not set # CONFIG_DVB_TTUSB_BUDGET is not set # CONFIG_DVB_TTUSB_DEC is not set -# CONFIG_SMS_USB_DRV is not set -# CONFIG_DVB_B2C2_FLEXCOP_USB is not set -# CONFIG_DVB_AS102 is not set # # Webcam, TV (analog/digital) USB devices @@ -3529,10 +3598,10 @@ CONFIG_VIDEO_TW686X=m # # Media capture/analog TV support # +# CONFIG_VIDEO_DT3155 is not set # CONFIG_VIDEO_HEXIUM_GEMINI is not set # CONFIG_VIDEO_HEXIUM_ORION is not set # CONFIG_VIDEO_MXB is not set -# CONFIG_VIDEO_DT3155 is not set # # Media capture/analog/hybrid TV support @@ -3544,30 +3613,110 @@ CONFIG_VIDEO_TW686X=m # # Media digital TV PCI Adapters # -# CONFIG_DVB_BUDGET_CORE is not set # CONFIG_DVB_B2C2_FLEXCOP_PCI is not set +# CONFIG_DVB_DDBRIDGE is not set +# CONFIG_DVB_NETUP_UNIDVB is not set +# CONFIG_DVB_NGENE is not set # CONFIG_DVB_PLUTO2 is not set # CONFIG_DVB_PT1 is not set # CONFIG_DVB_PT3 is not set -# CONFIG_DVB_NGENE is not set -# CONFIG_DVB_DDBRIDGE is not set -# CONFIG_DVB_NETUP_UNIDVB is not set +# CONFIG_DVB_BUDGET_CORE is not set # CONFIG_VIDEO_IPU3_CIO2 is not set # CONFIG_RADIO_ADAPTERS is not set -CONFIG_VIDEOBUF2_CORE=m -CONFIG_VIDEOBUF2_V4L2=m -CONFIG_VIDEOBUF2_MEMOPS=m -CONFIG_VIDEOBUF2_DMA_CONTIG=m -CONFIG_VIDEOBUF2_VMALLOC=m -CONFIG_VIDEOBUF2_DMA_SG=m +CONFIG_MEDIA_PLATFORM_DRIVERS=y CONFIG_V4L_PLATFORM_DRIVERS=y -# CONFIG_VIDEO_CAFE_CCIC is not set -# CONFIG_VIDEO_CADENCE is not set -# CONFIG_VIDEO_ASPEED is not set +# CONFIG_SDR_PLATFORM_DRIVERS is not set +# CONFIG_DVB_PLATFORM_DRIVERS is not set CONFIG_V4L_MEM2MEM_DRIVERS=y # CONFIG_VIDEO_MEM2MEM_DEINTERLACE is not set -# CONFIG_DVB_PLATFORM_DRIVERS is not set -# CONFIG_SDR_PLATFORM_DRIVERS is not set + +# +# Allegro DVT media platform drivers +# + +# +# Amlogic media platform drivers +# + +# +# Amphion drivers +# + +# +# Aspeed media platform drivers +# +# CONFIG_VIDEO_ASPEED is not set + +# +# Atmel media platform drivers +# + +# +# Cadence media platform drivers +# +# CONFIG_VIDEO_CADENCE_CSI2RX is not set +# CONFIG_VIDEO_CADENCE_CSI2TX is not set + +# +# Chips&Media media platform drivers +# + +# +# Intel media platform drivers +# + +# +# Marvell media platform drivers +# +# CONFIG_VIDEO_CAFE_CCIC is not set + +# +# Mediatek media platform drivers +# + +# +# NVidia media platform drivers +# + +# +# NXP media platform drivers +# + +# +# Qualcomm media platform drivers +# + +# +# Renesas media platform drivers +# + +# +# Rockchip media platform drivers +# + +# +# Samsung media platform drivers +# + +# +# STMicroelectronics media platform drivers +# + +# +# Sunxi media platform drivers +# + +# +# Texas Instruments drivers +# + +# +# VIA media platform drivers +# + +# +# Xilinx media platform drivers +# # # MMC/SDIO DVB adapters @@ -3580,6 +3729,12 @@ CONFIG_V4L_MEM2MEM_DRIVERS=y # FireWire (IEEE 1394) Adapters # # CONFIG_DVB_FIREDTV is not set +CONFIG_VIDEOBUF2_CORE=m +CONFIG_VIDEOBUF2_V4L2=m +CONFIG_VIDEOBUF2_MEMOPS=m +CONFIG_VIDEOBUF2_DMA_CONTIG=m +CONFIG_VIDEOBUF2_VMALLOC=m +CONFIG_VIDEOBUF2_DMA_SG=m # end of Media drivers # @@ -3587,25 +3742,108 @@ CONFIG_V4L_MEM2MEM_DRIVERS=y # CONFIG_MEDIA_ATTACH=y +# +# Camera sensor devices +# +# CONFIG_VIDEO_HI556 is not set +# CONFIG_VIDEO_HI846 is not set +# CONFIG_VIDEO_HI847 is not set +# CONFIG_VIDEO_IMX214 is not set +# CONFIG_VIDEO_IMX219 is not set +# CONFIG_VIDEO_IMX258 is not set +# CONFIG_VIDEO_IMX274 is not set +# CONFIG_VIDEO_IMX290 is not set +# CONFIG_VIDEO_IMX319 is not set +# CONFIG_VIDEO_IMX355 is not set +# CONFIG_VIDEO_MT9M001 is not set +# CONFIG_VIDEO_MT9M032 is not set +# CONFIG_VIDEO_MT9M111 is not set +# CONFIG_VIDEO_MT9P031 is not set +# CONFIG_VIDEO_MT9T001 is not set +# CONFIG_VIDEO_MT9T112 is not set +# CONFIG_VIDEO_MT9V011 is not set +# CONFIG_VIDEO_MT9V032 is not set +# CONFIG_VIDEO_MT9V111 is not set +# CONFIG_VIDEO_NOON010PC30 is not set +# CONFIG_VIDEO_OG01A1B is not set +# CONFIG_VIDEO_OV02A10 is not set +# CONFIG_VIDEO_OV08D10 is not set +# CONFIG_VIDEO_OV13858 is not set +# CONFIG_VIDEO_OV13B10 is not set +# CONFIG_VIDEO_OV2640 is not set +# CONFIG_VIDEO_OV2659 is not set +# CONFIG_VIDEO_OV2680 is not set +# CONFIG_VIDEO_OV2685 is not set +# CONFIG_VIDEO_OV2740 is not set +# CONFIG_VIDEO_OV5647 is not set +# CONFIG_VIDEO_OV5648 is not set +# CONFIG_VIDEO_OV5670 is not set +# CONFIG_VIDEO_OV5675 is not set +# CONFIG_VIDEO_OV5693 is not set +# CONFIG_VIDEO_OV5695 is not set +# CONFIG_VIDEO_OV6650 is not set +# CONFIG_VIDEO_OV7251 is not set +# CONFIG_VIDEO_OV7640 is not set +# CONFIG_VIDEO_OV7670 is not set +# CONFIG_VIDEO_OV772X is not set +# CONFIG_VIDEO_OV7740 is not set +# CONFIG_VIDEO_OV8856 is not set +# CONFIG_VIDEO_OV8865 is not set +# CONFIG_VIDEO_OV9640 is not set +# CONFIG_VIDEO_OV9650 is not set +# CONFIG_VIDEO_OV9734 is not set +# CONFIG_VIDEO_RDACM20 is not set +# CONFIG_VIDEO_RDACM21 is not set +# CONFIG_VIDEO_RJ54N1 is not set +# CONFIG_VIDEO_S5C73M3 is not set +# CONFIG_VIDEO_S5K4ECGX is not set +# CONFIG_VIDEO_S5K5BAF is not set +# CONFIG_VIDEO_S5K6A3 is not set +# CONFIG_VIDEO_S5K6AA is not set +# CONFIG_VIDEO_SR030PC30 is not set +# CONFIG_VIDEO_VS6624 is not set +# CONFIG_VIDEO_CCS is not set +# CONFIG_VIDEO_ET8EK8 is not set +# CONFIG_VIDEO_M5MOLS is not set +# end of Camera sensor devices + +# +# Lens drivers +# +# CONFIG_VIDEO_AD5820 is not set +# CONFIG_VIDEO_AK7375 is not set +# CONFIG_VIDEO_DW9714 is not set +# CONFIG_VIDEO_DW9768 is not set +# CONFIG_VIDEO_DW9807_VCM is not set +# end of Lens drivers + +# +# Flash devices +# +# CONFIG_VIDEO_ADP1653 is not set +# CONFIG_VIDEO_LM3560 is not set +# CONFIG_VIDEO_LM3646 is not set +# end of Flash devices + # # Audio decoders, processors and mixers # -# CONFIG_VIDEO_TVAUDIO is not set -# CONFIG_VIDEO_TDA7432 is not set -# CONFIG_VIDEO_TDA9840 is not set -# CONFIG_VIDEO_TDA1997X is not set -# CONFIG_VIDEO_TEA6415C is not set -# CONFIG_VIDEO_TEA6420 is not set -# CONFIG_VIDEO_MSP3400 is not set # CONFIG_VIDEO_CS3308 is not set # CONFIG_VIDEO_CS5345 is not set # CONFIG_VIDEO_CS53L32A is not set -# CONFIG_VIDEO_TLV320AIC23B is not set -# CONFIG_VIDEO_UDA1342 is not set -# CONFIG_VIDEO_WM8775 is not set -# CONFIG_VIDEO_WM8739 is not set -# CONFIG_VIDEO_VP27SMPX is not set +# CONFIG_VIDEO_MSP3400 is not set # CONFIG_VIDEO_SONY_BTF_MPX is not set +# CONFIG_VIDEO_TDA1997X is not set +# CONFIG_VIDEO_TDA7432 is not set +# CONFIG_VIDEO_TDA9840 is not set +# CONFIG_VIDEO_TEA6415C is not set +# CONFIG_VIDEO_TEA6420 is not set +# CONFIG_VIDEO_TLV320AIC23B is not set +# CONFIG_VIDEO_TVAUDIO is not set +# CONFIG_VIDEO_UDA1342 is not set +# CONFIG_VIDEO_VP27SMPX is not set +# CONFIG_VIDEO_WM8739 is not set +# CONFIG_VIDEO_WM8775 is not set # end of Audio decoders, processors and mixers # @@ -3648,15 +3886,15 @@ CONFIG_MEDIA_ATTACH=y # # Video encoders # -# CONFIG_VIDEO_SAA7127 is not set -# CONFIG_VIDEO_SAA7185 is not set +# CONFIG_VIDEO_AD9389B is not set # CONFIG_VIDEO_ADV7170 is not set # CONFIG_VIDEO_ADV7175 is not set # CONFIG_VIDEO_ADV7343 is not set # CONFIG_VIDEO_ADV7393 is not set # CONFIG_VIDEO_ADV7511 is not set -# CONFIG_VIDEO_AD9389B is not set # CONFIG_VIDEO_AK881X is not set +# CONFIG_VIDEO_SAA7127 is not set +# CONFIG_VIDEO_SAA7185 is not set # CONFIG_VIDEO_THS8200 is not set # end of Video encoders @@ -3682,99 +3920,17 @@ CONFIG_MEDIA_ATTACH=y # # Miscellaneous helper chips # -# CONFIG_VIDEO_THS7303 is not set -# CONFIG_VIDEO_M52790 is not set # CONFIG_VIDEO_I2C is not set +# CONFIG_VIDEO_M52790 is not set # CONFIG_VIDEO_ST_MIPID02 is not set +# CONFIG_VIDEO_THS7303 is not set # end of Miscellaneous helper chips -# -# Camera sensor devices -# -# CONFIG_VIDEO_HI556 is not set -# CONFIG_VIDEO_IMX214 is not set -# CONFIG_VIDEO_IMX219 is not set -# CONFIG_VIDEO_IMX258 is not set -# CONFIG_VIDEO_IMX274 is not set -# CONFIG_VIDEO_IMX290 is not set -# CONFIG_VIDEO_IMX319 is not set -# CONFIG_VIDEO_IMX355 is not set -# CONFIG_VIDEO_OV02A10 is not set -# CONFIG_VIDEO_OV2640 is not set -# CONFIG_VIDEO_OV2659 is not set -# CONFIG_VIDEO_OV2680 is not set -# CONFIG_VIDEO_OV2685 is not set -# CONFIG_VIDEO_OV2740 is not set -# CONFIG_VIDEO_OV5647 is not set -# CONFIG_VIDEO_OV5648 is not set -# CONFIG_VIDEO_OV6650 is not set -# CONFIG_VIDEO_OV5670 is not set -# CONFIG_VIDEO_OV5675 is not set -# CONFIG_VIDEO_OV5695 is not set -# CONFIG_VIDEO_OV7251 is not set -# CONFIG_VIDEO_OV772X is not set -# CONFIG_VIDEO_OV7640 is not set -# CONFIG_VIDEO_OV7670 is not set -# CONFIG_VIDEO_OV7740 is not set -# CONFIG_VIDEO_OV8856 is not set -# CONFIG_VIDEO_OV8865 is not set -# CONFIG_VIDEO_OV9640 is not set -# CONFIG_VIDEO_OV9650 is not set -# CONFIG_VIDEO_OV9734 is not set -# CONFIG_VIDEO_OV13858 is not set -# CONFIG_VIDEO_VS6624 is not set -# CONFIG_VIDEO_MT9M001 is not set -# CONFIG_VIDEO_MT9M032 is not set -# CONFIG_VIDEO_MT9M111 is not set -# CONFIG_VIDEO_MT9P031 is not set -# CONFIG_VIDEO_MT9T001 is not set -# CONFIG_VIDEO_MT9T112 is not set -# CONFIG_VIDEO_MT9V011 is not set -# CONFIG_VIDEO_MT9V032 is not set -# CONFIG_VIDEO_MT9V111 is not set -# CONFIG_VIDEO_SR030PC30 is not set -# CONFIG_VIDEO_NOON010PC30 is not set -# CONFIG_VIDEO_M5MOLS is not set -# CONFIG_VIDEO_RDACM20 is not set -# CONFIG_VIDEO_RDACM21 is not set -# CONFIG_VIDEO_RJ54N1 is not set -# CONFIG_VIDEO_S5K6AA is not set -# CONFIG_VIDEO_S5K6A3 is not set -# CONFIG_VIDEO_S5K4ECGX is not set -# CONFIG_VIDEO_S5K5BAF is not set -# CONFIG_VIDEO_CCS is not set -# CONFIG_VIDEO_ET8EK8 is not set -# CONFIG_VIDEO_S5C73M3 is not set -# end of Camera sensor devices - -# -# Lens drivers -# -# CONFIG_VIDEO_AD5820 is not set -# CONFIG_VIDEO_AK7375 is not set -# CONFIG_VIDEO_DW9714 is not set -# CONFIG_VIDEO_DW9768 is not set -# CONFIG_VIDEO_DW9807_VCM is not set -# end of Lens drivers - -# -# Flash devices -# -# CONFIG_VIDEO_ADP1653 is not set -# CONFIG_VIDEO_LM3560 is not set -# CONFIG_VIDEO_LM3646 is not set -# end of Flash devices - -# -# SPI helper chips -# -# CONFIG_VIDEO_GS1662 is not set -# end of SPI helper chips - # # Media SPI Adapters # # CONFIG_CXD2880_SPI_DRV is not set +# CONFIG_VIDEO_GS1662 is not set # end of Media SPI Adapters CONFIG_MEDIA_TUNER=m @@ -3782,43 +3938,43 @@ CONFIG_MEDIA_TUNER=m # # Customize TV tuners # -CONFIG_MEDIA_TUNER_SIMPLE=m -# CONFIG_MEDIA_TUNER_TDA18250 is not set -CONFIG_MEDIA_TUNER_TDA8290=m -CONFIG_MEDIA_TUNER_TDA827X=m -CONFIG_MEDIA_TUNER_TDA18271=m -CONFIG_MEDIA_TUNER_TDA9887=m -CONFIG_MEDIA_TUNER_TEA5761=m -CONFIG_MEDIA_TUNER_TEA5767=m -# CONFIG_MEDIA_TUNER_MSI001 is not set -CONFIG_MEDIA_TUNER_MT20XX=m -# CONFIG_MEDIA_TUNER_MT2060 is not set -# CONFIG_MEDIA_TUNER_MT2063 is not set -# CONFIG_MEDIA_TUNER_MT2266 is not set -# CONFIG_MEDIA_TUNER_MT2131 is not set -# CONFIG_MEDIA_TUNER_QT1010 is not set -CONFIG_MEDIA_TUNER_XC2028=m -CONFIG_MEDIA_TUNER_XC5000=m -CONFIG_MEDIA_TUNER_XC4000=m -# CONFIG_MEDIA_TUNER_MXL5005S is not set -# CONFIG_MEDIA_TUNER_MXL5007T is not set -CONFIG_MEDIA_TUNER_MC44S803=m -# CONFIG_MEDIA_TUNER_MAX2165 is not set -# CONFIG_MEDIA_TUNER_TDA18218 is not set +# CONFIG_MEDIA_TUNER_E4000 is not set # CONFIG_MEDIA_TUNER_FC0011 is not set # CONFIG_MEDIA_TUNER_FC0012 is not set # CONFIG_MEDIA_TUNER_FC0013 is not set -# CONFIG_MEDIA_TUNER_TDA18212 is not set -# CONFIG_MEDIA_TUNER_E4000 is not set # CONFIG_MEDIA_TUNER_FC2580 is not set -# CONFIG_MEDIA_TUNER_M88RS6000T is not set -# CONFIG_MEDIA_TUNER_TUA9001 is not set -# CONFIG_MEDIA_TUNER_SI2157 is not set # CONFIG_MEDIA_TUNER_IT913X is not set -# CONFIG_MEDIA_TUNER_R820T is not set +# CONFIG_MEDIA_TUNER_M88RS6000T is not set +# CONFIG_MEDIA_TUNER_MAX2165 is not set +CONFIG_MEDIA_TUNER_MC44S803=m +# CONFIG_MEDIA_TUNER_MSI001 is not set +# CONFIG_MEDIA_TUNER_MT2060 is not set +# CONFIG_MEDIA_TUNER_MT2063 is not set +CONFIG_MEDIA_TUNER_MT20XX=m +# CONFIG_MEDIA_TUNER_MT2131 is not set +# CONFIG_MEDIA_TUNER_MT2266 is not set # CONFIG_MEDIA_TUNER_MXL301RF is not set -# CONFIG_MEDIA_TUNER_QM1D1C0042 is not set +# CONFIG_MEDIA_TUNER_MXL5005S is not set +# CONFIG_MEDIA_TUNER_MXL5007T is not set # CONFIG_MEDIA_TUNER_QM1D1B0004 is not set +# CONFIG_MEDIA_TUNER_QM1D1C0042 is not set +# CONFIG_MEDIA_TUNER_QT1010 is not set +# CONFIG_MEDIA_TUNER_R820T is not set +# CONFIG_MEDIA_TUNER_SI2157 is not set +CONFIG_MEDIA_TUNER_SIMPLE=m +# CONFIG_MEDIA_TUNER_TDA18212 is not set +# CONFIG_MEDIA_TUNER_TDA18218 is not set +# CONFIG_MEDIA_TUNER_TDA18250 is not set +CONFIG_MEDIA_TUNER_TDA18271=m +CONFIG_MEDIA_TUNER_TDA827X=m +CONFIG_MEDIA_TUNER_TDA8290=m +CONFIG_MEDIA_TUNER_TDA9887=m +CONFIG_MEDIA_TUNER_TEA5761=m +CONFIG_MEDIA_TUNER_TEA5767=m +# CONFIG_MEDIA_TUNER_TUA9001 is not set +CONFIG_MEDIA_TUNER_XC2028=m +CONFIG_MEDIA_TUNER_XC4000=m +CONFIG_MEDIA_TUNER_XC5000=m # end of Customize TV tuners # @@ -3828,123 +3984,123 @@ CONFIG_MEDIA_TUNER_MC44S803=m # # Multistandard (satellite) frontends # +# CONFIG_DVB_M88DS3103 is not set +# CONFIG_DVB_MXL5XX is not set # CONFIG_DVB_STB0899 is not set # CONFIG_DVB_STB6100 is not set # CONFIG_DVB_STV090x is not set # CONFIG_DVB_STV0910 is not set # CONFIG_DVB_STV6110x is not set # CONFIG_DVB_STV6111 is not set -# CONFIG_DVB_MXL5XX is not set -# CONFIG_DVB_M88DS3103 is not set # # Multistandard (cable + terrestrial) frontends # # CONFIG_DVB_DRXK is not set -# CONFIG_DVB_TDA18271C2DD is not set -# CONFIG_DVB_SI2165 is not set # CONFIG_DVB_MN88472 is not set # CONFIG_DVB_MN88473 is not set +# CONFIG_DVB_SI2165 is not set +# CONFIG_DVB_TDA18271C2DD is not set # # DVB-S (satellite) frontends # # CONFIG_DVB_CX24110 is not set -# CONFIG_DVB_CX24123 is not set -# CONFIG_DVB_MT312 is not set -# CONFIG_DVB_ZL10036 is not set -# CONFIG_DVB_ZL10039 is not set -# CONFIG_DVB_S5H1420 is not set -# CONFIG_DVB_STV0288 is not set -# CONFIG_DVB_STB6000 is not set -# CONFIG_DVB_STV0299 is not set -# CONFIG_DVB_STV6110 is not set -# CONFIG_DVB_STV0900 is not set -# CONFIG_DVB_TDA8083 is not set -# CONFIG_DVB_TDA10086 is not set -# CONFIG_DVB_TDA8261 is not set -# CONFIG_DVB_VES1X93 is not set -# CONFIG_DVB_TUNER_ITD1000 is not set -# CONFIG_DVB_TUNER_CX24113 is not set -# CONFIG_DVB_TDA826X is not set -# CONFIG_DVB_TUA6100 is not set # CONFIG_DVB_CX24116 is not set # CONFIG_DVB_CX24117 is not set # CONFIG_DVB_CX24120 is not set -# CONFIG_DVB_SI21XX is not set -# CONFIG_DVB_TS2020 is not set +# CONFIG_DVB_CX24123 is not set # CONFIG_DVB_DS3000 is not set # CONFIG_DVB_MB86A16 is not set +# CONFIG_DVB_MT312 is not set +# CONFIG_DVB_S5H1420 is not set +# CONFIG_DVB_SI21XX is not set +# CONFIG_DVB_STB6000 is not set +# CONFIG_DVB_STV0288 is not set +# CONFIG_DVB_STV0299 is not set +# CONFIG_DVB_STV0900 is not set +# CONFIG_DVB_STV6110 is not set # CONFIG_DVB_TDA10071 is not set +# CONFIG_DVB_TDA10086 is not set +# CONFIG_DVB_TDA8083 is not set +# CONFIG_DVB_TDA8261 is not set +# CONFIG_DVB_TDA826X is not set +# CONFIG_DVB_TS2020 is not set +# CONFIG_DVB_TUA6100 is not set +# CONFIG_DVB_TUNER_CX24113 is not set +# CONFIG_DVB_TUNER_ITD1000 is not set +# CONFIG_DVB_VES1X93 is not set +# CONFIG_DVB_ZL10036 is not set +# CONFIG_DVB_ZL10039 is not set # # DVB-T (terrestrial) frontends # -# CONFIG_DVB_SP887X is not set +# CONFIG_DVB_AF9013 is not set # CONFIG_DVB_CX22700 is not set # CONFIG_DVB_CX22702 is not set -# CONFIG_DVB_S5H1432 is not set -# CONFIG_DVB_DRXD is not set -# CONFIG_DVB_L64781 is not set -# CONFIG_DVB_TDA1004X is not set -# CONFIG_DVB_NXT6000 is not set -# CONFIG_DVB_MT352 is not set -# CONFIG_DVB_ZL10353 is not set +# CONFIG_DVB_CXD2820R is not set +# CONFIG_DVB_CXD2841ER is not set # CONFIG_DVB_DIB3000MB is not set # CONFIG_DVB_DIB3000MC is not set # CONFIG_DVB_DIB7000M is not set # CONFIG_DVB_DIB7000P is not set # CONFIG_DVB_DIB9000 is not set -# CONFIG_DVB_TDA10048 is not set -# CONFIG_DVB_AF9013 is not set +# CONFIG_DVB_DRXD is not set # CONFIG_DVB_EC100 is not set -# CONFIG_DVB_STV0367 is not set -# CONFIG_DVB_CXD2820R is not set -# CONFIG_DVB_CXD2841ER is not set +# CONFIG_DVB_L64781 is not set +# CONFIG_DVB_MT352 is not set +# CONFIG_DVB_NXT6000 is not set # CONFIG_DVB_RTL2830 is not set # CONFIG_DVB_RTL2832 is not set # CONFIG_DVB_RTL2832_SDR is not set +# CONFIG_DVB_S5H1432 is not set # CONFIG_DVB_SI2168 is not set +# CONFIG_DVB_SP887X is not set +# CONFIG_DVB_STV0367 is not set +# CONFIG_DVB_TDA10048 is not set +# CONFIG_DVB_TDA1004X is not set # CONFIG_DVB_ZD1301_DEMOD is not set +# CONFIG_DVB_ZL10353 is not set # CONFIG_DVB_CXD2880 is not set # # DVB-C (cable) frontends # -# CONFIG_DVB_VES1820 is not set +# CONFIG_DVB_STV0297 is not set # CONFIG_DVB_TDA10021 is not set # CONFIG_DVB_TDA10023 is not set -# CONFIG_DVB_STV0297 is not set +# CONFIG_DVB_VES1820 is not set # # ATSC (North American/Korean Terrestrial/Cable DTV) frontends # -# CONFIG_DVB_NXT200X is not set -# CONFIG_DVB_OR51211 is not set -# CONFIG_DVB_OR51132 is not set -# CONFIG_DVB_BCM3510 is not set -# CONFIG_DVB_LGDT330X is not set -# CONFIG_DVB_LGDT3305 is not set -# CONFIG_DVB_LGDT3306A is not set -# CONFIG_DVB_LG2160 is not set -# CONFIG_DVB_S5H1409 is not set # CONFIG_DVB_AU8522_DTV is not set # CONFIG_DVB_AU8522_V4L is not set -# CONFIG_DVB_S5H1411 is not set +# CONFIG_DVB_BCM3510 is not set +# CONFIG_DVB_LG2160 is not set +# CONFIG_DVB_LGDT3305 is not set +# CONFIG_DVB_LGDT3306A is not set +# CONFIG_DVB_LGDT330X is not set # CONFIG_DVB_MXL692 is not set +# CONFIG_DVB_NXT200X is not set +# CONFIG_DVB_OR51132 is not set +# CONFIG_DVB_OR51211 is not set +# CONFIG_DVB_S5H1409 is not set +# CONFIG_DVB_S5H1411 is not set # # ISDB-T (terrestrial) frontends # -# CONFIG_DVB_S921 is not set # CONFIG_DVB_DIB8000 is not set # CONFIG_DVB_MB86A20S is not set +# CONFIG_DVB_S921 is not set # # ISDB-S (satellite) & ISDB-T (terrestrial) frontends # -# CONFIG_DVB_TC90522 is not set # CONFIG_DVB_MN88443X is not set +# CONFIG_DVB_TC90522 is not set # # Digital terrestrial only tuners/PLL @@ -3956,25 +4112,25 @@ CONFIG_MEDIA_TUNER_MC44S803=m # # SEC control devices for DVB-S # -# CONFIG_DVB_DRX39XYJ is not set +# CONFIG_DVB_A8293 is not set +# CONFIG_DVB_AF9033 is not set +# CONFIG_DVB_ASCOT2E is not set +# CONFIG_DVB_ATBM8830 is not set +# CONFIG_DVB_HELENE is not set +# CONFIG_DVB_HORUS3A is not set +# CONFIG_DVB_ISL6405 is not set +# CONFIG_DVB_ISL6421 is not set +# CONFIG_DVB_ISL6423 is not set +# CONFIG_DVB_IX2505V is not set +# CONFIG_DVB_LGS8GL5 is not set +# CONFIG_DVB_LGS8GXX is not set # CONFIG_DVB_LNBH25 is not set # CONFIG_DVB_LNBH29 is not set # CONFIG_DVB_LNBP21 is not set # CONFIG_DVB_LNBP22 is not set -# CONFIG_DVB_ISL6405 is not set -# CONFIG_DVB_ISL6421 is not set -# CONFIG_DVB_ISL6423 is not set -# CONFIG_DVB_A8293 is not set -# CONFIG_DVB_LGS8GL5 is not set -# CONFIG_DVB_LGS8GXX is not set -# CONFIG_DVB_ATBM8830 is not set -# CONFIG_DVB_TDA665x is not set -# CONFIG_DVB_IX2505V is not set # CONFIG_DVB_M88RS2000 is not set -# CONFIG_DVB_AF9033 is not set -# CONFIG_DVB_HORUS3A is not set -# CONFIG_DVB_ASCOT2E is not set -# CONFIG_DVB_HELENE is not set +# CONFIG_DVB_TDA665x is not set +# CONFIG_DVB_DRX39XYJ is not set # # Common Interface (EN50221) controller drivers @@ -3998,22 +4154,23 @@ CONFIG_AGP_INTEL=y CONFIG_AGP_SIS=y CONFIG_AGP_VIA=y CONFIG_INTEL_GTT=y -CONFIG_VGA_ARB=y -CONFIG_VGA_ARB_MAX_GPUS=16 # CONFIG_VGA_SWITCHEROO is not set CONFIG_DRM=y CONFIG_DRM_MIPI_DSI=y # CONFIG_DRM_DP_AUX_CHARDEV is not set # CONFIG_DRM_DEBUG_MM is not set # CONFIG_DRM_DEBUG_SELFTEST is not set +CONFIG_DRM_DP_HELPER=y CONFIG_DRM_KMS_HELPER=y # CONFIG_DRM_DEBUG_DP_MST_TOPOLOGY_REFS is not set +# CONFIG_DRM_DEBUG_MODESET_LOCK is not set CONFIG_DRM_FBDEV_EMULATION=y CONFIG_DRM_FBDEV_OVERALLOC=100 # CONFIG_DRM_FBDEV_LEAK_PHYS_SMEM is not set # CONFIG_DRM_LOAD_EDID_FIRMWARE is not set # CONFIG_DRM_DP_CEC is not set CONFIG_DRM_TTM=y +CONFIG_DRM_BUDDY=y CONFIG_DRM_VRAM_HELPER=y CONFIG_DRM_TTM_HELPER=y CONFIG_DRM_GEM_SHMEM_HELPER=y @@ -4131,8 +4288,10 @@ CONFIG_DRM_PANEL_BRIDGE=y CONFIG_DRM_BOCHS=y CONFIG_DRM_CIRRUS_QEMU=y # CONFIG_DRM_GM12U320 is not set +# CONFIG_DRM_PANEL_MIPI_DBI is not set # CONFIG_DRM_SIMPLEDRM is not set # CONFIG_TINYDRM_HX8357D is not set +# CONFIG_TINYDRM_ILI9163 is not set # CONFIG_TINYDRM_ILI9225 is not set # CONFIG_TINYDRM_ILI9341 is not set # CONFIG_TINYDRM_ILI9486 is not set @@ -4142,8 +4301,11 @@ CONFIG_DRM_CIRRUS_QEMU=y # CONFIG_TINYDRM_ST7735R is not set # CONFIG_DRM_VBOXVIDEO is not set # CONFIG_DRM_GUD is not set +# CONFIG_DRM_SSD130X is not set # CONFIG_DRM_LEGACY is not set CONFIG_DRM_PANEL_ORIENTATION_QUIRKS=y +CONFIG_DRM_NOMODESET=y +CONFIG_DRM_PRIVACY_SCREEN=y # # Frame buffer Devices @@ -4246,6 +4408,7 @@ CONFIG_DUMMY_CONSOLE=y CONFIG_DUMMY_CONSOLE_COLUMNS=80 CONFIG_DUMMY_CONSOLE_ROWS=25 CONFIG_FRAMEBUFFER_CONSOLE=y +# CONFIG_FRAMEBUFFER_CONSOLE_LEGACY_ACCELERATION is not set CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y # CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set # CONFIG_FRAMEBUFFER_CONSOLE_DEFERRED_TAKEOVER is not set @@ -4369,6 +4532,8 @@ CONFIG_SND_HDA_HWDEP=y CONFIG_SND_HDA_RECONFIG=y # CONFIG_SND_HDA_INPUT_BEEP is not set # CONFIG_SND_HDA_PATCH_LOADER is not set +# CONFIG_SND_HDA_SCODEC_CS35L41_I2C is not set +# CONFIG_SND_HDA_SCODEC_CS35L41_SPI is not set CONFIG_SND_HDA_CODEC_REALTEK=m CONFIG_SND_HDA_CODEC_ANALOG=m # CONFIG_SND_HDA_CODEC_SIGMATEL is not set @@ -4421,6 +4586,10 @@ CONFIG_SND_SOC_ACPI=m # CONFIG_SND_SOC_AMD_ACP3x is not set # CONFIG_SND_SOC_AMD_RENOIR is not set CONFIG_SND_SOC_AMD_ACP5x=m +# CONFIG_SND_SOC_AMD_VANGOGH_MACH is not set +# CONFIG_SND_SOC_AMD_ACP6x is not set +# CONFIG_SND_AMD_ACP_CONFIG is not set +# CONFIG_SND_SOC_AMD_ACP_COMMON is not set # CONFIG_SND_ATMEL_SOC is not set # CONFIG_SND_BCM63XX_I2S_WHISTLER is not set # CONFIG_SND_DESIGNWARE_I2S is not set @@ -4465,10 +4634,12 @@ CONFIG_SND_SOC_INTEL_SKYLAKE_SSP_CLK=m CONFIG_SND_SOC_INTEL_SKYLAKE_HDAUDIO_CODEC=y CONFIG_SND_SOC_INTEL_SKYLAKE_COMMON=m CONFIG_SND_SOC_ACPI_INTEL_MATCH=m +CONFIG_SND_SOC_INTEL_AVS=m CONFIG_SND_SOC_INTEL_MACH=y # CONFIG_SND_SOC_INTEL_USER_FRIENDLY_LONG_NAMES is not set CONFIG_SND_SOC_INTEL_HDA_DSP_COMMON=m CONFIG_SND_SOC_INTEL_SOF_MAXIM_COMMON=m +CONFIG_SND_SOC_INTEL_SOF_REALTEK_COMMON=m CONFIG_SND_SOC_INTEL_HASWELL_MACH=m CONFIG_SND_SOC_INTEL_BDW_RT5650_MACH=m CONFIG_SND_SOC_INTEL_BDW_RT5677_MACH=m @@ -4502,9 +4673,12 @@ CONFIG_SND_SOC_INTEL_SKL_HDA_DSP_GENERIC_MACH=m CONFIG_SND_SOC_INTEL_SOF_RT5682_MACH=m CONFIG_SND_SOC_INTEL_SOF_CS42L42_MACH=m CONFIG_SND_SOC_INTEL_SOF_PCM512x_MACH=m +# CONFIG_SND_SOC_INTEL_SOF_ES8336_MACH is not set +# CONFIG_SND_SOC_INTEL_SOF_NAU8825_MACH is not set CONFIG_SND_SOC_INTEL_CML_LP_DA7219_MAX98357A_MACH=m CONFIG_SND_SOC_INTEL_SOF_CML_RT1011_RT5682_MACH=m CONFIG_SND_SOC_INTEL_SOF_DA7219_MAX98373_MACH=m +# CONFIG_SND_SOC_INTEL_SOF_SSP_AMP_MACH is not set CONFIG_SND_SOC_INTEL_EHL_RT5660_MACH=m # CONFIG_SND_SOC_MTK_BTCVSD is not set CONFIG_SND_SOC_SOF_TOPLEVEL=y @@ -4512,10 +4686,12 @@ CONFIG_SND_SOC_SOF_PCI_DEV=m CONFIG_SND_SOC_SOF_PCI=m CONFIG_SND_SOC_SOF_ACPI=m CONFIG_SND_SOC_SOF_ACPI_DEV=m -# CONFIG_SND_SOC_SOF_DEBUG_PROBES is not set +CONFIG_SND_SOC_SOF_DEBUG_PROBES=m +CONFIG_SND_SOC_SOF_CLIENT=m # CONFIG_SND_SOC_SOF_DEVELOPER_SUPPORT is not set CONFIG_SND_SOC_SOF=m CONFIG_SND_SOC_SOF_PROBE_WORK_QUEUE=y +# CONFIG_SND_SOC_SOF_AMD_TOPLEVEL is not set CONFIG_SND_SOC_SOF_INTEL_TOPLEVEL=y CONFIG_SND_SOC_SOF_INTEL_HIFI_EP_IPC=m CONFIG_SND_SOC_SOF_INTEL_ATOM_HIFI_EP=m @@ -4542,6 +4718,7 @@ CONFIG_SND_SOC_SOF_HDA_LINK=y CONFIG_SND_SOC_SOF_HDA_AUDIO_CODEC=y CONFIG_SND_SOC_SOF_HDA_LINK_BASELINE=m CONFIG_SND_SOC_SOF_HDA=m +CONFIG_SND_SOC_SOF_HDA_PROBES=y CONFIG_SND_SOC_SOF_INTEL_SOUNDWIRE_LINK_BASELINE=m CONFIG_SND_SOC_SOF_XTENSA=m @@ -4570,6 +4747,7 @@ CONFIG_SND_SOC_AC97_CODEC=m # CONFIG_SND_SOC_ADAU7118_I2C is not set # CONFIG_SND_SOC_AK4104 is not set # CONFIG_SND_SOC_AK4118 is not set +# CONFIG_SND_SOC_AK4375 is not set # CONFIG_SND_SOC_AK4458 is not set # CONFIG_SND_SOC_AK4554 is not set # CONFIG_SND_SOC_AK4613 is not set @@ -4577,6 +4755,7 @@ CONFIG_SND_SOC_AC97_CODEC=m # CONFIG_SND_SOC_AK5386 is not set # CONFIG_SND_SOC_AK5558 is not set # CONFIG_SND_SOC_ALC5623 is not set +# CONFIG_SND_SOC_AW8738 is not set # CONFIG_SND_SOC_BD28623 is not set # CONFIG_SND_SOC_BT_SCO is not set # CONFIG_SND_SOC_CS35L32 is not set @@ -4584,6 +4763,8 @@ CONFIG_SND_SOC_AC97_CODEC=m # CONFIG_SND_SOC_CS35L34 is not set # CONFIG_SND_SOC_CS35L35 is not set # CONFIG_SND_SOC_CS35L36 is not set +# CONFIG_SND_SOC_CS35L41_SPI is not set +# CONFIG_SND_SOC_CS35L41_I2C is not set CONFIG_SND_SOC_CS42L42=m # CONFIG_SND_SOC_CS42L51_I2C is not set # CONFIG_SND_SOC_CS42L52 is not set @@ -4620,6 +4801,7 @@ CONFIG_SND_SOC_MAX98357A=m # CONFIG_SND_SOC_MAX98504 is not set # CONFIG_SND_SOC_MAX9867 is not set CONFIG_SND_SOC_MAX98927=m +# CONFIG_SND_SOC_MAX98520 is not set CONFIG_SND_SOC_MAX98373=m CONFIG_SND_SOC_MAX98373_I2C=m CONFIG_SND_SOC_MAX98390=m @@ -4662,6 +4844,8 @@ CONFIG_SND_SOC_RT5677=m CONFIG_SND_SOC_RT5677_SPI=m CONFIG_SND_SOC_RT5682=m CONFIG_SND_SOC_RT5682_I2C=m +CONFIG_SND_SOC_RT5682S=m +# CONFIG_SND_SOC_RT9120 is not set # CONFIG_SND_SOC_SGTL5000 is not set # CONFIG_SND_SOC_SIMPLE_AMPLIFIER is not set # CONFIG_SND_SOC_SIMPLE_MUX is not set @@ -4681,10 +4865,12 @@ CONFIG_SND_SOC_SSM4567=m # CONFIG_SND_SOC_TAS5086 is not set # CONFIG_SND_SOC_TAS571X is not set # CONFIG_SND_SOC_TAS5720 is not set +# CONFIG_SND_SOC_TAS5805M is not set # CONFIG_SND_SOC_TAS6424 is not set # CONFIG_SND_SOC_TDA7419 is not set # CONFIG_SND_SOC_TFA9879 is not set # CONFIG_SND_SOC_TFA989X is not set +# CONFIG_SND_SOC_TLV320ADC3XXX is not set # CONFIG_SND_SOC_TLV320AIC23_I2C is not set # CONFIG_SND_SOC_TLV320AIC23_SPI is not set # CONFIG_SND_SOC_TLV320AIC31XX is not set @@ -4729,6 +4915,7 @@ CONFIG_SND_SOC_WM8804_I2C=m # CONFIG_SND_SOC_NAU8315 is not set # CONFIG_SND_SOC_NAU8540 is not set # CONFIG_SND_SOC_NAU8810 is not set +# CONFIG_SND_SOC_NAU8821 is not set # CONFIG_SND_SOC_NAU8822 is not set CONFIG_SND_SOC_NAU8824=m CONFIG_SND_SOC_NAU8825=m @@ -4796,6 +4983,7 @@ CONFIG_HID_KYE=m CONFIG_HID_UCLOGIC=m # CONFIG_HID_WALTOP is not set # CONFIG_HID_VIEWSONIC is not set +# CONFIG_HID_XIAOMI is not set # CONFIG_HID_GYRATION is not set # CONFIG_HID_ICADE is not set # CONFIG_HID_ITE is not set @@ -4805,6 +4993,7 @@ CONFIG_HID_UCLOGIC=m # CONFIG_HID_LCPOWER is not set CONFIG_HID_LED=m CONFIG_HID_LENOVO=m +# CONFIG_HID_LETSKETCH is not set CONFIG_HID_LOGITECH=m CONFIG_HID_LOGITECH_DJ=m CONFIG_HID_LOGITECH_HIDPP=m @@ -4819,6 +5008,7 @@ CONFIG_HID_MAGICMOUSE=y CONFIG_HID_MICROSOFT=m CONFIG_HID_MONTEREY=m CONFIG_HID_MULTITOUCH=y +# CONFIG_HID_NINTENDO is not set # CONFIG_HID_NTI is not set CONFIG_HID_NTRIG=y CONFIG_HID_ORTEK=m @@ -4827,13 +5017,14 @@ CONFIG_HID_PENMOUNT=m # CONFIG_HID_PETALYNX is not set # CONFIG_HID_PICOLCD is not set CONFIG_HID_PLANTRONICS=m -# CONFIG_HID_PLAYSTATION is not set +# CONFIG_HID_RAZER is not set CONFIG_HID_PRIMAX=m # CONFIG_HID_RETRODE is not set CONFIG_HID_ROCCAT=m CONFIG_HID_SAITEK=m # CONFIG_HID_SAMSUNG is not set # CONFIG_HID_SEMITEK is not set +# CONFIG_HID_SIGMAMICRO is not set # CONFIG_HID_SONY is not set CONFIG_HID_SPEEDLINK=m # CONFIG_HID_STEAM is not set @@ -5092,8 +5283,10 @@ CONFIG_TYPEC_UCSI=m CONFIG_UCSI_CCG=m CONFIG_UCSI_ACPI=m CONFIG_TYPEC_TPS6598X=m +# CONFIG_TYPEC_RT1719 is not set CONFIG_TYPEC_HD3SS3220=m CONFIG_TYPEC_STUSB160X=m +# CONFIG_TYPEC_WUSB3801 is not set # # USB Type-C Multiplexer/DeMultiplexer Switch support @@ -5208,6 +5401,10 @@ CONFIG_LEDS_TRIGGERS=y # CONFIG_LEDS_TRIGGER_PATTERN is not set CONFIG_LEDS_TRIGGER_AUDIO=m # CONFIG_LEDS_TRIGGER_TTY is not set + +# +# Simple LED drivers +# # CONFIG_ACCESSIBILITY is not set # CONFIG_INFINIBAND is not set CONFIG_EDAC_ATOMIC_SCRUB=y @@ -5412,7 +5609,6 @@ CONFIG_RTL8192E=m # CONFIG_RTL8723BS is not set CONFIG_R8712U=m CONFIG_R8188EU=m -# CONFIG_88EU_AP_MODE is not set # CONFIG_RTS5208 is not set # CONFIG_VT6655 is not set # CONFIG_VT6656 is not set @@ -5422,15 +5618,8 @@ CONFIG_STAGING_MEDIA=y # CONFIG_VIDEO_ZORAN is not set # CONFIG_VIDEO_IPU3_IMGU is not set # CONFIG_DVB_AV7110 is not set - -# -# Android -# -# end of Android - # CONFIG_LTE_GDM724X is not set # CONFIG_FIREWIRE_SERIAL is not set -# CONFIG_GS_FPGABOOT is not set # CONFIG_UNISYSSPAR is not set # CONFIG_FB_TFT is not set # CONFIG_KS7010 is not set @@ -5444,18 +5633,22 @@ CONFIG_WMI_BMOF=m # CONFIG_HUAWEI_WMI is not set CONFIG_MXM_WMI=m # CONFIG_PEAQ_WMI is not set +CONFIG_NVIDIA_WMI_EC_BACKLIGHT=m # CONFIG_XIAOMI_WMI is not set # CONFIG_GIGABYTE_WMI is not set +CONFIG_YOGABOOK_WMI=m CONFIG_ACERHDF=m # CONFIG_ACER_WIRELESS is not set CONFIG_ACER_WMI=m # CONFIG_AMD_PMC is not set +# CONFIG_AMD_HSMP is not set # CONFIG_ADV_SWBUTTON is not set CONFIG_APPLE_GMUX=m CONFIG_ASUS_LAPTOP=m CONFIG_ASUS_WIRELESS=m CONFIG_ASUS_WMI=m CONFIG_ASUS_NB_WMI=m +# CONFIG_ASUS_TF103C_DOCK is not set # CONFIG_MERAKI_MX100 is not set # CONFIG_EEEPC_LAPTOP is not set # CONFIG_EEEPC_WMI is not set @@ -5493,12 +5686,9 @@ CONFIG_THINKPAD_ACPI_ALSA_SUPPORT=y CONFIG_THINKPAD_ACPI_VIDEO=y CONFIG_THINKPAD_ACPI_HOTKEY_POLL=y CONFIG_THINKPAD_LMI=m -CONFIG_X86_PLATFORM_DRIVERS_INTEL=y # CONFIG_INTEL_ATOMISP2_PM is not set # CONFIG_INTEL_SAR_INT1092 is not set CONFIG_INTEL_PMC_CORE=y -# CONFIG_INTEL_PMT_TELEMETRY is not set -# CONFIG_INTEL_PMT_CRASHLOG is not set # # Intel Speed Select Technology interface support @@ -5508,18 +5698,27 @@ CONFIG_INTEL_PMC_CORE=y # CONFIG_INTEL_WMI_SBL_FW_UPDATE is not set # CONFIG_INTEL_WMI_THUNDERBOLT is not set + +# +# Intel Uncore Frequency Control +# +CONFIG_INTEL_UNCORE_FREQ_CONTROL=m +# end of Intel Uncore Frequency Control + CONFIG_INTEL_HID_EVENT=m CONFIG_INTEL_VBTN=m # CONFIG_INTEL_INT0002_VGPIO is not set # CONFIG_INTEL_OAKTRAIL is not set +# CONFIG_INTEL_ISHTP_ECLITE is not set CONFIG_INTEL_PUNIT_IPC=m CONFIG_INTEL_RST=m CONFIG_INTEL_SMARTCONNECT=y CONFIG_INTEL_TURBO_MAX_3=y -CONFIG_INTEL_UNCORE_FREQ_CONTROL=m +# CONFIG_INTEL_VSEC is not set CONFIG_MSI_LAPTOP=m CONFIG_MSI_WMI=m # CONFIG_PCENGINES_APU2 is not set +# CONFIG_BARCO_P50_GPIO is not set CONFIG_SAMSUNG_LAPTOP=m # CONFIG_SAMSUNG_Q10 is not set CONFIG_TOSHIBA_BT_RFKILL=m @@ -5532,13 +5731,14 @@ CONFIG_TOSHIBA_WMI=m # CONFIG_SONY_LAPTOP is not set CONFIG_SYSTEM76_ACPI=m # CONFIG_TOPSTAR_LAPTOP is not set -CONFIG_I2C_MULTI_INSTANTIATE=m +# CONFIG_SERIAL_MULTI_INSTANTIATE is not set # CONFIG_MLX_PLATFORM is not set # CONFIG_TOUCHSCREEN_DMI is not set CONFIG_FW_ATTR_CLASS=m CONFIG_INTEL_IPS=m # CONFIG_INTEL_SCU_PCI is not set # CONFIG_INTEL_SCU_PLATFORM is not set +# CONFIG_SIEMENS_SIMATIC_IPC is not set CONFIG_PMC_ATOM=y # CONFIG_CHROME_PLATFORMS is not set # CONFIG_MELLANOX_PLATFORM is not set @@ -5551,14 +5751,6 @@ CONFIG_SURFACE_PRO3_BUTTON=m CONFIG_HAVE_CLK=y CONFIG_HAVE_CLK_PREPARE=y CONFIG_COMMON_CLK=y - -# -# Clock driver for ARM Reference designs -# -# CONFIG_ICST is not set -# CONFIG_CLK_SP810 is not set -# end of Clock driver for ARM Reference designs - # CONFIG_LMK04832 is not set # CONFIG_COMMON_CLK_MAX9485 is not set # CONFIG_COMMON_CLK_SI5341 is not set @@ -5712,7 +5904,13 @@ CONFIG_EXTCON=y CONFIG_GENERIC_PHY=y # CONFIG_USB_LGM_PHY is not set # CONFIG_PHY_CAN_TRANSCEIVER is not set + +# +# PHY drivers for Broadcom platforms +# # CONFIG_BCM_KONA_USB2_PHY is not set +# end of PHY drivers for Broadcom platforms + # CONFIG_PHY_PXA_28NM_HSIC is not set # CONFIG_PHY_PXA_28NM_USB2 is not set # CONFIG_PHY_INTEL_LGM_EMMC is not set @@ -5722,7 +5920,6 @@ CONFIG_POWERCAP=y CONFIG_INTEL_RAPL_CORE=y CONFIG_INTEL_RAPL=y # CONFIG_IDLE_INJECT is not set -# CONFIG_DTPM is not set # CONFIG_MCB is not set # @@ -5741,12 +5938,10 @@ CONFIG_INTEL_RAPL=y CONFIG_LIBNVDIMM=y CONFIG_BLK_DEV_PMEM=m -CONFIG_ND_BLK=m CONFIG_ND_CLAIM=y CONFIG_ND_BTT=m CONFIG_BTT=y CONFIG_NVDIMM_KEYS=y -CONFIG_DAX_DRIVER=y CONFIG_DAX=y CONFIG_DEV_DAX=m CONFIG_DEV_DAX_HMEM=m @@ -5771,6 +5966,7 @@ CONFIG_PM_OPP=y # CONFIG_INTERCONNECT is not set # CONFIG_COUNTER is not set # CONFIG_MOST is not set +# CONFIG_PECI is not set # end of Device Drivers # @@ -5807,7 +6003,6 @@ CONFIG_BTRFS_FS_POSIX_ACL=y # CONFIG_BTRFS_FS_REF_VERIFY is not set # CONFIG_NILFS2_FS is not set # CONFIG_F2FS_FS is not set -# CONFIG_FS_DAX is not set CONFIG_FS_POSIX_ACL=y CONFIG_EXPORTFS=y CONFIG_EXPORTFS_BLOCK_OPS=y @@ -5843,6 +6038,7 @@ CONFIG_FSCACHE_STATS=y # CONFIG_FSCACHE_DEBUG is not set CONFIG_CACHEFILES=m # CONFIG_CACHEFILES_DEBUG is not set +# CONFIG_CACHEFILES_ERROR_INJECTION is not set # end of Caches # @@ -6008,6 +6204,7 @@ CONFIG_KEYS=y # CONFIG_BIG_KEYS is not set # CONFIG_TRUSTED_KEYS is not set CONFIG_ENCRYPTED_KEYS=y +# CONFIG_USER_DECRYPTED_DATA is not set CONFIG_KEY_DH_OPERATIONS=y # CONFIG_SECURITY_DMESG_RESTRICT is not set CONFIG_SECURITY=y @@ -6018,8 +6215,6 @@ CONFIG_SECURITY_PATH=y # CONFIG_INTEL_TXT is not set CONFIG_HAVE_HARDENED_USERCOPY_ALLOCATOR=y CONFIG_HARDENED_USERCOPY=y -CONFIG_HARDENED_USERCOPY_FALLBACK=y -# CONFIG_HARDENED_USERCOPY_PAGESPAN is not set # CONFIG_FORTIFY_SOURCE is not set # CONFIG_STATIC_USERMODEHELPER is not set # CONFIG_SECURITY_SMACK is not set @@ -6049,6 +6244,8 @@ CONFIG_LSM="yama,loadpin,safesetid,integrity" CONFIG_INIT_STACK_NONE=y CONFIG_INIT_ON_ALLOC_DEFAULT_ON=y CONFIG_INIT_ON_FREE_DEFAULT_ON=y +CONFIG_CC_HAS_ZERO_CALL_USED_REGS=y +# CONFIG_ZERO_CALL_USED_REGS is not set # end of Memory initialization # end of Kernel hardening options # end of Security options @@ -6094,6 +6291,7 @@ CONFIG_CRYPTO_ENGINE=m # CONFIG_CRYPTO_RSA=y CONFIG_CRYPTO_DH=y +# CONFIG_CRYPTO_DH_RFC7919_GROUPS is not set CONFIG_CRYPTO_ECC=m CONFIG_CRYPTO_ECDH=m # CONFIG_CRYPTO_ECDSA is not set @@ -6152,6 +6350,7 @@ CONFIG_CRYPTO_BLAKE2B=y CONFIG_CRYPTO_BLAKE2S_X86=y CONFIG_CRYPTO_CRCT10DIF=y CONFIG_CRYPTO_CRCT10DIF_PCLMUL=m +CONFIG_CRYPTO_CRC64_ROCKSOFT=y CONFIG_CRYPTO_GHASH=y CONFIG_CRYPTO_POLY1305=m CONFIG_CRYPTO_POLY1305_X86_64=y @@ -6167,6 +6366,7 @@ CONFIG_CRYPTO_SHA256=y CONFIG_CRYPTO_SHA512=y CONFIG_CRYPTO_SHA3=m # CONFIG_CRYPTO_SM3 is not set +# CONFIG_CRYPTO_SM3_AVX_X86_64 is not set # CONFIG_CRYPTO_STREEBOG is not set CONFIG_CRYPTO_WP512=m CONFIG_CRYPTO_GHASH_CLMUL_NI_INTEL=m @@ -6231,6 +6431,7 @@ CONFIG_CRYPTO_DRBG_HASH=y CONFIG_CRYPTO_DRBG_CTR=y CONFIG_CRYPTO_DRBG=y CONFIG_CRYPTO_JITTERENTROPY=y +CONFIG_CRYPTO_KDF800108_CTR=y CONFIG_CRYPTO_USER_API=y CONFIG_CRYPTO_USER_API_HASH=y CONFIG_CRYPTO_USER_API_SKCIPHER=y @@ -6240,28 +6441,6 @@ CONFIG_CRYPTO_USER_API_AEAD=y CONFIG_CRYPTO_USER_API_ENABLE_OBSOLETE=y # CONFIG_CRYPTO_STATS is not set CONFIG_CRYPTO_HASH_INFO=y - -# -# Crypto library routines -# -CONFIG_CRYPTO_LIB_AES=y -CONFIG_CRYPTO_LIB_ARC4=m -CONFIG_CRYPTO_ARCH_HAVE_LIB_BLAKE2S=y -CONFIG_CRYPTO_LIB_BLAKE2S_GENERIC=y -CONFIG_CRYPTO_LIB_BLAKE2S=y -CONFIG_CRYPTO_ARCH_HAVE_LIB_CHACHA=y -CONFIG_CRYPTO_LIB_CHACHA_GENERIC=y -CONFIG_CRYPTO_LIB_CHACHA=y -CONFIG_CRYPTO_ARCH_HAVE_LIB_CURVE25519=y -CONFIG_CRYPTO_LIB_CURVE25519_GENERIC=y -CONFIG_CRYPTO_LIB_CURVE25519=y -CONFIG_CRYPTO_LIB_DES=m -CONFIG_CRYPTO_LIB_POLY1305_RSIZE=11 -CONFIG_CRYPTO_ARCH_HAVE_LIB_POLY1305=y -CONFIG_CRYPTO_LIB_POLY1305_GENERIC=y -CONFIG_CRYPTO_LIB_POLY1305=y -CONFIG_CRYPTO_LIB_CHACHA20POLY1305=y -CONFIG_CRYPTO_LIB_SHA256=y CONFIG_CRYPTO_HW=y # CONFIG_CRYPTO_DEV_PADLOCK is not set # CONFIG_CRYPTO_DEV_ATMEL_ECC is not set @@ -6311,7 +6490,6 @@ CONFIG_BITREVERSE=y CONFIG_GENERIC_STRNCPY_FROM_USER=y CONFIG_GENERIC_STRNLEN_USER=y CONFIG_GENERIC_NET_UTILS=y -CONFIG_GENERIC_FIND_FIRST_BIT=y CONFIG_CORDIC=m # CONFIG_PRIME_NUMBERS is not set CONFIG_RATIONAL=y @@ -6320,9 +6498,33 @@ CONFIG_GENERIC_IOMAP=y CONFIG_ARCH_USE_CMPXCHG_LOCKREF=y CONFIG_ARCH_HAS_FAST_MULTIPLIER=y CONFIG_ARCH_USE_SYM_ANNOTATIONS=y + +# +# Crypto library routines +# +CONFIG_CRYPTO_LIB_AES=y +CONFIG_CRYPTO_LIB_ARC4=m +CONFIG_CRYPTO_ARCH_HAVE_LIB_BLAKE2S=y +CONFIG_CRYPTO_LIB_BLAKE2S_GENERIC=y +CONFIG_CRYPTO_ARCH_HAVE_LIB_CHACHA=y +CONFIG_CRYPTO_LIB_CHACHA_GENERIC=y +CONFIG_CRYPTO_LIB_CHACHA=y +CONFIG_CRYPTO_ARCH_HAVE_LIB_CURVE25519=y +CONFIG_CRYPTO_LIB_CURVE25519_GENERIC=y +CONFIG_CRYPTO_LIB_CURVE25519=y +CONFIG_CRYPTO_LIB_DES=m +CONFIG_CRYPTO_LIB_POLY1305_RSIZE=11 +CONFIG_CRYPTO_ARCH_HAVE_LIB_POLY1305=y +CONFIG_CRYPTO_LIB_POLY1305_GENERIC=y +CONFIG_CRYPTO_LIB_POLY1305=y +CONFIG_CRYPTO_LIB_CHACHA20POLY1305=y +CONFIG_CRYPTO_LIB_SHA256=y +# end of Crypto library routines + CONFIG_CRC_CCITT=y CONFIG_CRC16=y CONFIG_CRC_T10DIF=y +CONFIG_CRC64_ROCKSOFT=y CONFIG_CRC_ITU_T=m CONFIG_CRC32=y # CONFIG_CRC32_SELFTEST is not set @@ -6330,7 +6532,7 @@ CONFIG_CRC32_SLICEBY8=y # CONFIG_CRC32_SLICEBY4 is not set # CONFIG_CRC32_SARWATE is not set # CONFIG_CRC32_BIT is not set -CONFIG_CRC64=m +CONFIG_CRC64=y # CONFIG_CRC4 is not set CONFIG_CRC7=m CONFIG_LIBCRC32C=y @@ -6355,6 +6557,7 @@ CONFIG_XZ_DEC_IA64=y CONFIG_XZ_DEC_ARM=y CONFIG_XZ_DEC_ARMTHUMB=y CONFIG_XZ_DEC_SPARC=y +# CONFIG_XZ_DEC_MICROLZMA is not set CONFIG_XZ_DEC_BCJ=y # CONFIG_XZ_DEC_TEST is not set CONFIG_DECOMPRESS_LZ4=y @@ -6424,10 +6627,16 @@ CONFIG_SYMBOLIC_ERRNAME=y CONFIG_DEBUG_BUGVERBOSE=y # end of printk and dmesg options +CONFIG_DEBUG_KERNEL=y +CONFIG_DEBUG_MISC=y + # # Compile-time checks and compiler options # -# CONFIG_DEBUG_INFO is not set +CONFIG_DEBUG_INFO_NONE=y +# CONFIG_DEBUG_INFO_DWARF_TOOLCHAIN_DEFAULT is not set +# CONFIG_DEBUG_INFO_DWARF4 is not set +# CONFIG_DEBUG_INFO_DWARF5 is not set CONFIG_FRAME_WARN=2048 # CONFIG_STRIP_ASM_SYMS is not set # CONFIG_READABLE_ASM is not set @@ -6456,10 +6665,16 @@ CONFIG_HAVE_ARCH_KGDB=y CONFIG_ARCH_HAS_UBSAN_SANITIZE_ALL=y # CONFIG_UBSAN is not set CONFIG_HAVE_ARCH_KCSAN=y +CONFIG_HAVE_KCSAN_COMPILER=y +# CONFIG_KCSAN is not set # end of Generic Kernel Debugging Instruments -CONFIG_DEBUG_KERNEL=y -CONFIG_DEBUG_MISC=y +# +# Networking Debugging +# +# CONFIG_NET_DEV_REFCNT_TRACKER is not set +# CONFIG_NET_NS_REFCNT_TRACKER is not set +# end of Networking Debugging # # Memory Debugging @@ -6467,6 +6682,7 @@ CONFIG_DEBUG_MISC=y # CONFIG_PAGE_EXTENSION is not set # CONFIG_DEBUG_PAGEALLOC is not set # CONFIG_PAGE_OWNER is not set +# CONFIG_PAGE_TABLE_CHECK is not set # CONFIG_PAGE_POISONING is not set # CONFIG_DEBUG_PAGE_REF is not set # CONFIG_DEBUG_RODATA_TEST is not set @@ -6530,6 +6746,7 @@ CONFIG_SCHEDSTATS=y # end of Scheduler Debugging # CONFIG_DEBUG_TIMEKEEPING is not set +# CONFIG_DEBUG_PREEMPT is not set # # Lock Debugging (spinlocks, mutexes, etc...) @@ -6584,8 +6801,9 @@ CONFIG_RCU_CPU_STALL_TIMEOUT=60 # CONFIG_LATENCYTOP is not set CONFIG_USER_STACKTRACE_SUPPORT=y CONFIG_NOP_TRACER=y +CONFIG_HAVE_RETHOOK=y +CONFIG_RETHOOK=y CONFIG_HAVE_FUNCTION_TRACER=y -CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y CONFIG_HAVE_DYNAMIC_FTRACE=y CONFIG_HAVE_DYNAMIC_FTRACE_WITH_REGS=y CONFIG_HAVE_DYNAMIC_FTRACE_WITH_DIRECT_CALLS=y @@ -6595,6 +6813,7 @@ CONFIG_HAVE_SYSCALL_TRACEPOINTS=y CONFIG_HAVE_FENTRY=y CONFIG_HAVE_OBJTOOL_MCOUNT=y CONFIG_HAVE_C_RECORDMCOUNT=y +CONFIG_HAVE_BUILDTIME_MCOUNT_SORT=y CONFIG_TRACE_CLOCK=y CONFIG_RING_BUFFER=y CONFIG_EVENT_TRACING=y @@ -6606,6 +6825,7 @@ CONFIG_FTRACE=y # CONFIG_FUNCTION_TRACER is not set # CONFIG_STACK_TRACER is not set # CONFIG_IRQSOFF_TRACER is not set +# CONFIG_PREEMPT_TRACER is not set # CONFIG_SCHED_TRACER is not set # CONFIG_HWLAT_TRACER is not set # CONFIG_OSNOISE_TRACER is not set @@ -6636,6 +6856,8 @@ CONFIG_PROBE_EVENTS=y # CONFIG_KPROBE_EVENT_GEN_TEST is not set # CONFIG_PROVIDE_OHCI1394_DMA_INIT is not set # CONFIG_SAMPLES is not set +CONFIG_HAVE_SAMPLE_FTRACE_DIRECT=y +CONFIG_HAVE_SAMPLE_FTRACE_DIRECT_MULTI=y CONFIG_ARCH_HAS_DEVMEM_IS_ALLOWED=y # CONFIG_STRICT_DEVMEM is not set @@ -6680,8 +6902,8 @@ CONFIG_RUNTIME_TESTING_MENU=y # CONFIG_LKDTM is not set # CONFIG_TEST_MIN_HEAP is not set # CONFIG_TEST_DIV64 is not set -# CONFIG_KPROBES_SANITY_TEST is not set # CONFIG_BACKTRACE_SELF_TEST is not set +# CONFIG_TEST_REF_TRACKER is not set # CONFIG_RBTREE_TEST is not set # CONFIG_REED_SOLOMON_TEST is not set # CONFIG_INTERVAL_TREE_TEST is not set @@ -6697,9 +6919,8 @@ CONFIG_RUNTIME_TESTING_MENU=y # CONFIG_TEST_BITMAP is not set # CONFIG_TEST_UUID is not set # CONFIG_TEST_XARRAY is not set -# CONFIG_TEST_OVERFLOW is not set # CONFIG_TEST_RHASHTABLE is not set -# CONFIG_TEST_HASH is not set +# CONFIG_TEST_SIPHASH is not set # CONFIG_TEST_IDA is not set # CONFIG_TEST_LKM is not set # CONFIG_TEST_BITOPS is not set @@ -6714,7 +6935,6 @@ CONFIG_RUNTIME_TESTING_MENU=y # CONFIG_TEST_STATIC_KEYS is not set # CONFIG_TEST_KMOD is not set # CONFIG_TEST_MEMCAT_P is not set -# CONFIG_TEST_STACKINIT is not set # CONFIG_TEST_MEMINIT is not set # CONFIG_TEST_FREE_PAGES is not set # CONFIG_TEST_FPU is not set diff --git a/meta-gnome/recipes-connectivity/iwd/iwd_1.17.bb b/meta-gnome/recipes-connectivity/iwd/iwd_1.27.bb similarity index 94% rename from meta-gnome/recipes-connectivity/iwd/iwd_1.17.bb rename to meta-gnome/recipes-connectivity/iwd/iwd_1.27.bb index fe29ce0..dc29bc3 100644 --- a/meta-gnome/recipes-connectivity/iwd/iwd_1.17.bb +++ b/meta-gnome/recipes-connectivity/iwd/iwd_1.27.bb @@ -7,8 +7,8 @@ DEPENDS = "ell" SRC_URI = "https://www.kernel.org/pub/linux/network/wireless/${BP}.tar.xz \ file://0001-build-Use-abs_top_srcdir-instead-of-abs_srcdir-for-e.patch \ - " -SRC_URI[sha256sum] = "6f946f823b0dc3205e4e72becf8ad1915448d194f5b10d8003e4c8c5a18e4ef7" + " +SRC_URI[sha256sum] = "013b4a0a79629c20d915954fc3b5d0620ef6e0d6065db3c342f4b3f9111f46ec" inherit autotools manpages pkgconfig python3native systemd diff --git a/meta-gnome/recipes-connectivity/modemmanager/modemmanager/0001-Do-not-pass-null-string-to-s-printf-formatted-string.patch b/meta-gnome/recipes-connectivity/modemmanager/modemmanager/0001-Do-not-pass-null-string-to-s-printf-formatted-string.patch deleted file mode 100644 index 5fbafbb..0000000 --- a/meta-gnome/recipes-connectivity/modemmanager/modemmanager/0001-Do-not-pass-null-string-to-s-printf-formatted-string.patch +++ /dev/null @@ -1,31 +0,0 @@ -From b8862e6af1c6d022b8c182098e7deddb874ece19 Mon Sep 17 00:00:00 2001 -From: Khem Raj -Date: Tue, 18 Dec 2018 23:10:44 -0800 -Subject: [PATCH] Do not pass null string to %s printf formatted string - -Here the string is already decided to be NULL and passing -a null pointer to %s will not work - -Fixes -error: '%s' directive argument is null - -Upstream-Status: Submitted [https://gitlab.freedesktop.org/mobile-broadband/ModemManager/merge_requests/67] - -Signed-off-by: Khem Raj ---- - plugins/mtk/mm-broadband-modem-mtk.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/plugins/mtk/mm-broadband-modem-mtk.c b/plugins/mtk/mm-broadband-modem-mtk.c -index 475a63ac..541de4a5 100644 ---- a/plugins/mtk/mm-broadband-modem-mtk.c -+++ b/plugins/mtk/mm-broadband-modem-mtk.c -@@ -191,7 +191,7 @@ get_supported_modes_ready (MMBaseModem *self, - - response = mm_base_modem_at_command_finish (MM_BASE_MODEM (self), res, &error); - if (!response) { -- mm_dbg ("Fail to get response %s", response); -+ mm_dbg ("Fail to get response"); - g_task_return_error (task, error); - g_object_unref (task); - return; diff --git a/meta-gnome/recipes-connectivity/modemmanager/modemmanager/0001-Do-not-set-Wno-unused-but-set-variable.patch b/meta-gnome/recipes-connectivity/modemmanager/modemmanager/0001-Do-not-set-Wno-unused-but-set-variable.patch deleted file mode 100644 index dcbe01d..0000000 --- a/meta-gnome/recipes-connectivity/modemmanager/modemmanager/0001-Do-not-set-Wno-unused-but-set-variable.patch +++ /dev/null @@ -1,30 +0,0 @@ -From d4f73b037d11d20f080e74c05df28853fb833075 Mon Sep 17 00:00:00 2001 -From: Khem Raj -Date: Fri, 7 Dec 2018 22:59:47 -0800 -Subject: [PATCH] Do not set Wno-unused-but-set-variable - -This is gcc specific warning, not implemented by pretending to be gcc -like compilers e.g. clang. - -We will pass this option from recipe - -Upstream-Status: Inappropriate [OE-Specific] - -Signed-off-by: Khem Raj ---- - m4/compiler_warnings.m4 | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/m4/compiler_warnings.m4 b/m4/compiler_warnings.m4 -index f498a28..e65e97f 100644 ---- a/m4/compiler_warnings.m4 -+++ b/m4/compiler_warnings.m4 -@@ -11,7 +11,7 @@ if test "$GCC" = "yes" -a "$set_more_warnings" != "no"; then - -Wdeclaration-after-statement -Wstrict-prototypes \ - -Wno-unused-parameter -Wno-sign-compare \ - -Wno-deprecated-declarations \ -- -Wno-unused-but-set-variable -Wformat-security; do -+ -Wno-unused -Wformat-security; do - SAVE_CFLAGS="$CFLAGS" - CFLAGS="$CFLAGS $option" - AC_MSG_CHECKING([whether gcc understands $option]) diff --git a/meta-gnome/recipes-connectivity/modemmanager/modemmanager/0001-core-switch-bash-shell-scripts-to-use-bin-sh-for-use.patch b/meta-gnome/recipes-connectivity/modemmanager/modemmanager/0001-core-switch-bash-shell-scripts-to-use-bin-sh-for-use.patch new file mode 100644 index 0000000..7c3e775 --- /dev/null +++ b/meta-gnome/recipes-connectivity/modemmanager/modemmanager/0001-core-switch-bash-shell-scripts-to-use-bin-sh-for-use.patch @@ -0,0 +1,68 @@ +From f7a3292c1c753b29384e216693f51a4213fea7d0 Mon Sep 17 00:00:00 2001 +From: "Bruce A. Johnson" +Date: Wed, 22 Dec 2021 14:24:02 -0500 +Subject: [PATCH 1/2] core: switch bash shell scripts to use /bin/sh for use + w/Busybox. + +Fixes https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/issues/483 +--- + data/fcc-unlock/105b | 2 +- + data/fcc-unlock/1199 | 2 +- + data/fcc-unlock/1eac | 2 +- + test/mmcli-test-sms | 2 +- + tools/tests/test-wrapper.sh.in | 2 +- + 5 files changed, 5 insertions(+), 5 deletions(-) + +diff --git a/data/fcc-unlock/105b b/data/fcc-unlock/105b +index 21fe5329..f276050f 100644 +--- a/data/fcc-unlock/105b ++++ b/data/fcc-unlock/105b +@@ -1,4 +1,4 @@ +-#!/bin/bash ++#!/bin/sh + + # SPDX-License-Identifier: CC0-1.0 + # 2021 Aleksander Morgado +diff --git a/data/fcc-unlock/1199 b/data/fcc-unlock/1199 +index 0109c6ab..e1d3804c 100644 +--- a/data/fcc-unlock/1199 ++++ b/data/fcc-unlock/1199 +@@ -1,4 +1,4 @@ +-#!/bin/bash ++#!/bin/sh + + # SPDX-License-Identifier: CC0-1.0 + # 2021 Aleksander Morgado +diff --git a/data/fcc-unlock/1eac b/data/fcc-unlock/1eac +index 1068d9c2..d9342852 100644 +--- a/data/fcc-unlock/1eac ++++ b/data/fcc-unlock/1eac +@@ -1,4 +1,4 @@ +-#!/bin/bash ++#!/bin/sh + + # SPDX-License-Identifier: CC0-1.0 + # 2021 Aleksander Morgado +diff --git a/test/mmcli-test-sms b/test/mmcli-test-sms +index 18e0a7b4..7136ee0d 100755 +--- a/test/mmcli-test-sms ++++ b/test/mmcli-test-sms +@@ -1,4 +1,4 @@ +-#!/bin/bash ++#!/bin/sh + + print_usage () { + echo "usage: $0 [MODEM INDEX] [all|ucs2|gsm7|data] [NUMBER]" +diff --git a/tools/tests/test-wrapper.sh.in b/tools/tests/test-wrapper.sh.in +index d64ea4cb..fcdb56de 100644 +--- a/tools/tests/test-wrapper.sh.in ++++ b/tools/tests/test-wrapper.sh.in +@@ -1,4 +1,4 @@ +-#!/bin/bash ++#!/bin/sh + + # For debugging behavior of test-modemmanager-service.py, you can modify + # this line to add --log-file option +-- +2.34.1 + diff --git a/meta-gnome/recipes-connectivity/modemmanager/modemmanager/0002-fcc-unlock-Make-scripts-POSIX-shell-compatible.patch b/meta-gnome/recipes-connectivity/modemmanager/modemmanager/0002-fcc-unlock-Make-scripts-POSIX-shell-compatible.patch new file mode 100644 index 0000000..d911d54 --- /dev/null +++ b/meta-gnome/recipes-connectivity/modemmanager/modemmanager/0002-fcc-unlock-Make-scripts-POSIX-shell-compatible.patch @@ -0,0 +1,100 @@ +From ddf634b92bf96b35f521db6da329628b4525c2eb Mon Sep 17 00:00:00 2001 +From: Sven Schwermer +Date: Fri, 25 Feb 2022 21:37:13 +0100 +Subject: [PATCH 2/2] fcc-unlock: Make scripts POSIX shell compatible + +This allows us to not rely on bash which may not be available on +constrained systems, e.g. Yocto-built embedded systems. The scripts now +pass shellcheck. + +Signed-off-by: Sven Schwermer +--- + data/fcc-unlock/105b | 8 ++++---- + data/fcc-unlock/1199 | 6 +++--- + data/fcc-unlock/1eac | 8 ++++---- + 3 files changed, 11 insertions(+), 11 deletions(-) + +diff --git a/data/fcc-unlock/105b b/data/fcc-unlock/105b +index f276050f..772c90f4 100644 +--- a/data/fcc-unlock/105b ++++ b/data/fcc-unlock/105b +@@ -15,20 +15,20 @@ shift + # second and next arguments are control port names + for PORT in "$@"; do + # match port type in Linux 5.14 and newer +- grep -q MBIM /sys/class/wwan/${PORT}/type 2>/dev/null && { ++ grep -q MBIM "/sys/class/wwan/$PORT/type" 2>/dev/null && { + MBIM_PORT=$PORT + break + } + # match port name in Linux 5.13 +- [[ $PORT == *"MBIM"* ]] && { ++ echo "$PORT" | grep -q MBIM && { + MBIM_PORT=$PORT + break + } + done + + # fail if no MBIM port exposed +-[ -n "${MBIM_PORT}" ] || exit 2 ++[ -n "$MBIM_PORT" ] || exit 2 + + # run qmicli operation over MBIM +-qmicli --device-open-proxy --device=/dev/${MBIM_PORT} --dms-foxconn-set-fcc-authentication=0 ++qmicli --device-open-proxy --device="/dev/$MBIM_PORT" --dms-foxconn-set-fcc-authentication=0 + exit $? +diff --git a/data/fcc-unlock/1199 b/data/fcc-unlock/1199 +index e1d3804c..6dbf8d1b 100644 +--- a/data/fcc-unlock/1199 ++++ b/data/fcc-unlock/1199 +@@ -19,15 +19,15 @@ shift + # second and next arguments are control port names + for PORT in "$@"; do + # match port name +- [[ $PORT == *"cdc-wdm"* ]] && { ++ echo "$PORT" | grep -q cdc-wdm && { + CDC_WDM_PORT=$PORT + break + } + done + + # fail if no cdc-wdm port exposed +-[ -n "${CDC_WDM_PORT}" ] || exit 2 ++[ -n "$CDC_WDM_PORT" ] || exit 2 + + # run qmicli operation +-qmicli --device-open-proxy --device=/dev/${CDC_WDM_PORT} --dms-set-fcc-authentication ++qmicli --device-open-proxy --device="/dev/$CDC_WDM_PORT" --dms-set-fcc-authentication + exit $? +diff --git a/data/fcc-unlock/1eac b/data/fcc-unlock/1eac +index d9342852..44ce46d7 100644 +--- a/data/fcc-unlock/1eac ++++ b/data/fcc-unlock/1eac +@@ -15,20 +15,20 @@ shift + # second and next arguments are control port names + for PORT in "$@"; do + # match port type in Linux 5.14 and newer +- grep -q MBIM /sys/class/wwan/${PORT}/type 2>/dev/null && { ++ grep -q MBIM "/sys/class/wwan/$PORT/type" 2>/dev/null && { + MBIM_PORT=$PORT + break + } + # match port name in Linux 5.13 +- [[ $PORT == *"MBIM"* ]] && { ++ echo "$PORT" | grep -q MBIM && { + MBIM_PORT=$PORT + break + } + done + + # fail if no MBIM port exposed +-[ -n "${MBIM_PORT}" ] || exit 2 ++[ -n "$MBIM_PORT" ] || exit 2 + + # run mbimcli operation +-mbimcli --device-open-proxy --device=/dev/${MBIM_PORT} --quectel-set-radio-state=on ++mbimcli --device-open-proxy --device="/dev/$MBIM_PORT" --quectel-set-radio-state=on + exit $? +-- +2.34.1 + diff --git a/meta-gnome/recipes-connectivity/modemmanager/modemmanager_1.16.8.bb b/meta-gnome/recipes-connectivity/modemmanager/modemmanager_1.16.8.bb deleted file mode 100644 index c3143a8..0000000 --- a/meta-gnome/recipes-connectivity/modemmanager/modemmanager_1.16.8.bb +++ /dev/null @@ -1,53 +0,0 @@ -SUMMARY = "ModemManager is a daemon controlling broadband devices/connections" -DESCRIPTION = "ModemManager is a DBus-activated daemon which controls mobile broadband (2G/3G/4G) devices and connections" -HOMEPAGE = "http://www.freedesktop.org/wiki/Software/ModemManager/" -LICENSE = "GPL-2.0-only & LGPL-2.1-only" -LIC_FILES_CHKSUM = " \ - file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263 \ - file://COPYING.LIB;md5=4fbd65380cdd255951079008b364516c \ -" - -inherit gnomebase gettext systemd vala gobject-introspection bash-completion - -DEPENDS = "glib-2.0 libgudev intltool-native libxslt-native" - -SRC_URI = "http://www.freedesktop.org/software/ModemManager/ModemManager-${PV}.tar.xz" -SRC_URI[sha256sum] = "21fdfaf94171261ad9d99771894f5ade4bc39ef3d1ff1d421054d14713e97880" -S = "${WORKDIR}/ModemManager-${PV}" - -PACKAGECONFIG ??= "mbim qmi \ - ${@bb.utils.filter('DISTRO_FEATURES', 'systemd polkit', d)} \ -" - -PACKAGECONFIG[at] = "--with-at-command-via-dbus" -PACKAGECONFIG[systemd] = "--with-systemdsystemunitdir=${systemd_unitdir}/system/,," -PACKAGECONFIG[polkit] = "--with-polkit=yes,--with-polkit=no,polkit" -# Support WWAN modems and devices which speak the Mobile Interface Broadband Model (MBIM) protocol. -PACKAGECONFIG[mbim] = "--with-mbim,--without-mbim,libmbim" -# Support WWAN modems and devices which speak the Qualcomm MSM Interface (QMI) protocol. -PACKAGECONFIG[qmi] = "--with-qmi,--without-qmi,libqmi" - -EXTRA_OECONF = " \ - --with-udev-base-dir=${nonarch_base_libdir}/udev \ -" - -FILES:${PN} += " \ - ${datadir}/icons \ - ${datadir}/polkit-1 \ - ${datadir}/dbus-1 \ - ${datadir}/ModemManager \ - ${libdir}/ModemManager \ - ${systemd_unitdir}/system \ -" - -FILES:${PN}-dev += " \ - ${libdir}/ModemManager/*.la \ -" - -FILES:${PN}-staticdev += " \ - ${libdir}/ModemManager/*.a \ -" - -FILES:${PN}-dbg += "${libdir}/ModemManager/.debug" - -SYSTEMD_SERVICE:${PN} = "ModemManager.service" diff --git a/meta-gnome/recipes-connectivity/modemmanager/modemmanager_1.18.6.bb b/meta-gnome/recipes-connectivity/modemmanager/modemmanager_1.18.6.bb new file mode 100644 index 0000000..14d9942 --- /dev/null +++ b/meta-gnome/recipes-connectivity/modemmanager/modemmanager_1.18.6.bb @@ -0,0 +1,62 @@ +SUMMARY = "ModemManager is a daemon controlling broadband devices/connections" +DESCRIPTION = "ModemManager is a DBus-activated daemon which controls mobile broadband (2G/3G/4G) devices and connections" +HOMEPAGE = "http://www.freedesktop.org/wiki/Software/ModemManager/" +LICENSE = "GPL-2.0-or-later & LGPL-2.1-or-later" +LIC_FILES_CHKSUM = " \ + file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263 \ + file://COPYING.LIB;md5=4fbd65380cdd255951079008b364516c \ +" + +GNOMEBASEBUILDCLASS = "meson" +inherit gnomebase gettext systemd gobject-introspection bash-completion + +DEPENDS = "glib-2.0 libgudev libxslt-native dbus" + +SRCREV ?= "a7bcf2036b34d5043dbc33fee7d98bae5859c4d3" + +# Patches 0001, 0002 will be in ModemManager > 1.18.6 +SRC_URI = " \ + git://gitlab.freedesktop.org/mobile-broadband/ModemManager.git;protocol=https;branch=mm-1-18 \ + file://0001-core-switch-bash-shell-scripts-to-use-bin-sh-for-use.patch \ + file://0002-fcc-unlock-Make-scripts-POSIX-shell-compatible.patch \ +" + +S = "${WORKDIR}/git" + +# strict, permissive +MODEMMANAGER_POLKIT_TYPE ??= "permissive" + +PACKAGECONFIG ??= "vala mbim qmi \ + ${@bb.utils.filter('DISTRO_FEATURES', 'systemd polkit', d)} \ +" + +PACKAGECONFIG[at] = "-Dat_command_via_dbus=true" +PACKAGECONFIG[systemd] = " \ + -Dsystemdsystemunitdir=${systemd_unitdir}/system/, \ + -Dsystemdsystemunitdir=no -Dsystemd_journal=false -Dsystemd_suspend_resume=false \ +" +PACKAGECONFIG[polkit] = "-Dpolkit=${MODEMMANAGER_POLKIT_TYPE},-Dpolkit=no,polkit" +# Support WWAN modems and devices which speak the Mobile Interface Broadband Model (MBIM) protocol. +PACKAGECONFIG[mbim] = "-Dmbim=true,-Dmbim=false -Dplugin_dell=disabled -Dplugin_foxconn=disabled,libmbim" +# Support WWAN modems and devices which speak the Qualcomm MSM Interface (QMI) protocol. +PACKAGECONFIG[qmi] = "-Dqmi=true,-Dqmi=false,libqmi" +PACKAGECONFIG[qrtr] = "-Dqrtr=true,-Dqrtr=false,libqrtr-glib" +PACKAGECONFIG[vala] = "-Dvapi=true,-Dvapi=false" + +inherit ${@bb.utils.contains('PACKAGECONFIG', 'vala', 'vala', '', d)} + +EXTRA_OEMESON = " \ + -Dudevdir=${nonarch_base_libdir}/udev \ + -Dqrtr=false \ +" + +FILES:${PN} += " \ + ${datadir}/icons \ + ${datadir}/polkit-1 \ + ${datadir}/dbus-1 \ + ${datadir}/ModemManager \ + ${libdir}/ModemManager \ + ${systemd_unitdir}/system \ +" + +SYSTEMD_SERVICE:${PN} = "ModemManager.service" diff --git a/meta-gnome/recipes-connectivity/networkmanager/networkmanager-openvpn_1.8.14.bb b/meta-gnome/recipes-connectivity/networkmanager/networkmanager-openvpn_1.8.18.bb similarity index 91% rename from meta-gnome/recipes-connectivity/networkmanager/networkmanager-openvpn_1.8.14.bb rename to meta-gnome/recipes-connectivity/networkmanager/networkmanager-openvpn_1.8.18.bb index d35ca65..1d0c38e 100644 --- a/meta-gnome/recipes-connectivity/networkmanager/networkmanager-openvpn_1.8.14.bb +++ b/meta-gnome/recipes-connectivity/networkmanager/networkmanager-openvpn_1.8.18.bb @@ -10,8 +10,7 @@ inherit gnomebase useradd gettext systemd SRC_URI = "${GNOME_MIRROR}/NetworkManager-openvpn/${@gnome_verdir("${PV}")}/NetworkManager-openvpn-${PV}.tar.xz" -SRC_URI[md5sum] = "bef67eca77bee68da703609b92f804a0" -SRC_URI[sha256sum] = "e7419053fc3b5a7e25f1a7517c313ad4531b6ea280255524ebb85a70c76fdbeb" +SRC_URI[sha256sum] = "53dfb0acf64478adc728074f162f62e60bff62a605bd897eb88b267e7057927a" S = "${WORKDIR}/NetworkManager-openvpn-${PV}" diff --git a/meta-gnome/recipes-connectivity/networkmanager/networkmanager/0001-Fixed-configure.ac-Fix-pkgconfig-sysroot-locations.patch b/meta-gnome/recipes-connectivity/networkmanager/networkmanager/0001-Fixed-configure.ac-Fix-pkgconfig-sysroot-locations.patch deleted file mode 100644 index 19c8c74..0000000 --- a/meta-gnome/recipes-connectivity/networkmanager/networkmanager/0001-Fixed-configure.ac-Fix-pkgconfig-sysroot-locations.patch +++ /dev/null @@ -1,22 +0,0 @@ -From 9bcf4c81a559d1e7deac47b2e510d7f1e5837a02 Mon Sep 17 00:00:00 2001 -From: Pablo Saavedra -Date: Tue, 13 Mar 2018 17:36:20 +0100 -Subject: [PATCH] Fixed configure.ac: Fix pkgconfig sysroot locations - ---- - configure.ac | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/configure.ac b/configure.ac -index 65ceffb..ad4b0fc 100644 ---- a/configure.ac -+++ b/configure.ac -@@ -561,7 +561,7 @@ if test "$have_jansson" = "yes"; then - AC_DEFINE(WITH_JANSSON, 1, [Define if JANSSON is enabled]) - - AC_CHECK_TOOLS(READELF, [eu-readelf readelf]) -- JANSSON_LIBDIR=`$PKG_CONFIG --variable=libdir jansson` -+ JANSSON_LIBDIR=${PKG_CONFIG_SYSROOT_DIR}`$PKG_CONFIG --variable=libdir jansson` - JANSSON_SONAME=`$READELF -d $JANSSON_LIBDIR/libjansson.so |sed -n 's/.*SONAME.*\[[\([^]]*\)]]/\1/p'` - - if test "$JANSSON_SONAME" = ""; then diff --git a/meta-gnome/recipes-connectivity/networkmanager/networkmanager/0001-do-not-ask-host-for-ifcfg-defaults.patch b/meta-gnome/recipes-connectivity/networkmanager/networkmanager/0001-do-not-ask-host-for-ifcfg-defaults.patch new file mode 100644 index 0000000..92b1293 --- /dev/null +++ b/meta-gnome/recipes-connectivity/networkmanager/networkmanager/0001-do-not-ask-host-for-ifcfg-defaults.patch @@ -0,0 +1,24 @@ +From 37559b659e22886d5f55837d4f167ba5fda73e85 Mon Sep 17 00:00:00 2001 +From: Adrian Freihofer +Date: Sun, 29 Aug 2021 15:50:35 +0200 +Subject: [PATCH] do-not-ask-host-for-ifcfg-defaults + +--- + meson.build | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/meson.build b/meson.build +index d0cec83..289aa1b 100644 +--- a/meson.build ++++ b/meson.build +@@ -304,8 +304,8 @@ else + distro = 'unknown' + endif + +-enable_ifcfg_rh = get_option('ifcfg_rh') or (distro == 'redhat') +-enable_ifupdown = get_option('ifupdown') or (distro == 'debian') ++enable_ifcfg_rh = get_option('ifcfg_rh') ++enable_ifupdown = get_option('ifupdown') + + config_plugins_default = get_option('config_plugins_default') + config_h.set_quoted('NM_CONFIG_DEFAULT_MAIN_PLUGINS', config_plugins_default) diff --git a/meta-gnome/recipes-connectivity/networkmanager/networkmanager/0001-libnm-client-test-add-dependency-libnm_client_public.patch b/meta-gnome/recipes-connectivity/networkmanager/networkmanager/0001-libnm-client-test-add-dependency-libnm_client_public.patch new file mode 100644 index 0000000..6be2d4b --- /dev/null +++ b/meta-gnome/recipes-connectivity/networkmanager/networkmanager/0001-libnm-client-test-add-dependency-libnm_client_public.patch @@ -0,0 +1,34 @@ +From 7b5dc04e1fcc28dc653fb7bf0e9dda3700d93218 Mon Sep 17 00:00:00 2001 +From: Yi Zhao +Date: Tue, 3 May 2022 15:30:37 +0800 +Subject: [PATCH] libnm-client-test: add dependency libnm_client_public_dep + +Fix parallel build error: +| In file included from ../NetworkManager-1.36.0/src/libnm-client-test/nm-test-utils-impl.c:10: +| ../NetworkManager-1.36.0/src/libnm-client-public/NetworkManager.h:47:10: fatal error: nm-enum-types.h: No such file or directory +| 47 | #include "nm-enum-types.h" +| | ^~~~~~~~~~~~~~~~~ + +Upstream-Status: Submitted +[https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/1206] + +Signed-off-by: Yi Zhao +--- + src/libnm-client-test/meson.build | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/src/libnm-client-test/meson.build b/src/libnm-client-test/meson.build +index 8e2fba1130..bcac437702 100644 +--- a/src/libnm-client-test/meson.build ++++ b/src/libnm-client-test/meson.build +@@ -13,6 +13,7 @@ libnm_client_test = static_library( + ], + dependencies: [ + libnm_core_public_dep, ++ libnm_client_public_dep, + glib_dep, + ], + ) +-- +2.25.1 + diff --git a/meta-gnome/recipes-connectivity/networkmanager/networkmanager/0002-Do-not-create-settings-settings-property-documentati.patch b/meta-gnome/recipes-connectivity/networkmanager/networkmanager/0002-Do-not-create-settings-settings-property-documentati.patch deleted file mode 100644 index 86e8eaa..0000000 --- a/meta-gnome/recipes-connectivity/networkmanager/networkmanager/0002-Do-not-create-settings-settings-property-documentati.patch +++ /dev/null @@ -1,60 +0,0 @@ -From d0dead0478a070b96f37bd3b310443eaa8c93a25 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Andreas=20M=C3=BCller?= -Date: Mon, 5 Jul 2021 00:42:23 +0200 -Subject: [PATCH] Do not create settings settings/property documentation -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -It was tried to get this work by adding python3-pygobject-native to DEPENDS but -compile could not find (configure passed) python module gi. -Anyway it is not necessary for us to have the settings/property docs. - -Upstream-Status: Inappropriate [OE specific] - -Signed-off-by: Andreas Müller -Signed-off-by: Vinicius Aquino ---- - Makefile.am | 5 ----- - configure.ac | 5 ----- - 2 files changed, 10 deletions(-) - -diff --git a/Makefile.am b/Makefile.am -index 5a62070..3d0ebcd 100644 ---- a/Makefile.am -+++ b/Makefile.am -@@ -1860,15 +1860,10 @@ src/libnm-client-impl/libnm.typelib: src/libnm-client-impl/libnm.gir - INTROSPECTION_GIRS += src/libnm-client-impl/NM-1.0.gir - - libnm_noinst_data = \ -- src/nmcli/generate-docs-nm-settings-nmcli.xml \ -- man/nm-settings-docs-dbus.xml \ -- man/nm-settings-docs-nmcli.xml \ - src/libnm-client-impl/nm-property-infos-dbus.xml \ - src/libnm-client-impl/nm-property-infos-ifcfg-rh.xml \ - src/libnm-client-impl/nm-property-infos-keyfile.xml \ - src/libnm-client-impl/nm-property-infos-nmcli.xml \ -- src/libnm-client-impl/nm-settings-docs-gir.xml \ -- src/libnmc-setting/settings-docs-input.xml \ - $(NULL) - - noinst_DATA += $(libnm_noinst_data) -diff --git a/configure.ac b/configure.ac -index 8fe23de..dc24850 100644 ---- a/configure.ac -+++ b/configure.ac -@@ -1258,11 +1258,6 @@ GTK_DOC_CHECK(1.0) - # check if we can build setting property documentation - build_docs=no - if test -n "$INTROSPECTION_MAKEFILE"; then -- # If g-i is installed we know we have python, but we might not have pygobject -- if ! "$PYTHON" -c 'from gi.repository import GObject' > /dev/null 2>&1; then -- AC_MSG_ERROR(["--enable-introspection aims to build the settings documentation. This requires GObject introspection for python (pygobject)]) -- fi -- - AC_PATH_PROG(PERL, perl) - if test -z "$PERL"; then - AC_MSG_ERROR([--enable-introspection requires perl]) --- -2.31.1 - diff --git a/meta-gnome/recipes-connectivity/networkmanager/networkmanager/0003-install-firewalld-to-var-libdir-rather-than-hardcod-.patch b/meta-gnome/recipes-connectivity/networkmanager/networkmanager/0003-install-firewalld-to-var-libdir-rather-than-hardcod-.patch deleted file mode 100644 index 1174189..0000000 --- a/meta-gnome/recipes-connectivity/networkmanager/networkmanager/0003-install-firewalld-to-var-libdir-rather-than-hardcod-.patch +++ /dev/null @@ -1,30 +0,0 @@ -From 6388b16b93ba805f8877a94f47509f701250812f Mon Sep 17 00:00:00 2001 -From: Hongxu Jia -Date: Mon, 6 Jul 2020 19:33:54 -0700 -Subject: [PATCH] install firewalld to var-libdir rather than hardcod lib - -The oe install firewalld (split packages) to ${libdir}/firewalld/zones - -Upstream-Status: Inappropriate [oe specific] - -Signed-off-by: Hongxu Jia ---- - Makefile.am | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/Makefile.am b/Makefile.am -index 358b01a..5745339 100644 ---- a/Makefile.am -+++ b/Makefile.am -@@ -4778,7 +4778,7 @@ data/server.conf: $(srcdir)/data/server.conf.in - $(AM_V_GEN) $(data_edit) $< >$@ - - if WITH_FIREWALLD_ZONE --firewalldzonedir = $(prefix)/lib/firewalld/zones -+firewalldzonedir = $(libdir)/firewalld/zones - firewalldzone_DATA = data/nm-shared.xml - endif - --- -2.21.0 - diff --git a/meta-gnome/recipes-connectivity/networkmanager/networkmanager/enable-dhcpcd.conf b/meta-gnome/recipes-connectivity/networkmanager/networkmanager/enable-dhcpcd.conf new file mode 100644 index 0000000..8da4fe0 --- /dev/null +++ b/meta-gnome/recipes-connectivity/networkmanager/networkmanager/enable-dhcpcd.conf @@ -0,0 +1,2 @@ +[main] +dhcp=dhcpcd diff --git a/meta-gnome/recipes-connectivity/networkmanager/networkmanager/enable-iwd.conf b/meta-gnome/recipes-connectivity/networkmanager/networkmanager/enable-iwd.conf new file mode 100644 index 0000000..abb5937 --- /dev/null +++ b/meta-gnome/recipes-connectivity/networkmanager/networkmanager/enable-iwd.conf @@ -0,0 +1,3 @@ +[device] +wifi.iwd.autoconnect=yes +wifi.backend=iwd diff --git a/meta-gnome/recipes-connectivity/networkmanager/networkmanager_1.32.10.bb b/meta-gnome/recipes-connectivity/networkmanager/networkmanager_1.32.10.bb deleted file mode 100644 index 94194e8..0000000 --- a/meta-gnome/recipes-connectivity/networkmanager/networkmanager_1.32.10.bb +++ /dev/null @@ -1,180 +0,0 @@ -SUMMARY = "NetworkManager" -HOMEPAGE = "https://wiki.gnome.org/Projects/NetworkManager" -SECTION = "net/misc" - -LICENSE = "GPL-2.0-or-later & LGPL-2.1-or-later" -LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263 \ - file://COPYING.LGPL;md5=4fbd65380cdd255951079008b364516c \ -" - -DEPENDS = " \ - intltool-native \ - libxslt-native \ - libnl \ - udev \ - util-linux \ - libndp \ - libnewt \ - curl \ -" - -inherit gnomebase gettext update-rc.d systemd vala gobject-introspection gtk-doc update-alternatives upstream-version-is-even - -SRC_URI = " \ - ${GNOME_MIRROR}/NetworkManager/${@gnome_verdir("${PV}")}/NetworkManager-${PV}.tar.xz \ - file://${BPN}.initd \ - file://0001-Fixed-configure.ac-Fix-pkgconfig-sysroot-locations.patch \ - file://0002-Do-not-create-settings-settings-property-documentati.patch \ - file://0003-install-firewalld-to-var-libdir-rather-than-hardcod-.patch \ -" -SRC_URI[sha256sum] = "3e5ccc66805659e3f11a718e3a599f9726b79a01d6ff14814be6ad8bc5da8bb8" - -S = "${WORKDIR}/NetworkManager-${PV}" - -EXTRA_OECONF = " \ - --disable-ifcfg-rh \ - --disable-more-warnings \ - --with-iptables=${sbindir}/iptables \ - --with-tests \ - --with-nmtui=yes \ - --with-udev-dir=${nonarch_base_libdir}/udev \ - --with-dhclient=no \ - --with-dhcpcd=no \ - --with-dhcpcanon=no \ - --with-netconfig=no \ -" - -# stolen from https://github.com/void-linux/void-packages/blob/master/srcpkgs/NetworkManager/template -# avoids: -# | ../NetworkManager-1.16.0/libnm-core/nm-json.c:106:50: error: 'RTLD_DEEPBIND' undeclared (first use in this function); did you mean 'RTLD_DEFAULT'? -CFLAGS:append:libc-musl = " \ - -DRTLD_DEEPBIND=0 \ -" - -do_compile:prepend() { - export GIR_EXTRA_LIBS_PATH="${B}/src/libnm-client-impl/.libs" -} - -PACKAGECONFIG ??= "nss ifupdown dnsmasq nmcli \ - ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'systemd', bb.utils.contains('DISTRO_FEATURES', 'x11', 'consolekit', '', d), d)} \ - ${@bb.utils.contains('DISTRO_FEATURES', 'bluetooth', 'bluez5', '', d)} \ - ${@bb.utils.filter('DISTRO_FEATURES', 'wifi polkit', d)} \ - ${@bb.utils.contains('DISTRO_FEATURES', 'selinux', 'selinux audit', '', d)} \ -" - -inherit ${@bb.utils.contains('PACKAGECONFIG', 'nmcli', 'bash-completion', '', d)} - -PACKAGECONFIG[systemd] = " \ - --with-systemdsystemunitdir=${systemd_unitdir}/system --with-session-tracking=systemd, \ - --without-systemdsystemunitdir, \ -" -PACKAGECONFIG[polkit] = "--enable-polkit,--disable-polkit,polkit" -PACKAGECONFIG[bluez5] = "--enable-bluez5-dun,--disable-bluez5-dun,bluez5" -# consolekit is not picked by shlibs, so add it to RDEPENDS too -PACKAGECONFIG[consolekit] = "--with-session-tracking=consolekit,,consolekit,consolekit" -PACKAGECONFIG[modemmanager] = "--with-modem-manager-1=yes,--with-modem-manager-1=no,modemmanager" -PACKAGECONFIG[ppp] = "--enable-ppp,--disable-ppp,ppp,ppp" -PACKAGECONFIG[dnsmasq] = "--with-dnsmasq=${bindir}/dnsmasq" -PACKAGECONFIG[nss] = "--with-crypto=nss,,nss" -PACKAGECONFIG[resolvconf] = "--with-resolvconf=${base_sbindir}/resolvconf,,,resolvconf" -PACKAGECONFIG[gnutls] = "--with-crypto=gnutls,,gnutls" -PACKAGECONFIG[wifi] = "--with-wext=yes --enable-wifi=yes,--with-wext=no --enable-wifi=no,,wpa-supplicant" -PACKAGECONFIG[ifupdown] = "--enable-ifupdown,--disable-ifupdown" -PACKAGECONFIG[qt4-x11-free] = "--enable-qt,--disable-qt,qt4-x11-free" -PACKAGECONFIG[cloud-setup] = "--with-nm-cloud-setup=yes,--with-nm-cloud-setup=no" -PACKAGECONFIG[nmcli] = "--with-nmcli=yes,--with-nmcli=no,readline" -PACKAGECONFIG[ovs] = "--enable-ovs,--disable-ovs,jansson" -PACKAGECONFIG[audit] = "--with-libaudit,--without-libaudit,audit" -PACKAGECONFIG[selinux] = "--with-selinux,--without-selinux,libselinux" - -PACKAGES =+ " \ - ${PN}-nmcli ${PN}-nmcli-doc \ - ${PN}-nmtui ${PN}-nmtui-doc \ - ${PN}-adsl ${PN}-cloud-setup \ -" - -SYSTEMD_PACKAGES = "${PN} ${PN}-cloud-setup" - -FILES:${PN}-adsl = "${libdir}/NetworkManager/${PV}/libnm-device-plugin-adsl.so" - -FILES:${PN}-cloud-setup = " \ - ${libexecdir}/nm-cloud-setup \ - ${systemd_system_unitdir}/nm-cloud-setup.service \ - ${systemd_system_unitdir}/nm-cloud-setup.timer \ - ${libdir}/NetworkManager/dispatcher.d/90-nm-cloud-setup.sh \ - ${libdir}/NetworkManager/dispatcher.d/no-wait.d/90-nm-cloud-setup.sh \ -" -ALLOW_EMPTY:${PN}-cloud-setup = "1" -SYSTEMD_SERVICE:${PN}-cloud-setup = "${@bb.utils.contains('PACKAGECONFIG', 'cloud-setup', 'nm-cloud-setup.service nm-cloud-setup.timer', '', d)}" - -FILES:${PN} += " \ - ${libexecdir} \ - ${libdir}/NetworkManager/${PV}/*.so \ - ${libdir}/NetworkManager \ - ${libdir}/firewalld/zones \ - ${nonarch_libdir}/NetworkManager/conf.d \ - ${nonarch_libdir}/NetworkManager/dispatcher.d \ - ${nonarch_libdir}/NetworkManager/dispatcher.d/pre-down.d \ - ${nonarch_libdir}/NetworkManager/dispatcher.d/pre-up.d \ - ${nonarch_libdir}/NetworkManager/dispatcher.d/no-wait.d \ - ${nonarch_libdir}/NetworkManager/VPN \ - ${nonarch_libdir}/NetworkManager/system-connections \ - ${datadir}/polkit-1 \ - ${datadir}/dbus-1 \ - ${nonarch_base_libdir}/udev/* \ - ${systemd_system_unitdir} \ - ${libdir}/pppd \ -" - -RRECOMMENDS:${PN} += "iptables \ - ${@bb.utils.filter('PACKAGECONFIG', 'dnsmasq', d)} \ -" -RCONFLICTS:${PN} = "connman" - -FILES:${PN}-dev += " \ - ${datadir}/NetworkManager/gdb-cmd \ - ${libdir}/pppd/*/*.la \ - ${libdir}/NetworkManager/*.la \ - ${libdir}/NetworkManager/${PV}/*.la \ -" - -FILES:${PN}-nmcli = " \ - ${bindir}/nmcli \ -" - -FILES:${PN}-nmcli-doc = " \ - ${mandir}/man1/nmcli* \ -" - -FILES:${PN}-nmtui = " \ - ${bindir}/nmtui \ - ${bindir}/nmtui-edit \ - ${bindir}/nmtui-connect \ - ${bindir}/nmtui-hostname \ -" - -FILES:${PN}-nmtui-doc = " \ - ${mandir}/man1/nmtui* \ -" - -INITSCRIPT_NAME = "network-manager" -SYSTEMD_SERVICE:${PN} = "${@bb.utils.contains('PACKAGECONFIG', 'systemd', 'NetworkManager.service NetworkManager-dispatcher.service', '', d)}" - -ALTERNATIVE_PRIORITY = "100" -ALTERNATIVE:${PN} = "${@bb.utils.contains('DISTRO_FEATURES','systemd','resolv-conf','',d)}" -ALTERNATIVE_TARGET[resolv-conf] = "${@bb.utils.contains('DISTRO_FEATURES','systemd','${sysconfdir}/resolv-conf.NetworkManager','',d)}" -ALTERNATIVE_LINK_NAME[resolv-conf] = "${@bb.utils.contains('DISTRO_FEATURES','systemd','${sysconfdir}/resolv.conf','',d)}" - -do_install:append() { - install -Dm 0755 ${WORKDIR}/${BPN}.initd ${D}${sysconfdir}/init.d/network-manager - - rm -rf ${D}/run ${D}${localstatedir}/run - - if ${@bb.utils.contains('DISTRO_FEATURES','systemd','true','false',d)}; then - # For read-only filesystem, do not create links during bootup - ln -sf ../run/NetworkManager/resolv.conf ${D}${sysconfdir}/resolv-conf.NetworkManager - - # systemd v210 and newer do not need this rule file - rm ${D}/${nonarch_base_libdir}/udev/rules.d/84-nm-drivers.rules - fi -} diff --git a/meta-gnome/recipes-connectivity/networkmanager/networkmanager_1.36.2.bb b/meta-gnome/recipes-connectivity/networkmanager/networkmanager_1.36.2.bb new file mode 100644 index 0000000..6c665d5 --- /dev/null +++ b/meta-gnome/recipes-connectivity/networkmanager/networkmanager_1.36.2.bb @@ -0,0 +1,249 @@ +SUMMARY = "NetworkManager" +HOMEPAGE = "https://wiki.gnome.org/Projects/NetworkManager" +SECTION = "net/misc" + +LICENSE = "GPL-2.0-or-later & LGPL-2.1-or-later" +LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263 \ + file://COPYING.LGPL;md5=4fbd65380cdd255951079008b364516c \ +" + +DEPENDS = " \ + coreutils-native \ + intltool-native \ + libxslt-native \ + libnl \ + udev \ + util-linux \ + libndp \ + libnewt \ + curl \ + dbus \ +" + +GNOMEBASEBUILDCLASS = "meson" +inherit gnomebase gettext update-rc.d systemd gobject-introspection gtk-doc update-alternatives upstream-version-is-even + +SRC_URI = " \ + ${GNOME_MIRROR}/NetworkManager/${@gnome_verdir("${PV}")}/NetworkManager-${PV}.tar.xz \ + file://${BPN}.initd \ + file://enable-dhcpcd.conf \ + file://enable-iwd.conf \ + file://0001-do-not-ask-host-for-ifcfg-defaults.patch \ + file://0001-libnm-client-test-add-dependency-libnm_client_public.patch \ +" +SRC_URI[sha256sum] = "ab855cbe3b41832e9a3b003810e7c7313dfe19e630d29806d14d87fdd1470cab" + +S = "${WORKDIR}/NetworkManager-${PV}" + +# ['auto', 'symlink', 'file', 'netconfig', 'resolvconf'] +NETWORKMANAGER_DNS_RC_MANAGER_DEFAULT ??= "auto" + +# ['dhcpcanon', 'dhclient', 'dhcpcd', 'internal', 'nettools'] +NETWORKMANAGER_DHCP_DEFAULT ??= "internal" + +EXTRA_OEMESON = "\ + -Difcfg_rh=false \ + -Dtests=yes \ + -Dnmtui=true \ + -Dudev_dir=${nonarch_base_libdir}/udev \ + -Dlibpsl=false \ + -Dqt=false \ + -Dconfig_dns_rc_manager_default=${NETWORKMANAGER_DNS_RC_MANAGER_DEFAULT} \ + -Dconfig_dhcp_default=${NETWORKMANAGER_DHCP_DEFAULT} \ + -Ddhcpcanon=false \ +" + +# stolen from https://github.com/void-linux/void-packages/blob/master/srcpkgs/NetworkManager/template +# avoids: +# | ../NetworkManager-1.16.0/libnm-core/nm-json.c:106:50: error: 'RTLD_DEEPBIND' undeclared (first use in this function); did you mean 'RTLD_DEFAULT'? +CFLAGS:append:libc-musl = " \ + -DRTLD_DEEPBIND=0 \ +" + +do_compile:prepend() { + export GI_TYPELIB_PATH="${B}}/src/libnm-client-impl${GI_TYPELIB_PATH:+:$GI_TYPELIB_PATH}" +} + +PACKAGECONFIG ??= "readline nss ifupdown dnsmasq nmcli vala \ + ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'systemd', bb.utils.contains('DISTRO_FEATURES', 'x11', 'consolekit', '', d), d)} \ + ${@bb.utils.contains('DISTRO_FEATURES', 'bluetooth', 'bluez5', '', d)} \ + ${@bb.utils.filter('DISTRO_FEATURES', 'wifi polkit', d)} \ + ${@bb.utils.contains('DISTRO_FEATURES', 'selinux', 'selinux audit', '', d)} \ +" + +inherit ${@bb.utils.contains('PACKAGECONFIG', 'nmcli', 'bash-completion', '', d)} +inherit ${@bb.utils.contains('PACKAGECONFIG', 'vala', 'vala', '', d)} + +PACKAGECONFIG[systemd] = "\ + -Dsystemdsystemunitdir=${systemd_unitdir}/system -Dsession_tracking=systemd,\ + -Dsystemdsystemunitdir=no -Dsystemd_journal=false -Dsession_tracking=no\ +" +PACKAGECONFIG[polkit] = "-Dpolkit=true,-Dpolkit=false,polkit" +PACKAGECONFIG[bluez5] = "-Dbluez5_dun=true,-Dbluez5_dun=false,bluez5" +# consolekit is not picked by shlibs, so add it to RDEPENDS too +PACKAGECONFIG[consolekit] = "-Dsession_tracking_consolekit=true,-Dsession_tracking_consolekit=false,consolekit,consolekit" +PACKAGECONFIG[modemmanager] = "-Dmodem_manager=true,-Dmodem_manager=false,modemmanager mobile-broadband-provider-info" +PACKAGECONFIG[ppp] = "-Dppp=true,-Dppp=false,ppp,ppp" +PACKAGECONFIG[dnsmasq] = "-Ddnsmasq=${bindir}/dnsmasq" +PACKAGECONFIG[nss] = "-Dcrypto=nss,,nss" +PACKAGECONFIG[resolvconf] = "-Dresolvconf=${base_sbindir}/resolvconf,-Dresolvconf=no,,resolvconf" +PACKAGECONFIG[gnutls] = "-Dcrypto=gnutls,,gnutls" +PACKAGECONFIG[wifi] = "-Dwext=true -Dwifi=true,-Dwext=false -Dwifi=false" +PACKAGECONFIG[iwd] = "-Diwd=true,-Diwd=false" +PACKAGECONFIG[ifupdown] = "-Difupdown=true,-Difupdown=false" +PACKAGECONFIG[cloud-setup] = "-Dnm_cloud_setup=true,-Dnm_cloud_setup=false" +PACKAGECONFIG[nmcli] = "-Dnmcli=true,-Dnmcli=false" +PACKAGECONFIG[readline] = "-Dreadline=libreadline,,readline" +PACKAGECONFIG[libedit] = "-Dreadline=libedit,,libedit" +PACKAGECONFIG[ovs] = "-Dovs=true,-Dovs=false,jansson" +PACKAGECONFIG[audit] = "-Dlibaudit=yes,-Dlibaudit=no" +PACKAGECONFIG[selinux] = "-Dselinux=true,-Dselinux=false,libselinux" +PACKAGECONFIG[vala] = "-Dvapi=true,-Dvapi=false" +PACKAGECONFIG[dhcpcd] = "-Ddhcpcd=yes,-Ddhcpcd=no,,dhcpcd" +PACKAGECONFIG[dhclient] = "-Ddhclient=yes,-Ddhclient=no,,dhcp" +PACKAGECONFIG[concheck] = "-Dconcheck=true,-Dconcheck=false" + + +PACKAGES =+ " \ + ${PN}-adsl \ + ${PN}-bluetooth \ + ${PN}-cloud-setup \ + ${PN}-nmcli ${PN}-nmcli-doc \ + ${PN}-nmtui ${PN}-nmtui-doc \ + ${PN}-wifi \ + ${PN}-wwan \ + ${PN}-ovs ${PN}-ovs-doc \ + ${PN}-ppp \ +" + +SYSTEMD_PACKAGES = "${PN} ${PN}-cloud-setup" + +NETWORKMANAGER_PLUGINDIR = "${libdir}/NetworkManager/${PV}" + +FILES:${PN}-adsl = "${NETWORKMANAGER_PLUGINDIR}/libnm-device-plugin-adsl.so" + +FILES:${PN}-bluetooth = "${NETWORKMANAGER_PLUGINDIR}/libnm-device-plugin-bluetooth.so" + +FILES:${PN}-cloud-setup = " \ + ${libexecdir}/nm-cloud-setup \ + ${systemd_system_unitdir}/nm-cloud-setup.service \ + ${systemd_system_unitdir}/nm-cloud-setup.timer \ + ${libdir}/NetworkManager/dispatcher.d/90-nm-cloud-setup.sh \ + ${libdir}/NetworkManager/dispatcher.d/no-wait.d/90-nm-cloud-setup.sh \ +" +ALLOW_EMPTY:${PN}-cloud-setup = "1" +SYSTEMD_SERVICE:${PN}-cloud-setup = "${@bb.utils.contains('PACKAGECONFIG', 'cloud-setup', 'nm-cloud-setup.service nm-cloud-setup.timer', '', d)}" + +FILES:${PN}-nmcli = " \ + ${bindir}/nmcli \ +" + +FILES:${PN}-nmcli-doc = " \ + ${mandir}/man1/nmcli* \ +" + +FILES:${PN}-nmtui = " \ + ${bindir}/nmtui \ + ${bindir}/nmtui-edit \ + ${bindir}/nmtui-connect \ + ${bindir}/nmtui-hostname \ +" + +FILES:${PN}-nmtui-doc = " \ + ${mandir}/man1/nmtui* \ +" + +FILES:${PN}-wifi = "${NETWORKMANAGER_PLUGINDIR}/libnm-device-plugin-wifi.so" + +FILES:${PN}-wwan = "\ + ${NETWORKMANAGER_PLUGINDIR}/libnm-device-plugin-wwan.so \ + ${NETWORKMANAGER_PLUGINDIR}/libnm-wwan.so \ +" + +FILES:${PN}-ovs = "\ + ${NETWORKMANAGER_PLUGINDIR}/libnm-device-plugin-ovs.so \ + ${systemd_system_unitdir}/NetworkManager.service.d/NetworkManager-ovs.conf \ +" + +FILES:${PN}-ovs-doc = "\ + ${mandir}/man7/nm-openvswitch.7* \ +" + +FILES:${PN}-ppp = "\ + ${NETWORKMANAGER_PLUGINDIR}/libnm-ppp-plugin.so \ + ${libdir}/pppd/*/nm-pppd-plugin.so \ +" + +FILES:${PN}-dev += " \ + ${libdir}/pppd/*/*.la \ + ${libdir}/NetworkManager/*.la \ + ${NETWORKMANAGER_PLUGINDIR}/*.la \ +" + +FILES:${PN} += " \ + ${libexecdir} \ + ${libdir}/NetworkManager \ + ${nonarch_libdir}/firewalld/zones \ + ${nonarch_libdir}/NetworkManager/conf.d \ + ${nonarch_libdir}/NetworkManager/dispatcher.d \ + ${nonarch_libdir}/NetworkManager/dispatcher.d/pre-down.d \ + ${nonarch_libdir}/NetworkManager/dispatcher.d/pre-up.d \ + ${nonarch_libdir}/NetworkManager/dispatcher.d/no-wait.d \ + ${nonarch_libdir}/NetworkManager/VPN \ + ${nonarch_libdir}/NetworkManager/system-connections \ + ${datadir}/polkit-1 \ + ${datadir}/dbus-1 \ + ${nonarch_base_libdir}/udev/* \ + ${systemd_system_unitdir} \ +" + +RRECOMMENDS:${PN} += "\ + iptables \ + ${@bb.utils.filter('PACKAGECONFIG', 'dnsmasq', d)} \ + ${@bb.utils.contains('PACKAGECONFIG','adsl','${PN}-adsl','',d)} \ + ${@bb.utils.contains('PACKAGECONFIG','bluez5','${PN}-bluetooth','',d)} \ + ${@bb.utils.contains('PACKAGECONFIG','cloud-setup','${PN}-cloud-setup','',d)} \ + ${@bb.utils.contains('PACKAGECONFIG','nmcli','${PN}-nmcli','',d)} \ + ${@bb.utils.contains('PACKAGECONFIG','nmtui','${PN}-nmtui','',d)} \ + ${@bb.utils.contains('PACKAGECONFIG','wifi','${PN}-wifi','',d)} \ + ${@bb.utils.contains('PACKAGECONFIG','wwan','${PN}-wwan','',d)} \ + ${@bb.utils.contains('PACKAGECONFIG','ovs','${PN}-ovs','',d)} \ + ${@bb.utils.contains('PACKAGECONFIG','ppp','${PN}-ppp','',d)} \ +" +RCONFLICTS:${PN} = "connman" + + +INITSCRIPT_NAME = "network-manager" +SYSTEMD_SERVICE:${PN} = "\ + NetworkManager.service \ + NetworkManager-dispatcher.service \ +" + +ALTERNATIVE_PRIORITY = "100" +ALTERNATIVE:${PN} = "${@bb.utils.contains('DISTRO_FEATURES','systemd','resolv-conf','',d)}" +ALTERNATIVE_TARGET[resolv-conf] = "${@bb.utils.contains('DISTRO_FEATURES','systemd','${sysconfdir}/resolv-conf.NetworkManager','',d)}" +ALTERNATIVE_LINK_NAME[resolv-conf] = "${@bb.utils.contains('DISTRO_FEATURES','systemd','${sysconfdir}/resolv.conf','',d)}" + +do_install:append() { + install -Dm 0755 ${WORKDIR}/${BPN}.initd ${D}${sysconfdir}/init.d/network-manager + + rm -rf ${D}/run ${D}${localstatedir}/run + + if ${@bb.utils.contains('DISTRO_FEATURES','systemd','true','false',d)}; then + # For read-only filesystem, do not create links during bootup + ln -sf ../run/NetworkManager/resolv.conf ${D}${sysconfdir}/resolv-conf.NetworkManager + + # systemd v210 and newer do not need this rule file + rm ${D}/${nonarch_base_libdir}/udev/rules.d/84-nm-drivers.rules + fi + + # Enable iwd if compiled + if ${@bb.utils.contains('PACKAGECONFIG','iwd','true','false',d)}; then + install -Dm 0644 ${WORKDIR}/enable-iwd.conf ${D}${libdir}/NetworkManager/conf.d/enable-iwd.conf + fi + + # Enable dhcpd if compiled + if ${@bb.utils.contains('PACKAGECONFIG','dhcpcd','true','false',d)}; then + install -Dm 0644 ${WORKDIR}/enable-dhcpcd.conf ${D}${libdir}/NetworkManager/conf.d/enable-dhcpcd.conf + fi +} diff --git a/meta-gnome/recipes-freedesktop/accountsservice/accountsservice/0001-musl-Hack-to-fix-build.patch b/meta-gnome/recipes-freedesktop/accountsservice/accountsservice/0001-musl-Hack-to-fix-build.patch new file mode 100644 index 0000000..99bd09a --- /dev/null +++ b/meta-gnome/recipes-freedesktop/accountsservice/accountsservice/0001-musl-Hack-to-fix-build.patch @@ -0,0 +1,34 @@ +From ff0718174faf1167fb4765ebe4bd280bbe8d2ac6 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Andreas=20M=C3=BCller?= +Date: Sun, 8 Dec 2019 23:42:00 +0100 +Subject: [PATCH] musl: Hack to fix configure + +--- + meson.build | 11 ++++++++--- + 1 file changed, 8 insertions(+), 3 deletions(-) + +diff --git a/meson.build b/meson.build +index 075776f..dfd7421 100644 +--- a/meson.build ++++ b/meson.build +@@ -101,9 +101,14 @@ elif cc.has_header_symbol('paths.h', '_PATH_WTMPX') + + config_h.set('PATH_WTMP', '_PATH_WTMPX') + else +- path_wtmp = '/var/log/utx.log' +- assert(run_command('test', '-e', path_wtmp).returncode() == 0, 'Do not know which filename to watch for wtmp changes') +- config_h.set_quoted('PATH_WTMP', path_wtmp) ++ # musl: This is just a build fix hack. ++ # As usual they know better, consider all other projects crap and offer zero ++ # alternatives: So wtmp is a dead stub only [1] (= /dev/null/wtmp - taken ++ # from musl sources). ++ # Maybe a hero comes along and adds utmps [2] to make accountsservice useful for musl ++ # [1] https://wiki.musl-libc.org/faq.html#Q:-Why-is-the-utmp/wtmp-functionality-only-implemented-as-stubs? ++ # [2] https://github.com/skarnet/utmps ++ config_h.set_quoted('PATH_WTMP', '/dev/null/wtmp') + endif + + # compiler flags +-- +2.34.1 + diff --git a/meta-gnome/recipes-freedesktop/accountsservice/accountsservice/0002-musl-add-missing-fgetspent_r.patch b/meta-gnome/recipes-freedesktop/accountsservice/accountsservice/0002-musl-add-missing-fgetspent_r.patch new file mode 100644 index 0000000..2b0924b --- /dev/null +++ b/meta-gnome/recipes-freedesktop/accountsservice/accountsservice/0002-musl-add-missing-fgetspent_r.patch @@ -0,0 +1,44 @@ +From 7401e682400df87f3258f795bb1d143f64a35a9f Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Andreas=20M=C3=BCller?= +Date: Mon, 9 Dec 2019 00:12:08 +0100 +Subject: [PATCH] musl: add missing fgetspent_r + +Stolen from void-linux + +Upstream-Status: Inappropriate [musl-specific] + +--- + src/daemon.c | 20 ++++++++++++++++++++ + 1 file changed, 20 insertions(+) + +diff --git a/src/daemon.c b/src/daemon.c +index c52bda3..a7676fe 100644 +--- a/src/daemon.c ++++ b/src/daemon.c +@@ -164,6 +164,26 @@ remove_cache_files (const gchar *user_name) + g_remove (icon_filename); + } + ++/* Musl libc does not support fgetspent_r(), write own ++ * wrapper ++ */ ++static int fgetspent_r(FILE *fp, struct spwd *spbuf, char *buf, size_t buflen, struct spwd **spbufp) { ++ struct spwd *shadow_entry = fgetspent(fp); ++ if(!shadow_entry) ++ return -1; ++ size_t namplen = strlen(shadow_entry->sp_namp); ++ size_t pwdplen = strlen(shadow_entry->sp_pwdp); ++ ++ if(namplen + pwdplen + 2 > buflen) ++ return -1; ++ ++ *spbufp = memcpy(spbuf, shadow_entry, sizeof(struct spwd)); ++ spbuf->sp_namp = strncpy(buf, shadow_entry->sp_namp, namplen + 1); ++ spbuf->sp_pwdp = strncpy(buf + namplen + 1, shadow_entry->sp_pwdp, pwdplen + 1); ++ ++ return 0; ++} ++ + static struct passwd * + entry_generator_fgetpwent (Daemon *daemon, + GHashTable *users, diff --git a/meta-gnome/recipes-freedesktop/accountsservice/accountsservice_0.6.55.bb b/meta-gnome/recipes-freedesktop/accountsservice/accountsservice_0.6.55.bb deleted file mode 100644 index 5f241e0..0000000 --- a/meta-gnome/recipes-freedesktop/accountsservice/accountsservice_0.6.55.bb +++ /dev/null @@ -1,22 +0,0 @@ -SUMMARY = "D-Bus service for accessing the list of user accounts and information attached to those accounts." -HOMEPAGE = "https://www.freedesktop.org/wiki/Software/AccountsService" - -LICENSE = "GPL-3.0-only" -LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504" - -SRC_URI = "https://www.freedesktop.org/software/accountsservice/accountsservice-${PV}.tar.xz" -SRC_URI[md5sum] = "6e4c6fbd490260cfe17de2e76f5d803a" -SRC_URI[sha256sum] = "ff2b2419a7e06bd9cb335ffe391c7409b49a0f0130b890bd54692a3986699c9b" - -DEPENDS = "glib-2.0 intltool-native polkit systemd glib-2.0-native dbus" - -inherit meson pkgconfig gettext gobject-introspection - -FILES:${PN} += "\ - ${datadir}/dbus-1/interfaces/*.xml \ - ${datadir}/dbus-1/system-services/org.freedesktop.Accounts.service \ - ${datadir}/polkit-1/actions/org.freedesktop.accounts.policy \ - ${systemd_system_unitdir} \ -" -EXTRA_OEMESON = "-Dsystemd=true" - diff --git a/meta-gnome/recipes-freedesktop/accountsservice/accountsservice_22.08.8.bb b/meta-gnome/recipes-freedesktop/accountsservice/accountsservice_22.08.8.bb new file mode 100644 index 0000000..439958c --- /dev/null +++ b/meta-gnome/recipes-freedesktop/accountsservice/accountsservice_22.08.8.bb @@ -0,0 +1,32 @@ +DESCRIPTION = "D-Bus interfaces for querying and manipulating user account information" +HOMEPAGE = "https://www.freedesktop.org/wiki/Software/AccountsService/" +LICENSE = "GPL-3.0-only" +LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504" + +DEPENDS = " \ + dbus \ + polkit \ +" + +inherit meson gobject-introspection gtk-doc features_check systemd vala + +REQUIRED_DISTRO_FEATURES = "polkit" + +SRC_URI = "https://www.freedesktop.org/software/${BPN}/${BPN}-${PV}.tar.xz" +SRC_URI:append:libc-musl = " \ + file://0001-musl-Hack-to-fix-build.patch \ + file://0002-musl-add-missing-fgetspent_r.patch \ +" +SRC_URI[sha256sum] = "909997a76919fe7dc138a9a01cea70bd622d5a932dbc9fb13010113023a7a391" + +GTKDOC_MESON_OPTION = "gtk_doc" + +PACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES', 'systemd', d)}" +PACKAGECONFIG[systemd] = ", -Dsystemdsystemunitdir='no', systemd" + +SYSTEMD_SERVICE:${PN} = "accounts-daemon.service" + +FILES:${PN} += " \ + ${datadir}/dbus-1 \ + ${datadir}/polkit-1 \ +" diff --git a/meta-gnome/recipes-freedesktop/colord/colord-gtk_0.1.26.bb b/meta-gnome/recipes-freedesktop/colord/colord-gtk_0.1.26.bb deleted file mode 100644 index ad7a8a0..0000000 --- a/meta-gnome/recipes-freedesktop/colord/colord-gtk_0.1.26.bb +++ /dev/null @@ -1,16 +0,0 @@ -SUMMARY = "GTK support library for colord" -HOMEPAGE = "https://www.freedesktop.org/software/colord/" - -LICENSE = "LGPL-3.0-only" -LIC_FILES_CHKSUM = "file://COPYING;md5=e6a600fd5e1d9cbde2d983680233ad02" - -SRC_URI = "https://www.freedesktop.org/software/colord/releases/colord-gtk-${PV}.tar.xz" -SRC_URI[md5sum] = "bb9d6f3c037152ad791003375aa6c16c" -SRC_URI[sha256sum] = "28d00b7f157ea3e2ea5315387b2660fde82faba16674861c50465e55d61a3e45" - -DEPENDS = "lcms glib-2.0 intltool-native gtk+3 glib-2.0-native colord" - -inherit pkgconfig gettext autotools - -EXTRA_OECONF = "--enable-introspection=no --disable-gtk-doc" - diff --git a/meta-gnome/recipes-freedesktop/colord/colord-gtk_0.3.0.bb b/meta-gnome/recipes-freedesktop/colord/colord-gtk_0.3.0.bb new file mode 100644 index 0000000..0e86d78 --- /dev/null +++ b/meta-gnome/recipes-freedesktop/colord/colord-gtk_0.3.0.bb @@ -0,0 +1,25 @@ +SUMMARY = "GTK support library for colord" +HOMEPAGE = "https://www.freedesktop.org/software/colord/" +LICENSE = "LGPL-3.0-only" +LIC_FILES_CHKSUM = "file://COPYING;md5=e6a600fd5e1d9cbde2d983680233ad02" + +inherit meson gobject-introspection gettext gtk-doc features_check + +DEPENDS = " \ + colord \ +" + +SRC_URI = "http://www.freedesktop.org/software/colord/releases/${BPN}-${PV}.tar.xz" +SRC_URI[sha256sum] = "b9466656d66d9a6ffbc2dd04fa91c8f6af516bf9efaacb69744eec0f56f3c1d0" + +PACKAGECONFIG ??= "gtk3 gtk4" +PACKAGECONFIG[gtk3] = "-Dgtk3=true, -Dgtk3=false, gtk+3" +PACKAGECONFIG[gtk4] = "-Dgtk4=true, -Dgtk4=false, gtk4" + +EXTRA_OEMESON = "-Dman=false" +GIR_MESON_OPTION = "" +# gobject-introspection is mandatory and cannot be configured +REQUIRED_DISTRO_FEATURES = "gobject-introspection-data" + +# colord +REQUIRED_DISTRO_FEATURES += "polkit" diff --git a/meta-gnome/recipes-freedesktop/polkit/polkit/0001-make-netgroup-support-configurable.patch b/meta-gnome/recipes-freedesktop/polkit/polkit/0001-make-netgroup-support-configurable.patch deleted file mode 100644 index 3b0ef5e..0000000 --- a/meta-gnome/recipes-freedesktop/polkit/polkit/0001-make-netgroup-support-configurable.patch +++ /dev/null @@ -1,93 +0,0 @@ -From 7d5e205aa58a10e7b1ccc2fa75b443508a5c3e18 Mon Sep 17 00:00:00 2001 -From: Khem Raj -Date: Wed, 20 Jan 2016 04:31:59 +0000 -Subject: [PATCH] make netgroup support configurable - -Disable using innetgr and *netigrent function if not available - -These functions are not available on all libc implementations e.g. musl -doesnt have them. - -Signed-off-by: Khem Raj ---- -Upstream-Status: Pending - -Rebase to 0.115 -Signed-off-by: Hongxu Jia ---- - configure.ac | 2 +- - src/polkitbackend/polkitbackendinteractiveauthority.c | 6 +++++- - src/polkitbackend/polkitbackendjsauthority.cpp | 2 ++ - 3 files changed, 8 insertions(+), 2 deletions(-) - -diff --git a/configure.ac b/configure.ac -index 8b3e1b1..1c392df 100644 ---- a/configure.ac -+++ b/configure.ac -@@ -99,7 +99,7 @@ AC_CHECK_LIB(expat,XML_ParserCreate,[EXPAT_LIBS="-lexpat"], - [AC_MSG_ERROR([Can't find expat library. Please install expat.])]) - AC_SUBST(EXPAT_LIBS) - --AC_CHECK_FUNCS(clearenv fdatasync) -+AC_CHECK_FUNCS(clearenv fdatasync getnetgrent innetgr) - - if test "x$GCC" = "xyes"; then - LDFLAGS="-Wl,--as-needed $LDFLAGS" -diff --git a/src/polkitbackend/polkitbackendinteractiveauthority.c b/src/polkitbackend/polkitbackendinteractiveauthority.c -index cb6fdab..de3f752 100644 ---- a/src/polkitbackend/polkitbackendinteractiveauthority.c -+++ b/src/polkitbackend/polkitbackendinteractiveauthority.c -@@ -2224,7 +2224,7 @@ get_users_in_group (PolkitIdentity *group, - out: - return ret; - } -- -+#if defined HAVE_GETNETGRENT - static GList * - get_users_in_net_group (PolkitIdentity *group, - gboolean include_root) -@@ -2285,6 +2285,8 @@ get_users_in_net_group (PolkitIdentity *group, - return ret; - } - -+#endif -+ - /* ---------------------------------------------------------------------------------------------------- */ - - static void -@@ -2369,10 +2371,12 @@ authentication_agent_initiate_challenge (AuthenticationAgent *agent, - { - user_identities = g_list_concat (user_identities, get_users_in_group (identity, FALSE)); - } -+#if defined HAVE_GETNETGRENT - else if (POLKIT_IS_UNIX_NETGROUP (identity)) - { - user_identities = g_list_concat (user_identities, get_users_in_net_group (identity, FALSE)); - } -+#endif - else - { - g_warning ("Unsupported identity"); -diff --git a/src/polkitbackend/polkitbackendjsauthority.cpp b/src/polkitbackend/polkitbackendjsauthority.cpp -index 517f3c6..6042dd2 100644 ---- a/src/polkitbackend/polkitbackendjsauthority.cpp -+++ b/src/polkitbackend/polkitbackendjsauthority.cpp -@@ -1502,6 +1502,7 @@ js_polkit_user_is_in_netgroup (JSContext *cx, - user = JS_EncodeString (cx, args[0].toString()); - netgroup = JS_EncodeString (cx, args[1].toString()); - -+#if defined HAVE_INNETGR - if (innetgr (netgroup, - NULL, /* host */ - user, -@@ -1509,6 +1510,7 @@ js_polkit_user_is_in_netgroup (JSContext *cx, - { - is_in_netgroup = true; - } -+#endif - - JS_free (cx, netgroup); - JS_free (cx, user); --- -2.7.4 - diff --git a/meta-gnome/recipes-freedesktop/polkit/polkit/0001-pkexec-local-privilege-escalation-CVE-2021-4034.patch b/meta-gnome/recipes-freedesktop/polkit/polkit/0001-pkexec-local-privilege-escalation-CVE-2021-4034.patch new file mode 100644 index 0000000..c725c00 --- /dev/null +++ b/meta-gnome/recipes-freedesktop/polkit/polkit/0001-pkexec-local-privilege-escalation-CVE-2021-4034.patch @@ -0,0 +1,84 @@ +From 85c2dd9275cdfb369f613089f22733c0f1ba2aec Mon Sep 17 00:00:00 2001 +From: Jan Rybar +Date: Tue, 25 Jan 2022 17:21:46 +0000 +Subject: [PATCH 1/3] pkexec: local privilege escalation (CVE-2021-4034) + +Signed-off-by: Mikko Rapeli + +--- + src/programs/pkcheck.c | 5 +++++ + src/programs/pkexec.c | 23 ++++++++++++++++++++--- + 2 files changed, 25 insertions(+), 3 deletions(-) + +CVE: CVE-2021-4034 +Upstream-Status: Backport [a2bf5c9c83b6ae46cbd5c779d3055bff81ded683] + +diff --git a/src/programs/pkcheck.c b/src/programs/pkcheck.c +index f1bb4e1..768525c 100644 +--- a/src/programs/pkcheck.c ++++ b/src/programs/pkcheck.c +@@ -363,6 +363,11 @@ main (int argc, char *argv[]) + local_agent_handle = NULL; + ret = 126; + ++ if (argc < 1) ++ { ++ exit(126); ++ } ++ + /* Disable remote file access from GIO. */ + setenv ("GIO_USE_VFS", "local", 1); + +diff --git a/src/programs/pkexec.c b/src/programs/pkexec.c +index 7698c5c..84e5ef6 100644 +--- a/src/programs/pkexec.c ++++ b/src/programs/pkexec.c +@@ -488,6 +488,15 @@ main (int argc, char *argv[]) + pid_t pid_of_caller; + gpointer local_agent_handle; + ++ ++ /* ++ * If 'pkexec' is called THIS wrong, someone's probably evil-doing. Don't be nice, just bail out. ++ */ ++ if (argc<1) ++ { ++ exit(127); ++ } ++ + ret = 127; + authority = NULL; + subject = NULL; +@@ -614,10 +623,10 @@ main (int argc, char *argv[]) + + path = g_strdup (pwstruct.pw_shell); + if (!path) +- { ++ { + g_printerr ("No shell configured or error retrieving pw_shell\n"); + goto out; +- } ++ } + /* If you change this, be sure to change the if (!command_line) + case below too */ + command_line = g_strdup (path); +@@ -636,7 +645,15 @@ main (int argc, char *argv[]) + goto out; + } + g_free (path); +- argv[n] = path = s; ++ path = s; ++ ++ /* argc<2 and pkexec runs just shell, argv is guaranteed to be null-terminated. ++ * /-less shell shouldn't happen, but let's be defensive and don't write to null-termination ++ */ ++ if (argv[n] != NULL) ++ { ++ argv[n] = path; ++ } + } + if (access (path, F_OK) != 0) + { +-- +2.20.1 + diff --git a/meta-gnome/recipes-freedesktop/polkit/polkit/0002-CVE-2021-4115-GHSL-2021-077-fix.patch b/meta-gnome/recipes-freedesktop/polkit/polkit/0002-CVE-2021-4115-GHSL-2021-077-fix.patch new file mode 100644 index 0000000..fcad872 --- /dev/null +++ b/meta-gnome/recipes-freedesktop/polkit/polkit/0002-CVE-2021-4115-GHSL-2021-077-fix.patch @@ -0,0 +1,88 @@ +From c86aea01a06ad4d6c428137e9cfe2f74b1ae7f01 Mon Sep 17 00:00:00 2001 +From: Jan Rybar +Date: Mon, 21 Feb 2022 08:29:05 +0000 +Subject: [PATCH 2/3] CVE-2021-4115 (GHSL-2021-077) fix + +Signed-off-by: Mikko Rapeli + +--- + src/polkit/polkitsystembusname.c | 38 ++++++++++++++++++++++++++++---- + 1 file changed, 34 insertions(+), 4 deletions(-) + +CVE: CVE-2021-4115 +Upstream-Status: Backport [41cb093f554da8772362654a128a84dd8a5542a7] + +diff --git a/src/polkit/polkitsystembusname.c b/src/polkit/polkitsystembusname.c +index 8ed1363..2fbf5f1 100644 +--- a/src/polkit/polkitsystembusname.c ++++ b/src/polkit/polkitsystembusname.c +@@ -62,6 +62,10 @@ enum + PROP_NAME, + }; + ++ ++guint8 dbus_call_respond_fails; // has to be global because of callback ++ ++ + static void subject_iface_init (PolkitSubjectIface *subject_iface); + + G_DEFINE_TYPE_WITH_CODE (PolkitSystemBusName, polkit_system_bus_name, G_TYPE_OBJECT, +@@ -364,6 +368,7 @@ on_retrieved_unix_uid_pid (GObject *src, + if (!v) + { + data->caught_error = TRUE; ++ dbus_call_respond_fails += 1; + } + else + { +@@ -405,6 +410,8 @@ polkit_system_bus_name_get_creds_sync (PolkitSystemBusName *system_bus + tmp_context = g_main_context_new (); + g_main_context_push_thread_default (tmp_context); + ++ dbus_call_respond_fails = 0; ++ + /* Do two async calls as it's basically as fast as one sync call. + */ + g_dbus_connection_call (connection, +@@ -432,11 +439,34 @@ polkit_system_bus_name_get_creds_sync (PolkitSystemBusName *system_bus + on_retrieved_unix_uid_pid, + &data); + +- while (!((data.retrieved_uid && data.retrieved_pid) || data.caught_error)) +- g_main_context_iteration (tmp_context, TRUE); ++ while (TRUE) ++ { ++ /* If one dbus call returns error, we must wait until the other call ++ * calls _call_finish(), otherwise fd leak is possible. ++ * Resolves: GHSL-2021-077 ++ */ + +- if (data.caught_error) +- goto out; ++ if ( (dbus_call_respond_fails > 1) ) ++ { ++ // we got two faults, we can leave ++ goto out; ++ } ++ ++ if ((data.caught_error && (data.retrieved_pid || data.retrieved_uid))) ++ { ++ // we got one fault and the other call finally finished, we can leave ++ goto out; ++ } ++ ++ if ( !(data.retrieved_uid && data.retrieved_pid) ) ++ { ++ g_main_context_iteration (tmp_context, TRUE); ++ } ++ else ++ { ++ break; ++ } ++ } + + if (out_uid) + *out_uid = data.uid; +-- +2.20.1 + diff --git a/meta-gnome/recipes-freedesktop/polkit/polkit/0003-Added-support-for-duktape-as-JS-engine.patch b/meta-gnome/recipes-freedesktop/polkit/polkit/0003-Added-support-for-duktape-as-JS-engine.patch new file mode 100644 index 0000000..e44e4f6 --- /dev/null +++ b/meta-gnome/recipes-freedesktop/polkit/polkit/0003-Added-support-for-duktape-as-JS-engine.patch @@ -0,0 +1,3463 @@ +From eaecfb21e1bca42e99321cc731e21dbfc1ea0d0c Mon Sep 17 00:00:00 2001 +From: Gustavo Lima Chaves +Date: Tue, 25 Jan 2022 09:43:21 +0000 +Subject: [PATCH 3/3] Added support for duktape as JS engine + +Original author: Wu Xiaotian (@yetist) +Resurrection author, runaway-killer author: Gustavo Lima Chaves (@limachaves) + +Signed-off-by: Mikko Rapeli + +--- + .gitlab-ci.yml | 1 + + buildutil/ax_pthread.m4 | 522 ++++++++ + configure.ac | 34 +- + docs/man/polkit.xml | 4 +- + meson.build | 16 +- + meson_options.txt | 1 + + src/polkitbackend/Makefile.am | 17 +- + src/polkitbackend/meson.build | 14 +- + src/polkitbackend/polkitbackendcommon.c | 530 +++++++++ + src/polkitbackend/polkitbackendcommon.h | 158 +++ + .../polkitbackendduktapeauthority.c | 1051 +++++++++++++++++ + .../polkitbackendjsauthority.cpp | 721 +---------- + .../etc/polkit-1/rules.d/10-testing.rules | 6 +- + .../test-polkitbackendjsauthority.c | 2 +- + 14 files changed, 2399 insertions(+), 678 deletions(-) + create mode 100644 buildutil/ax_pthread.m4 + create mode 100644 src/polkitbackend/polkitbackendcommon.c + create mode 100644 src/polkitbackend/polkitbackendcommon.h + create mode 100644 src/polkitbackend/polkitbackendduktapeauthority.c + +Upstream-Status: Backport [c7fc4e1b61f0fd82fc697c19c604af7e9fb291a2] +Dropped change to .gitlab-ci.yml and adapted configure.ac due to other +patches in meta-oe. + +diff --git a/buildutil/ax_pthread.m4 b/buildutil/ax_pthread.m4 +new file mode 100644 +index 0000000..9f35d13 +--- /dev/null ++++ b/buildutil/ax_pthread.m4 +@@ -0,0 +1,522 @@ ++# =========================================================================== ++# https://www.gnu.org/software/autoconf-archive/ax_pthread.html ++# =========================================================================== ++# ++# SYNOPSIS ++# ++# AX_PTHREAD([ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]]) ++# ++# DESCRIPTION ++# ++# This macro figures out how to build C programs using POSIX threads. It ++# sets the PTHREAD_LIBS output variable to the threads library and linker ++# flags, and the PTHREAD_CFLAGS output variable to any special C compiler ++# flags that are needed. (The user can also force certain compiler ++# flags/libs to be tested by setting these environment variables.) ++# ++# Also sets PTHREAD_CC and PTHREAD_CXX to any special C compiler that is ++# needed for multi-threaded programs (defaults to the value of CC ++# respectively CXX otherwise). (This is necessary on e.g. AIX to use the ++# special cc_r/CC_r compiler alias.) ++# ++# NOTE: You are assumed to not only compile your program with these flags, ++# but also to link with them as well. For example, you might link with ++# $PTHREAD_CC $CFLAGS $PTHREAD_CFLAGS $LDFLAGS ... $PTHREAD_LIBS $LIBS ++# $PTHREAD_CXX $CXXFLAGS $PTHREAD_CFLAGS $LDFLAGS ... $PTHREAD_LIBS $LIBS ++# ++# If you are only building threaded programs, you may wish to use these ++# variables in your default LIBS, CFLAGS, and CC: ++# ++# LIBS="$PTHREAD_LIBS $LIBS" ++# CFLAGS="$CFLAGS $PTHREAD_CFLAGS" ++# CXXFLAGS="$CXXFLAGS $PTHREAD_CFLAGS" ++# CC="$PTHREAD_CC" ++# CXX="$PTHREAD_CXX" ++# ++# In addition, if the PTHREAD_CREATE_JOINABLE thread-attribute constant ++# has a nonstandard name, this macro defines PTHREAD_CREATE_JOINABLE to ++# that name (e.g. PTHREAD_CREATE_UNDETACHED on AIX). ++# ++# Also HAVE_PTHREAD_PRIO_INHERIT is defined if pthread is found and the ++# PTHREAD_PRIO_INHERIT symbol is defined when compiling with ++# PTHREAD_CFLAGS. ++# ++# ACTION-IF-FOUND is a list of shell commands to run if a threads library ++# is found, and ACTION-IF-NOT-FOUND is a list of commands to run it if it ++# is not found. If ACTION-IF-FOUND is not specified, the default action ++# will define HAVE_PTHREAD. ++# ++# Please let the authors know if this macro fails on any platform, or if ++# you have any other suggestions or comments. This macro was based on work ++# by SGJ on autoconf scripts for FFTW (http://www.fftw.org/) (with help ++# from M. Frigo), as well as ac_pthread and hb_pthread macros posted by ++# Alejandro Forero Cuervo to the autoconf macro repository. We are also ++# grateful for the helpful feedback of numerous users. ++# ++# Updated for Autoconf 2.68 by Daniel Richard G. ++# ++# LICENSE ++# ++# Copyright (c) 2008 Steven G. Johnson ++# Copyright (c) 2011 Daniel Richard G. ++# Copyright (c) 2019 Marc Stevens ++# ++# This program is free software: you can redistribute it and/or modify it ++# under the terms of the GNU General Public License as published by the ++# Free Software Foundation, either version 3 of the License, or (at your ++# option) any later version. ++# ++# This program is distributed in the hope that it will be useful, but ++# WITHOUT ANY WARRANTY; without even the implied warranty of ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General ++# Public License for more details. ++# ++# You should have received a copy of the GNU General Public License along ++# with this program. If not, see . ++# ++# As a special exception, the respective Autoconf Macro's copyright owner ++# gives unlimited permission to copy, distribute and modify the configure ++# scripts that are the output of Autoconf when processing the Macro. You ++# need not follow the terms of the GNU General Public License when using ++# or distributing such scripts, even though portions of the text of the ++# Macro appear in them. The GNU General Public License (GPL) does govern ++# all other use of the material that constitutes the Autoconf Macro. ++# ++# This special exception to the GPL applies to versions of the Autoconf ++# Macro released by the Autoconf Archive. When you make and distribute a ++# modified version of the Autoconf Macro, you may extend this special ++# exception to the GPL to apply to your modified version as well. ++ ++#serial 31 ++ ++AU_ALIAS([ACX_PTHREAD], [AX_PTHREAD]) ++AC_DEFUN([AX_PTHREAD], [ ++AC_REQUIRE([AC_CANONICAL_HOST]) ++AC_REQUIRE([AC_PROG_CC]) ++AC_REQUIRE([AC_PROG_SED]) ++AC_LANG_PUSH([C]) ++ax_pthread_ok=no ++ ++# We used to check for pthread.h first, but this fails if pthread.h ++# requires special compiler flags (e.g. on Tru64 or Sequent). ++# It gets checked for in the link test anyway. ++ ++# First of all, check if the user has set any of the PTHREAD_LIBS, ++# etcetera environment variables, and if threads linking works using ++# them: ++if test "x$PTHREAD_CFLAGS$PTHREAD_LIBS" != "x"; then ++ ax_pthread_save_CC="$CC" ++ ax_pthread_save_CFLAGS="$CFLAGS" ++ ax_pthread_save_LIBS="$LIBS" ++ AS_IF([test "x$PTHREAD_CC" != "x"], [CC="$PTHREAD_CC"]) ++ AS_IF([test "x$PTHREAD_CXX" != "x"], [CXX="$PTHREAD_CXX"]) ++ CFLAGS="$CFLAGS $PTHREAD_CFLAGS" ++ LIBS="$PTHREAD_LIBS $LIBS" ++ AC_MSG_CHECKING([for pthread_join using $CC $PTHREAD_CFLAGS $PTHREAD_LIBS]) ++ AC_LINK_IFELSE([AC_LANG_CALL([], [pthread_join])], [ax_pthread_ok=yes]) ++ AC_MSG_RESULT([$ax_pthread_ok]) ++ if test "x$ax_pthread_ok" = "xno"; then ++ PTHREAD_LIBS="" ++ PTHREAD_CFLAGS="" ++ fi ++ CC="$ax_pthread_save_CC" ++ CFLAGS="$ax_pthread_save_CFLAGS" ++ LIBS="$ax_pthread_save_LIBS" ++fi ++ ++# We must check for the threads library under a number of different ++# names; the ordering is very important because some systems ++# (e.g. DEC) have both -lpthread and -lpthreads, where one of the ++# libraries is broken (non-POSIX). ++ ++# Create a list of thread flags to try. Items with a "," contain both ++# C compiler flags (before ",") and linker flags (after ","). Other items ++# starting with a "-" are C compiler flags, and remaining items are ++# library names, except for "none" which indicates that we try without ++# any flags at all, and "pthread-config" which is a program returning ++# the flags for the Pth emulation library. ++ ++ax_pthread_flags="pthreads none -Kthread -pthread -pthreads -mthreads pthread --thread-safe -mt pthread-config" ++ ++# The ordering *is* (sometimes) important. Some notes on the ++# individual items follow: ++ ++# pthreads: AIX (must check this before -lpthread) ++# none: in case threads are in libc; should be tried before -Kthread and ++# other compiler flags to prevent continual compiler warnings ++# -Kthread: Sequent (threads in libc, but -Kthread needed for pthread.h) ++# -pthread: Linux/gcc (kernel threads), BSD/gcc (userland threads), Tru64 ++# (Note: HP C rejects this with "bad form for `-t' option") ++# -pthreads: Solaris/gcc (Note: HP C also rejects) ++# -mt: Sun Workshop C (may only link SunOS threads [-lthread], but it ++# doesn't hurt to check since this sometimes defines pthreads and ++# -D_REENTRANT too), HP C (must be checked before -lpthread, which ++# is present but should not be used directly; and before -mthreads, ++# because the compiler interprets this as "-mt" + "-hreads") ++# -mthreads: Mingw32/gcc, Lynx/gcc ++# pthread: Linux, etcetera ++# --thread-safe: KAI C++ ++# pthread-config: use pthread-config program (for GNU Pth library) ++ ++case $host_os in ++ ++ freebsd*) ++ ++ # -kthread: FreeBSD kernel threads (preferred to -pthread since SMP-able) ++ # lthread: LinuxThreads port on FreeBSD (also preferred to -pthread) ++ ++ ax_pthread_flags="-kthread lthread $ax_pthread_flags" ++ ;; ++ ++ hpux*) ++ ++ # From the cc(1) man page: "[-mt] Sets various -D flags to enable ++ # multi-threading and also sets -lpthread." ++ ++ ax_pthread_flags="-mt -pthread pthread $ax_pthread_flags" ++ ;; ++ ++ openedition*) ++ ++ # IBM z/OS requires a feature-test macro to be defined in order to ++ # enable POSIX threads at all, so give the user a hint if this is ++ # not set. (We don't define these ourselves, as they can affect ++ # other portions of the system API in unpredictable ways.) ++ ++ AC_EGREP_CPP([AX_PTHREAD_ZOS_MISSING], ++ [ ++# if !defined(_OPEN_THREADS) && !defined(_UNIX03_THREADS) ++ AX_PTHREAD_ZOS_MISSING ++# endif ++ ], ++ [AC_MSG_WARN([IBM z/OS requires -D_OPEN_THREADS or -D_UNIX03_THREADS to enable pthreads support.])]) ++ ;; ++ ++ solaris*) ++ ++ # On Solaris (at least, for some versions), libc contains stubbed ++ # (non-functional) versions of the pthreads routines, so link-based ++ # tests will erroneously succeed. (N.B.: The stubs are missing ++ # pthread_cleanup_push, or rather a function called by this macro, ++ # so we could check for that, but who knows whether they'll stub ++ # that too in a future libc.) So we'll check first for the ++ # standard Solaris way of linking pthreads (-mt -lpthread). ++ ++ ax_pthread_flags="-mt,-lpthread pthread $ax_pthread_flags" ++ ;; ++esac ++ ++# Are we compiling with Clang? ++ ++AC_CACHE_CHECK([whether $CC is Clang], ++ [ax_cv_PTHREAD_CLANG], ++ [ax_cv_PTHREAD_CLANG=no ++ # Note that Autoconf sets GCC=yes for Clang as well as GCC ++ if test "x$GCC" = "xyes"; then ++ AC_EGREP_CPP([AX_PTHREAD_CC_IS_CLANG], ++ [/* Note: Clang 2.7 lacks __clang_[a-z]+__ */ ++# if defined(__clang__) && defined(__llvm__) ++ AX_PTHREAD_CC_IS_CLANG ++# endif ++ ], ++ [ax_cv_PTHREAD_CLANG=yes]) ++ fi ++ ]) ++ax_pthread_clang="$ax_cv_PTHREAD_CLANG" ++ ++ ++# GCC generally uses -pthread, or -pthreads on some platforms (e.g. SPARC) ++ ++# Note that for GCC and Clang -pthread generally implies -lpthread, ++# except when -nostdlib is passed. ++# This is problematic using libtool to build C++ shared libraries with pthread: ++# [1] https://gcc.gnu.org/bugzilla/show_bug.cgi?id=25460 ++# [2] https://bugzilla.redhat.com/show_bug.cgi?id=661333 ++# [3] https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=468555 ++# To solve this, first try -pthread together with -lpthread for GCC ++ ++AS_IF([test "x$GCC" = "xyes"], ++ [ax_pthread_flags="-pthread,-lpthread -pthread -pthreads $ax_pthread_flags"]) ++ ++# Clang takes -pthread (never supported any other flag), but we'll try with -lpthread first ++ ++AS_IF([test "x$ax_pthread_clang" = "xyes"], ++ [ax_pthread_flags="-pthread,-lpthread -pthread"]) ++ ++ ++# The presence of a feature test macro requesting re-entrant function ++# definitions is, on some systems, a strong hint that pthreads support is ++# correctly enabled ++ ++case $host_os in ++ darwin* | hpux* | linux* | osf* | solaris*) ++ ax_pthread_check_macro="_REENTRANT" ++ ;; ++ ++ aix*) ++ ax_pthread_check_macro="_THREAD_SAFE" ++ ;; ++ ++ *) ++ ax_pthread_check_macro="--" ++ ;; ++esac ++AS_IF([test "x$ax_pthread_check_macro" = "x--"], ++ [ax_pthread_check_cond=0], ++ [ax_pthread_check_cond="!defined($ax_pthread_check_macro)"]) ++ ++ ++if test "x$ax_pthread_ok" = "xno"; then ++for ax_pthread_try_flag in $ax_pthread_flags; do ++ ++ case $ax_pthread_try_flag in ++ none) ++ AC_MSG_CHECKING([whether pthreads work without any flags]) ++ ;; ++ ++ *,*) ++ PTHREAD_CFLAGS=`echo $ax_pthread_try_flag | sed "s/^\(.*\),\(.*\)$/\1/"` ++ PTHREAD_LIBS=`echo $ax_pthread_try_flag | sed "s/^\(.*\),\(.*\)$/\2/"` ++ AC_MSG_CHECKING([whether pthreads work with "$PTHREAD_CFLAGS" and "$PTHREAD_LIBS"]) ++ ;; ++ ++ -*) ++ AC_MSG_CHECKING([whether pthreads work with $ax_pthread_try_flag]) ++ PTHREAD_CFLAGS="$ax_pthread_try_flag" ++ ;; ++ ++ pthread-config) ++ AC_CHECK_PROG([ax_pthread_config], [pthread-config], [yes], [no]) ++ AS_IF([test "x$ax_pthread_config" = "xno"], [continue]) ++ PTHREAD_CFLAGS="`pthread-config --cflags`" ++ PTHREAD_LIBS="`pthread-config --ldflags` `pthread-config --libs`" ++ ;; ++ ++ *) ++ AC_MSG_CHECKING([for the pthreads library -l$ax_pthread_try_flag]) ++ PTHREAD_LIBS="-l$ax_pthread_try_flag" ++ ;; ++ esac ++ ++ ax_pthread_save_CFLAGS="$CFLAGS" ++ ax_pthread_save_LIBS="$LIBS" ++ CFLAGS="$CFLAGS $PTHREAD_CFLAGS" ++ LIBS="$PTHREAD_LIBS $LIBS" ++ ++ # Check for various functions. We must include pthread.h, ++ # since some functions may be macros. (On the Sequent, we ++ # need a special flag -Kthread to make this header compile.) ++ # We check for pthread_join because it is in -lpthread on IRIX ++ # while pthread_create is in libc. We check for pthread_attr_init ++ # due to DEC craziness with -lpthreads. We check for ++ # pthread_cleanup_push because it is one of the few pthread ++ # functions on Solaris that doesn't have a non-functional libc stub. ++ # We try pthread_create on general principles. ++ ++ AC_LINK_IFELSE([AC_LANG_PROGRAM([#include ++# if $ax_pthread_check_cond ++# error "$ax_pthread_check_macro must be defined" ++# endif ++ static void *some_global = NULL; ++ static void routine(void *a) ++ { ++ /* To avoid any unused-parameter or ++ unused-but-set-parameter warning. */ ++ some_global = a; ++ } ++ static void *start_routine(void *a) { return a; }], ++ [pthread_t th; pthread_attr_t attr; ++ pthread_create(&th, 0, start_routine, 0); ++ pthread_join(th, 0); ++ pthread_attr_init(&attr); ++ pthread_cleanup_push(routine, 0); ++ pthread_cleanup_pop(0) /* ; */])], ++ [ax_pthread_ok=yes], ++ []) ++ ++ CFLAGS="$ax_pthread_save_CFLAGS" ++ LIBS="$ax_pthread_save_LIBS" ++ ++ AC_MSG_RESULT([$ax_pthread_ok]) ++ AS_IF([test "x$ax_pthread_ok" = "xyes"], [break]) ++ ++ PTHREAD_LIBS="" ++ PTHREAD_CFLAGS="" ++done ++fi ++ ++ ++# Clang needs special handling, because older versions handle the -pthread ++# option in a rather... idiosyncratic way ++ ++if test "x$ax_pthread_clang" = "xyes"; then ++ ++ # Clang takes -pthread; it has never supported any other flag ++ ++ # (Note 1: This will need to be revisited if a system that Clang ++ # supports has POSIX threads in a separate library. This tends not ++ # to be the way of modern systems, but it's conceivable.) ++ ++ # (Note 2: On some systems, notably Darwin, -pthread is not needed ++ # to get POSIX threads support; the API is always present and ++ # active. We could reasonably leave PTHREAD_CFLAGS empty. But ++ # -pthread does define _REENTRANT, and while the Darwin headers ++ # ignore this macro, third-party headers might not.) ++ ++ # However, older versions of Clang make a point of warning the user ++ # that, in an invocation where only linking and no compilation is ++ # taking place, the -pthread option has no effect ("argument unused ++ # during compilation"). They expect -pthread to be passed in only ++ # when source code is being compiled. ++ # ++ # Problem is, this is at odds with the way Automake and most other ++ # C build frameworks function, which is that the same flags used in ++ # compilation (CFLAGS) are also used in linking. Many systems ++ # supported by AX_PTHREAD require exactly this for POSIX threads ++ # support, and in fact it is often not straightforward to specify a ++ # flag that is used only in the compilation phase and not in ++ # linking. Such a scenario is extremely rare in practice. ++ # ++ # Even though use of the -pthread flag in linking would only print ++ # a warning, this can be a nuisance for well-run software projects ++ # that build with -Werror. So if the active version of Clang has ++ # this misfeature, we search for an option to squash it. ++ ++ AC_CACHE_CHECK([whether Clang needs flag to prevent "argument unused" warning when linking with -pthread], ++ [ax_cv_PTHREAD_CLANG_NO_WARN_FLAG], ++ [ax_cv_PTHREAD_CLANG_NO_WARN_FLAG=unknown ++ # Create an alternate version of $ac_link that compiles and ++ # links in two steps (.c -> .o, .o -> exe) instead of one ++ # (.c -> exe), because the warning occurs only in the second ++ # step ++ ax_pthread_save_ac_link="$ac_link" ++ ax_pthread_sed='s/conftest\.\$ac_ext/conftest.$ac_objext/g' ++ ax_pthread_link_step=`AS_ECHO(["$ac_link"]) | sed "$ax_pthread_sed"` ++ ax_pthread_2step_ac_link="($ac_compile) && (echo ==== >&5) && ($ax_pthread_link_step)" ++ ax_pthread_save_CFLAGS="$CFLAGS" ++ for ax_pthread_try in '' -Qunused-arguments -Wno-unused-command-line-argument unknown; do ++ AS_IF([test "x$ax_pthread_try" = "xunknown"], [break]) ++ CFLAGS="-Werror -Wunknown-warning-option $ax_pthread_try -pthread $ax_pthread_save_CFLAGS" ++ ac_link="$ax_pthread_save_ac_link" ++ AC_LINK_IFELSE([AC_LANG_SOURCE([[int main(void){return 0;}]])], ++ [ac_link="$ax_pthread_2step_ac_link" ++ AC_LINK_IFELSE([AC_LANG_SOURCE([[int main(void){return 0;}]])], ++ [break]) ++ ]) ++ done ++ ac_link="$ax_pthread_save_ac_link" ++ CFLAGS="$ax_pthread_save_CFLAGS" ++ AS_IF([test "x$ax_pthread_try" = "x"], [ax_pthread_try=no]) ++ ax_cv_PTHREAD_CLANG_NO_WARN_FLAG="$ax_pthread_try" ++ ]) ++ ++ case "$ax_cv_PTHREAD_CLANG_NO_WARN_FLAG" in ++ no | unknown) ;; ++ *) PTHREAD_CFLAGS="$ax_cv_PTHREAD_CLANG_NO_WARN_FLAG $PTHREAD_CFLAGS" ;; ++ esac ++ ++fi # $ax_pthread_clang = yes ++ ++ ++ ++# Various other checks: ++if test "x$ax_pthread_ok" = "xyes"; then ++ ax_pthread_save_CFLAGS="$CFLAGS" ++ ax_pthread_save_LIBS="$LIBS" ++ CFLAGS="$CFLAGS $PTHREAD_CFLAGS" ++ LIBS="$PTHREAD_LIBS $LIBS" ++ ++ # Detect AIX lossage: JOINABLE attribute is called UNDETACHED. ++ AC_CACHE_CHECK([for joinable pthread attribute], ++ [ax_cv_PTHREAD_JOINABLE_ATTR], ++ [ax_cv_PTHREAD_JOINABLE_ATTR=unknown ++ for ax_pthread_attr in PTHREAD_CREATE_JOINABLE PTHREAD_CREATE_UNDETACHED; do ++ AC_LINK_IFELSE([AC_LANG_PROGRAM([#include ], ++ [int attr = $ax_pthread_attr; return attr /* ; */])], ++ [ax_cv_PTHREAD_JOINABLE_ATTR=$ax_pthread_attr; break], ++ []) ++ done ++ ]) ++ AS_IF([test "x$ax_cv_PTHREAD_JOINABLE_ATTR" != "xunknown" && \ ++ test "x$ax_cv_PTHREAD_JOINABLE_ATTR" != "xPTHREAD_CREATE_JOINABLE" && \ ++ test "x$ax_pthread_joinable_attr_defined" != "xyes"], ++ [AC_DEFINE_UNQUOTED([PTHREAD_CREATE_JOINABLE], ++ [$ax_cv_PTHREAD_JOINABLE_ATTR], ++ [Define to necessary symbol if this constant ++ uses a non-standard name on your system.]) ++ ax_pthread_joinable_attr_defined=yes ++ ]) ++ ++ AC_CACHE_CHECK([whether more special flags are required for pthreads], ++ [ax_cv_PTHREAD_SPECIAL_FLAGS], ++ [ax_cv_PTHREAD_SPECIAL_FLAGS=no ++ case $host_os in ++ solaris*) ++ ax_cv_PTHREAD_SPECIAL_FLAGS="-D_POSIX_PTHREAD_SEMANTICS" ++ ;; ++ esac ++ ]) ++ AS_IF([test "x$ax_cv_PTHREAD_SPECIAL_FLAGS" != "xno" && \ ++ test "x$ax_pthread_special_flags_added" != "xyes"], ++ [PTHREAD_CFLAGS="$ax_cv_PTHREAD_SPECIAL_FLAGS $PTHREAD_CFLAGS" ++ ax_pthread_special_flags_added=yes]) ++ ++ AC_CACHE_CHECK([for PTHREAD_PRIO_INHERIT], ++ [ax_cv_PTHREAD_PRIO_INHERIT], ++ [AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include ]], ++ [[int i = PTHREAD_PRIO_INHERIT; ++ return i;]])], ++ [ax_cv_PTHREAD_PRIO_INHERIT=yes], ++ [ax_cv_PTHREAD_PRIO_INHERIT=no]) ++ ]) ++ AS_IF([test "x$ax_cv_PTHREAD_PRIO_INHERIT" = "xyes" && \ ++ test "x$ax_pthread_prio_inherit_defined" != "xyes"], ++ [AC_DEFINE([HAVE_PTHREAD_PRIO_INHERIT], [1], [Have PTHREAD_PRIO_INHERIT.]) ++ ax_pthread_prio_inherit_defined=yes ++ ]) ++ ++ CFLAGS="$ax_pthread_save_CFLAGS" ++ LIBS="$ax_pthread_save_LIBS" ++ ++ # More AIX lossage: compile with *_r variant ++ if test "x$GCC" != "xyes"; then ++ case $host_os in ++ aix*) ++ AS_CASE(["x/$CC"], ++ [x*/c89|x*/c89_128|x*/c99|x*/c99_128|x*/cc|x*/cc128|x*/xlc|x*/xlc_v6|x*/xlc128|x*/xlc128_v6], ++ [#handle absolute path differently from PATH based program lookup ++ AS_CASE(["x$CC"], ++ [x/*], ++ [ ++ AS_IF([AS_EXECUTABLE_P([${CC}_r])],[PTHREAD_CC="${CC}_r"]) ++ AS_IF([test "x${CXX}" != "x"], [AS_IF([AS_EXECUTABLE_P([${CXX}_r])],[PTHREAD_CXX="${CXX}_r"])]) ++ ], ++ [ ++ AC_CHECK_PROGS([PTHREAD_CC],[${CC}_r],[$CC]) ++ AS_IF([test "x${CXX}" != "x"], [AC_CHECK_PROGS([PTHREAD_CXX],[${CXX}_r],[$CXX])]) ++ ] ++ ) ++ ]) ++ ;; ++ esac ++ fi ++fi ++ ++test -n "$PTHREAD_CC" || PTHREAD_CC="$CC" ++test -n "$PTHREAD_CXX" || PTHREAD_CXX="$CXX" ++ ++AC_SUBST([PTHREAD_LIBS]) ++AC_SUBST([PTHREAD_CFLAGS]) ++AC_SUBST([PTHREAD_CC]) ++AC_SUBST([PTHREAD_CXX]) ++ ++# Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND: ++if test "x$ax_pthread_ok" = "xyes"; then ++ ifelse([$1],,[AC_DEFINE([HAVE_PTHREAD],[1],[Define if you have POSIX threads libraries and header files.])],[$1]) ++ : ++else ++ ax_pthread_ok=no ++ $2 ++fi ++AC_LANG_POP ++])dnl AX_PTHREAD +diff --git a/configure.ac b/configure.ac +index b625743..bbf4768 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -80,11 +80,22 @@ PKG_CHECK_MODULES(GLIB, [gmodule-2.0 gio-unix-2.0 >= 2.30.0]) + AC_SUBST(GLIB_CFLAGS) + AC_SUBST(GLIB_LIBS) + +-PKG_CHECK_MODULES(LIBJS, [mozjs-78]) +- +-AC_SUBST(LIBJS_CFLAGS) +-AC_SUBST(LIBJS_CXXFLAGS) +-AC_SUBST(LIBJS_LIBS) ++dnl --------------------------------------------------------------------------- ++dnl - Check javascript backend ++dnl --------------------------------------------------------------------------- ++AC_ARG_WITH(duktape, AS_HELP_STRING([--with-duktape],[Use Duktape as javascript backend]),with_duktape=yes,with_duktape=no) ++AS_IF([test x${with_duktape} == xyes], [ ++ PKG_CHECK_MODULES(LIBJS, [duktape >= 2.2.0 ]) ++ AC_SUBST(LIBJS_CFLAGS) ++ AC_SUBST(LIBJS_LIBS) ++], [ ++ PKG_CHECK_MODULES(LIBJS, [mozjs-78]) ++ ++ AC_SUBST(LIBJS_CFLAGS) ++ AC_SUBST(LIBJS_CXXFLAGS) ++ AC_SUBST(LIBJS_LIBS) ++]) ++AM_CONDITIONAL(USE_DUKTAPE, [test x$with_duktape == xyes], [Using duktape as javascript engine library]) + + EXPAT_LIB="" + AC_ARG_WITH(expat, [ --with-expat= Use expat from here], +@@ -100,6 +111,12 @@ AC_CHECK_LIB(expat,XML_ParserCreate,[EXPAT_LIBS="-lexpat"], + [AC_MSG_ERROR([Can't find expat library. Please install expat.])]) + AC_SUBST(EXPAT_LIBS) + ++AX_PTHREAD([], [AC_MSG_ERROR([Cannot find the way to enable pthread support.])]) ++LIBS="$PTHREAD_LIBS $LIBS" ++CFLAGS="$CFLAGS $PTHREAD_CFLAGS" ++CC="$PTHREAD_CC" ++AC_CHECK_FUNCS([pthread_condattr_setclock]) ++ + AC_CHECK_FUNCS(clearenv fdatasync setnetgrent) + + if test "x$GCC" = "xyes"; then +@@ -581,6 +598,13 @@ echo " + PAM support: ${have_pam} + systemdsystemunitdir: ${systemdsystemunitdir} + polkitd user: ${POLKITD_USER}" ++if test "x${with_duktape}" = xyes; then ++echo " ++ Javascript engine: Duktape" ++else ++echo " ++ Javascript engine: Mozjs" ++fi + + if test "$have_pam" = yes ; then + echo " +diff --git a/docs/man/polkit.xml b/docs/man/polkit.xml +index 99aa474..90715a5 100644 +--- a/docs/man/polkit.xml ++++ b/docs/man/polkit.xml +@@ -639,7 +639,9 @@ polkit.Result = { + If user-provided code takes a long time to execute, an exception + will be thrown which normally results in the function being + terminated (the current limit is 15 seconds). This is used to +- catch runaway scripts. ++ catch runaway scripts. If the duktape JavaScript backend is ++ compiled in, instead of mozjs, no exception will be thrown—the ++ script will be killed right away (same timeout). + + + +diff --git a/meson.build b/meson.build +index b3702be..7506231 100644 +--- a/meson.build ++++ b/meson.build +@@ -126,7 +126,18 @@ expat_dep = dependency('expat') + assert(cc.has_header('expat.h', dependencies: expat_dep), 'Can\'t find expat.h. Please install expat.') + assert(cc.has_function('XML_ParserCreate', dependencies: expat_dep), 'Can\'t find expat library. Please install expat.') + +-mozjs_dep = dependency('mozjs-78') ++duktape_req_version = '>= 2.2.0' ++ ++js_engine = get_option('js_engine') ++if js_engine == 'duktape' ++ js_dep = dependency('duktape', version: duktape_req_version) ++ libm_dep = cc.find_library('m') ++ thread_dep = dependency('threads') ++ func = 'pthread_condattr_setclock' ++ config_h.set('HAVE_' + func.to_upper(), cc.has_function(func, prefix : '#include ')) ++elif js_engine == 'mozjs' ++ js_dep = dependency('mozjs-78') ++endif + + dbus_dep = dependency('dbus-1') + dbus_confdir = dbus_dep.get_pkgconfig_variable('datadir', define_variable: ['datadir', pk_prefix / pk_datadir]) #changed from sysconfdir with respect to commit#8eada3836465838 +@@ -350,6 +361,9 @@ if enable_logind + output += ' systemdsystemunitdir: ' + systemd_systemdsystemunitdir + '\n' + endif + output += ' polkitd user: ' + polkitd_user + ' \n' ++output += ' Javascript engine: ' + js_engine + '\n' ++if enable_logind ++endif + output += ' PAM support: ' + enable_pam.to_string() + '\n\n' + if enable_pam + output += ' PAM file auth: ' + pam_conf['PAM_FILE_INCLUDE_AUTH'] + '\n' +diff --git a/meson_options.txt b/meson_options.txt +index 25e3e77..76aa311 100644 +--- a/meson_options.txt ++++ b/meson_options.txt +@@ -16,3 +16,4 @@ option('introspection', type: 'boolean', value: true, description: 'Enable intro + + option('gtk_doc', type: 'boolean', value: false, description: 'use gtk-doc to build documentation') + option('man', type: 'boolean', value: false, description: 'build manual pages') ++option('js_engine', type: 'combo', choices: ['mozjs', 'duktape'], value: 'duktape', description: 'javascript engine') +diff --git a/src/polkitbackend/Makefile.am b/src/polkitbackend/Makefile.am +index 7e3c080..935fb98 100644 +--- a/src/polkitbackend/Makefile.am ++++ b/src/polkitbackend/Makefile.am +@@ -17,6 +17,8 @@ AM_CPPFLAGS = \ + -DPACKAGE_LIB_DIR=\""$(libdir)"\" \ + -D_POSIX_PTHREAD_SEMANTICS \ + -D_REENTRANT \ ++ -D_XOPEN_SOURCE=700 \ ++ -D_GNU_SOURCE=1 \ + $(NULL) + + noinst_LTLIBRARIES=libpolkit-backend-1.la +@@ -31,9 +33,10 @@ libpolkit_backend_1_la_SOURCES = \ + polkitbackend.h \ + polkitbackendtypes.h \ + polkitbackendprivate.h \ ++ polkitbackendcommon.h polkitbackendcommon.c \ + polkitbackendauthority.h polkitbackendauthority.c \ + polkitbackendinteractiveauthority.h polkitbackendinteractiveauthority.c \ +- polkitbackendjsauthority.h polkitbackendjsauthority.cpp \ ++ polkitbackendjsauthority.h \ + polkitbackendactionpool.h polkitbackendactionpool.c \ + polkitbackendactionlookup.h polkitbackendactionlookup.c \ + $(NULL) +@@ -51,19 +54,27 @@ libpolkit_backend_1_la_CFLAGS = \ + -D_POLKIT_BACKEND_COMPILATION \ + $(GLIB_CFLAGS) \ + $(LIBSYSTEMD_CFLAGS) \ +- $(LIBJS_CFLAGS) \ ++ $(LIBJS_CFLAGS) \ + $(NULL) + + libpolkit_backend_1_la_CXXFLAGS = $(libpolkit_backend_1_la_CFLAGS) + + libpolkit_backend_1_la_LIBADD = \ + $(GLIB_LIBS) \ ++ $(DUKTAPE_LIBS) \ + $(LIBSYSTEMD_LIBS) \ + $(top_builddir)/src/polkit/libpolkit-gobject-1.la \ + $(EXPAT_LIBS) \ +- $(LIBJS_LIBS) \ ++ $(LIBJS_LIBS) \ + $(NULL) + ++if USE_DUKTAPE ++libpolkit_backend_1_la_SOURCES += polkitbackendduktapeauthority.c ++libpolkit_backend_1_la_LIBADD += -lm ++else ++libpolkit_backend_1_la_SOURCES += polkitbackendjsauthority.cpp ++endif ++ + rulesdir = $(sysconfdir)/polkit-1/rules.d + rules_DATA = 50-default.rules + +diff --git a/src/polkitbackend/meson.build b/src/polkitbackend/meson.build +index 93c3c34..99f8e33 100644 +--- a/src/polkitbackend/meson.build ++++ b/src/polkitbackend/meson.build +@@ -4,8 +4,8 @@ sources = files( + 'polkitbackendactionlookup.c', + 'polkitbackendactionpool.c', + 'polkitbackendauthority.c', ++ 'polkitbackendcommon.c', + 'polkitbackendinteractiveauthority.c', +- 'polkitbackendjsauthority.cpp', + ) + + output = 'initjs.h' +@@ -21,7 +21,7 @@ sources += custom_target( + deps = [ + expat_dep, + libpolkit_gobject_dep, +- mozjs_dep, ++ js_dep, + ] + + c_flags = [ +@@ -29,8 +29,18 @@ c_flags = [ + '-D_POLKIT_BACKEND_COMPILATION', + '-DPACKAGE_DATA_DIR="@0@"'.format(pk_prefix / pk_datadir), + '-DPACKAGE_SYSCONF_DIR="@0@"'.format(pk_prefix / pk_sysconfdir), ++ '-D_XOPEN_SOURCE=700', ++ '-D_GNU_SOURCE=1', + ] + ++if js_engine == 'duktape' ++ sources += files('polkitbackendduktapeauthority.c') ++ deps += libm_dep ++ deps += thread_dep ++elif js_engine == 'mozjs' ++ sources += files('polkitbackendjsauthority.cpp') ++endif ++ + if enable_logind + sources += files('polkitbackendsessionmonitor-systemd.c') + +diff --git a/src/polkitbackend/polkitbackendcommon.c b/src/polkitbackend/polkitbackendcommon.c +new file mode 100644 +index 0000000..6783dff +--- /dev/null ++++ b/src/polkitbackend/polkitbackendcommon.c +@@ -0,0 +1,530 @@ ++/* ++ * Copyright (C) 2008 Red Hat, Inc. ++ * ++ * This library is free software; you can redistribute it and/or ++ * modify it under the terms of the GNU Lesser General Public ++ * License as published by the Free Software Foundation; either ++ * version 2 of the License, or (at your option) any later version. ++ * ++ * This library is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ * Lesser General Public License for more details. ++ * ++ * You should have received a copy of the GNU Lesser General ++ * Public License along with this library; if not, write to the ++ * Free Software Foundation, Inc., 59 Temple Place, Suite 330, ++ * Boston, MA 02111-1307, USA. ++ * ++ * Author: David Zeuthen ++ */ ++ ++#include "polkitbackendcommon.h" ++ ++static void ++utils_child_watch_from_release_cb (GPid pid, ++ gint status, ++ gpointer user_data) ++{ ++} ++ ++static void ++utils_spawn_data_free (UtilsSpawnData *data) ++{ ++ if (data->timeout_source != NULL) ++ { ++ g_source_destroy (data->timeout_source); ++ data->timeout_source = NULL; ++ } ++ ++ /* Nuke the child, if necessary */ ++ if (data->child_watch_source != NULL) ++ { ++ g_source_destroy (data->child_watch_source); ++ data->child_watch_source = NULL; ++ } ++ ++ if (data->child_pid != 0) ++ { ++ GSource *source; ++ kill (data->child_pid, SIGTERM); ++ /* OK, we need to reap for the child ourselves - we don't want ++ * to use waitpid() because that might block the calling ++ * thread (the child might handle SIGTERM and use several ++ * seconds for cleanup/rollback). ++ * ++ * So we use GChildWatch instead. ++ * ++ * Avoid taking a references to ourselves. but note that we need ++ * to pass the GSource so we can nuke it once handled. ++ */ ++ source = g_child_watch_source_new (data->child_pid); ++ g_source_set_callback (source, ++ (GSourceFunc) utils_child_watch_from_release_cb, ++ source, ++ (GDestroyNotify) g_source_destroy); ++ g_source_attach (source, data->main_context); ++ g_source_unref (source); ++ data->child_pid = 0; ++ } ++ ++ if (data->child_stdout != NULL) ++ { ++ g_string_free (data->child_stdout, TRUE); ++ data->child_stdout = NULL; ++ } ++ ++ if (data->child_stderr != NULL) ++ { ++ g_string_free (data->child_stderr, TRUE); ++ data->child_stderr = NULL; ++ } ++ ++ if (data->child_stdout_channel != NULL) ++ { ++ g_io_channel_unref (data->child_stdout_channel); ++ data->child_stdout_channel = NULL; ++ } ++ if (data->child_stderr_channel != NULL) ++ { ++ g_io_channel_unref (data->child_stderr_channel); ++ data->child_stderr_channel = NULL; ++ } ++ ++ if (data->child_stdout_source != NULL) ++ { ++ g_source_destroy (data->child_stdout_source); ++ data->child_stdout_source = NULL; ++ } ++ if (data->child_stderr_source != NULL) ++ { ++ g_source_destroy (data->child_stderr_source); ++ data->child_stderr_source = NULL; ++ } ++ ++ if (data->child_stdout_fd != -1) ++ { ++ g_warn_if_fail (close (data->child_stdout_fd) == 0); ++ data->child_stdout_fd = -1; ++ } ++ if (data->child_stderr_fd != -1) ++ { ++ g_warn_if_fail (close (data->child_stderr_fd) == 0); ++ data->child_stderr_fd = -1; ++ } ++ ++ if (data->cancellable_handler_id > 0) ++ { ++ g_cancellable_disconnect (data->cancellable, data->cancellable_handler_id); ++ data->cancellable_handler_id = 0; ++ } ++ ++ if (data->main_context != NULL) ++ g_main_context_unref (data->main_context); ++ ++ if (data->cancellable != NULL) ++ g_object_unref (data->cancellable); ++ ++ g_slice_free (UtilsSpawnData, data); ++} ++ ++/* called in the thread where @cancellable was cancelled */ ++static void ++utils_on_cancelled (GCancellable *cancellable, ++ gpointer user_data) ++{ ++ UtilsSpawnData *data = (UtilsSpawnData *)user_data; ++ GError *error; ++ ++ error = NULL; ++ g_warn_if_fail (g_cancellable_set_error_if_cancelled (cancellable, &error)); ++ g_simple_async_result_take_error (data->simple, error); ++ g_simple_async_result_complete_in_idle (data->simple); ++ g_object_unref (data->simple); ++} ++ ++static gboolean ++utils_timeout_cb (gpointer user_data) ++{ ++ UtilsSpawnData *data = (UtilsSpawnData *)user_data; ++ ++ data->timed_out = TRUE; ++ ++ /* ok, timeout is history, make sure we don't free it in spawn_data_free() */ ++ data->timeout_source = NULL; ++ ++ /* we're done */ ++ g_simple_async_result_complete_in_idle (data->simple); ++ g_object_unref (data->simple); ++ ++ return FALSE; /* remove source */ ++} ++ ++static void ++utils_child_watch_cb (GPid pid, ++ gint status, ++ gpointer user_data) ++{ ++ UtilsSpawnData *data = (UtilsSpawnData *)user_data; ++ gchar *buf; ++ gsize buf_size; ++ ++ if (g_io_channel_read_to_end (data->child_stdout_channel, &buf, &buf_size, NULL) == G_IO_STATUS_NORMAL) ++ { ++ g_string_append_len (data->child_stdout, buf, buf_size); ++ g_free (buf); ++ } ++ if (g_io_channel_read_to_end (data->child_stderr_channel, &buf, &buf_size, NULL) == G_IO_STATUS_NORMAL) ++ { ++ g_string_append_len (data->child_stderr, buf, buf_size); ++ g_free (buf); ++ } ++ ++ data->exit_status = status; ++ ++ /* ok, child watch is history, make sure we don't free it in spawn_data_free() */ ++ data->child_pid = 0; ++ data->child_watch_source = NULL; ++ ++ /* we're done */ ++ g_simple_async_result_complete_in_idle (data->simple); ++ g_object_unref (data->simple); ++} ++ ++static gboolean ++utils_read_child_stderr (GIOChannel *channel, ++ GIOCondition condition, ++ gpointer user_data) ++{ ++ UtilsSpawnData *data = (UtilsSpawnData *)user_data; ++ gchar buf[1024]; ++ gsize bytes_read; ++ ++ g_io_channel_read_chars (channel, buf, sizeof buf, &bytes_read, NULL); ++ g_string_append_len (data->child_stderr, buf, bytes_read); ++ return TRUE; ++} ++ ++static gboolean ++utils_read_child_stdout (GIOChannel *channel, ++ GIOCondition condition, ++ gpointer user_data) ++{ ++ UtilsSpawnData *data = (UtilsSpawnData *)user_data; ++ gchar buf[1024]; ++ gsize bytes_read; ++ ++ g_io_channel_read_chars (channel, buf, sizeof buf, &bytes_read, NULL); ++ g_string_append_len (data->child_stdout, buf, bytes_read); ++ return TRUE; ++} ++ ++void ++polkit_backend_common_spawn (const gchar *const *argv, ++ guint timeout_seconds, ++ GCancellable *cancellable, ++ GAsyncReadyCallback callback, ++ gpointer user_data) ++{ ++ UtilsSpawnData *data; ++ GError *error; ++ ++ data = g_slice_new0 (UtilsSpawnData); ++ data->timeout_seconds = timeout_seconds; ++ data->simple = g_simple_async_result_new (NULL, ++ callback, ++ user_data, ++ (gpointer*)polkit_backend_common_spawn); ++ data->main_context = g_main_context_get_thread_default (); ++ if (data->main_context != NULL) ++ g_main_context_ref (data->main_context); ++ ++ data->cancellable = cancellable != NULL ? (GCancellable*)g_object_ref (cancellable) : NULL; ++ ++ data->child_stdout = g_string_new (NULL); ++ data->child_stderr = g_string_new (NULL); ++ data->child_stdout_fd = -1; ++ data->child_stderr_fd = -1; ++ ++ /* the life-cycle of UtilsSpawnData is tied to its GSimpleAsyncResult */ ++ g_simple_async_result_set_op_res_gpointer (data->simple, data, (GDestroyNotify) utils_spawn_data_free); ++ ++ error = NULL; ++ if (data->cancellable != NULL) ++ { ++ /* could already be cancelled */ ++ error = NULL; ++ if (g_cancellable_set_error_if_cancelled (data->cancellable, &error)) ++ { ++ g_simple_async_result_take_error (data->simple, error); ++ g_simple_async_result_complete_in_idle (data->simple); ++ g_object_unref (data->simple); ++ goto out; ++ } ++ ++ data->cancellable_handler_id = g_cancellable_connect (data->cancellable, ++ G_CALLBACK (utils_on_cancelled), ++ data, ++ NULL); ++ } ++ ++ error = NULL; ++ if (!g_spawn_async_with_pipes (NULL, /* working directory */ ++ (gchar **) argv, ++ NULL, /* envp */ ++ G_SPAWN_SEARCH_PATH | G_SPAWN_DO_NOT_REAP_CHILD, ++ NULL, /* child_setup */ ++ NULL, /* child_setup's user_data */ ++ &(data->child_pid), ++ NULL, /* gint *stdin_fd */ ++ &(data->child_stdout_fd), ++ &(data->child_stderr_fd), ++ &error)) ++ { ++ g_prefix_error (&error, "Error spawning: "); ++ g_simple_async_result_take_error (data->simple, error); ++ g_simple_async_result_complete_in_idle (data->simple); ++ g_object_unref (data->simple); ++ goto out; ++ } ++ ++ if (timeout_seconds > 0) ++ { ++ data->timeout_source = g_timeout_source_new_seconds (timeout_seconds); ++ g_source_set_priority (data->timeout_source, G_PRIORITY_DEFAULT); ++ g_source_set_callback (data->timeout_source, utils_timeout_cb, data, NULL); ++ g_source_attach (data->timeout_source, data->main_context); ++ g_source_unref (data->timeout_source); ++ } ++ ++ data->child_watch_source = g_child_watch_source_new (data->child_pid); ++ g_source_set_callback (data->child_watch_source, (GSourceFunc) utils_child_watch_cb, data, NULL); ++ g_source_attach (data->child_watch_source, data->main_context); ++ g_source_unref (data->child_watch_source); ++ ++ data->child_stdout_channel = g_io_channel_unix_new (data->child_stdout_fd); ++ g_io_channel_set_flags (data->child_stdout_channel, G_IO_FLAG_NONBLOCK, NULL); ++ data->child_stdout_source = g_io_create_watch (data->child_stdout_channel, G_IO_IN); ++ g_source_set_callback (data->child_stdout_source, (GSourceFunc) utils_read_child_stdout, data, NULL); ++ g_source_attach (data->child_stdout_source, data->main_context); ++ g_source_unref (data->child_stdout_source); ++ ++ data->child_stderr_channel = g_io_channel_unix_new (data->child_stderr_fd); ++ g_io_channel_set_flags (data->child_stderr_channel, G_IO_FLAG_NONBLOCK, NULL); ++ data->child_stderr_source = g_io_create_watch (data->child_stderr_channel, G_IO_IN); ++ g_source_set_callback (data->child_stderr_source, (GSourceFunc) utils_read_child_stderr, data, NULL); ++ g_source_attach (data->child_stderr_source, data->main_context); ++ g_source_unref (data->child_stderr_source); ++ ++ out: ++ ; ++} ++ ++void ++polkit_backend_common_on_dir_monitor_changed (GFileMonitor *monitor, ++ GFile *file, ++ GFile *other_file, ++ GFileMonitorEvent event_type, ++ gpointer user_data) ++{ ++ PolkitBackendJsAuthority *authority = POLKIT_BACKEND_JS_AUTHORITY (user_data); ++ ++ /* TODO: maybe rate-limit so storms of events are collapsed into one with a 500ms resolution? ++ * Because when editing a file with emacs we get 4-8 events.. ++ */ ++ ++ if (file != NULL) ++ { ++ gchar *name; ++ ++ name = g_file_get_basename (file); ++ ++ /* g_print ("event_type=%d file=%p name=%s\n", event_type, file, name); */ ++ if (!g_str_has_prefix (name, ".") && ++ !g_str_has_prefix (name, "#") && ++ g_str_has_suffix (name, ".rules") && ++ (event_type == G_FILE_MONITOR_EVENT_CREATED || ++ event_type == G_FILE_MONITOR_EVENT_DELETED || ++ event_type == G_FILE_MONITOR_EVENT_CHANGES_DONE_HINT)) ++ { ++ polkit_backend_authority_log (POLKIT_BACKEND_AUTHORITY (authority), ++ "Reloading rules"); ++ polkit_backend_common_reload_scripts (authority); ++ } ++ g_free (name); ++ } ++} ++ ++gboolean ++polkit_backend_common_spawn_finish (GAsyncResult *res, ++ gint *out_exit_status, ++ gchar **out_standard_output, ++ gchar **out_standard_error, ++ GError **error) ++{ ++ GSimpleAsyncResult *simple = G_SIMPLE_ASYNC_RESULT (res); ++ UtilsSpawnData *data; ++ gboolean ret = FALSE; ++ ++ g_return_val_if_fail (G_IS_ASYNC_RESULT (res), FALSE); ++ g_return_val_if_fail (error == NULL || *error == NULL, FALSE); ++ ++ g_warn_if_fail (g_simple_async_result_get_source_tag (simple) == polkit_backend_common_spawn); ++ ++ if (g_simple_async_result_propagate_error (simple, error)) ++ goto out; ++ ++ data = (UtilsSpawnData*)g_simple_async_result_get_op_res_gpointer (simple); ++ ++ if (data->timed_out) ++ { ++ g_set_error (error, ++ G_IO_ERROR, ++ G_IO_ERROR_TIMED_OUT, ++ "Timed out after %d seconds", ++ data->timeout_seconds); ++ goto out; ++ } ++ ++ if (out_exit_status != NULL) ++ *out_exit_status = data->exit_status; ++ ++ if (out_standard_output != NULL) ++ *out_standard_output = g_strdup (data->child_stdout->str); ++ ++ if (out_standard_error != NULL) ++ *out_standard_error = g_strdup (data->child_stderr->str); ++ ++ ret = TRUE; ++ ++ out: ++ return ret; ++} ++ ++static const gchar * ++polkit_backend_js_authority_get_name (PolkitBackendAuthority *authority) ++{ ++ return "js"; ++} ++ ++static const gchar * ++polkit_backend_js_authority_get_version (PolkitBackendAuthority *authority) ++{ ++ return PACKAGE_VERSION; ++} ++ ++static PolkitAuthorityFeatures ++polkit_backend_js_authority_get_features (PolkitBackendAuthority *authority) ++{ ++ return POLKIT_AUTHORITY_FEATURES_TEMPORARY_AUTHORIZATION; ++} ++ ++void ++polkit_backend_common_js_authority_class_init_common (PolkitBackendJsAuthorityClass *klass) ++{ ++ GObjectClass *gobject_class; ++ PolkitBackendAuthorityClass *authority_class; ++ PolkitBackendInteractiveAuthorityClass *interactive_authority_class; ++ ++ gobject_class = G_OBJECT_CLASS (klass); ++ gobject_class->finalize = polkit_backend_common_js_authority_finalize; ++ gobject_class->set_property = polkit_backend_common_js_authority_set_property; ++ gobject_class->constructed = polkit_backend_common_js_authority_constructed; ++ ++ authority_class = POLKIT_BACKEND_AUTHORITY_CLASS (klass); ++ authority_class->get_name = polkit_backend_js_authority_get_name; ++ authority_class->get_version = polkit_backend_js_authority_get_version; ++ authority_class->get_features = polkit_backend_js_authority_get_features; ++ ++ interactive_authority_class = POLKIT_BACKEND_INTERACTIVE_AUTHORITY_CLASS (klass); ++ interactive_authority_class->get_admin_identities = polkit_backend_common_js_authority_get_admin_auth_identities; ++ interactive_authority_class->check_authorization_sync = polkit_backend_common_js_authority_check_authorization_sync; ++ ++ g_object_class_install_property (gobject_class, ++ PROP_RULES_DIRS, ++ g_param_spec_boxed ("rules-dirs", ++ NULL, ++ NULL, ++ G_TYPE_STRV, ++ G_PARAM_CONSTRUCT_ONLY | G_PARAM_WRITABLE)); ++} ++ ++gint ++polkit_backend_common_rules_file_name_cmp (const gchar *a, ++ const gchar *b) ++{ ++ gint ret; ++ const gchar *a_base; ++ const gchar *b_base; ++ ++ a_base = strrchr (a, '/'); ++ b_base = strrchr (b, '/'); ++ ++ g_assert (a_base != NULL); ++ g_assert (b_base != NULL); ++ a_base += 1; ++ b_base += 1; ++ ++ ret = g_strcmp0 (a_base, b_base); ++ if (ret == 0) ++ { ++ /* /etc wins over /usr */ ++ ret = g_strcmp0 (a, b); ++ g_assert (ret != 0); ++ } ++ ++ return ret; ++} ++ ++const gchar * ++polkit_backend_common_get_signal_name (gint signal_number) ++{ ++ switch (signal_number) ++ { ++#define _HANDLE_SIG(sig) case sig: return #sig; ++ _HANDLE_SIG (SIGHUP); ++ _HANDLE_SIG (SIGINT); ++ _HANDLE_SIG (SIGQUIT); ++ _HANDLE_SIG (SIGILL); ++ _HANDLE_SIG (SIGABRT); ++ _HANDLE_SIG (SIGFPE); ++ _HANDLE_SIG (SIGKILL); ++ _HANDLE_SIG (SIGSEGV); ++ _HANDLE_SIG (SIGPIPE); ++ _HANDLE_SIG (SIGALRM); ++ _HANDLE_SIG (SIGTERM); ++ _HANDLE_SIG (SIGUSR1); ++ _HANDLE_SIG (SIGUSR2); ++ _HANDLE_SIG (SIGCHLD); ++ _HANDLE_SIG (SIGCONT); ++ _HANDLE_SIG (SIGSTOP); ++ _HANDLE_SIG (SIGTSTP); ++ _HANDLE_SIG (SIGTTIN); ++ _HANDLE_SIG (SIGTTOU); ++ _HANDLE_SIG (SIGBUS); ++#ifdef SIGPOLL ++ _HANDLE_SIG (SIGPOLL); ++#endif ++ _HANDLE_SIG (SIGPROF); ++ _HANDLE_SIG (SIGSYS); ++ _HANDLE_SIG (SIGTRAP); ++ _HANDLE_SIG (SIGURG); ++ _HANDLE_SIG (SIGVTALRM); ++ _HANDLE_SIG (SIGXCPU); ++ _HANDLE_SIG (SIGXFSZ); ++#undef _HANDLE_SIG ++ default: ++ break; ++ } ++ return "UNKNOWN_SIGNAL"; ++} ++ ++void ++polkit_backend_common_spawn_cb (GObject *source_object, ++ GAsyncResult *res, ++ gpointer user_data) ++{ ++ SpawnData *data = (SpawnData *)user_data; ++ data->res = (GAsyncResult*)g_object_ref (res); ++ g_main_loop_quit (data->loop); ++} +diff --git a/src/polkitbackend/polkitbackendcommon.h b/src/polkitbackend/polkitbackendcommon.h +new file mode 100644 +index 0000000..dd700fc +--- /dev/null ++++ b/src/polkitbackend/polkitbackendcommon.h +@@ -0,0 +1,158 @@ ++/* ++ * Copyright (C) 2008 Red Hat, Inc. ++ * ++ * This library is free software; you can redistribute it and/or ++ * modify it under the terms of the GNU Lesser General Public ++ * License as published by the Free Software Foundation; either ++ * version 2 of the License, or (at your option) any later version. ++ * ++ * This library is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ * Lesser General Public License for more details. ++ * ++ * You should have received a copy of the GNU Lesser General ++ * Public License along with this library; if not, write to the ++ * Free Software Foundation, Inc., 59 Temple Place, Suite 330, ++ * Boston, MA 02111-1307, USA. ++ * ++ * Author: David Zeuthen ++ */ ++ ++#if !defined (_POLKIT_BACKEND_COMPILATION) && !defined(_POLKIT_BACKEND_INSIDE_POLKIT_BACKEND_H) ++#error "Only can be included directly, this file may disappear or change contents." ++#endif ++ ++#ifndef __POLKIT_BACKEND_COMMON_H ++#define __POLKIT_BACKEND_COMMON_H ++ ++#include "config.h" ++#include ++#include ++#include ++#include ++#ifdef HAVE_NETGROUP_H ++#include ++#else ++#include ++#endif ++#include ++#include ++#include ++#include //here, all things glib via glib.h (including -> gspawn.h) ++ ++#include ++#include "polkitbackendjsauthority.h" ++ ++#include ++ ++#ifdef HAVE_LIBSYSTEMD ++#include ++#endif /* HAVE_LIBSYSTEMD */ ++ ++#define RUNAWAY_KILLER_TIMEOUT (15) ++ ++#ifdef __cplusplus ++extern "C" { ++#endif ++ ++enum ++{ ++ PROP_0, ++ PROP_RULES_DIRS, ++}; ++ ++typedef struct ++{ ++ GSimpleAsyncResult *simple; /* borrowed reference */ ++ GMainContext *main_context; /* may be NULL */ ++ ++ GCancellable *cancellable; /* may be NULL */ ++ gulong cancellable_handler_id; ++ ++ GPid child_pid; ++ gint child_stdout_fd; ++ gint child_stderr_fd; ++ ++ GIOChannel *child_stdout_channel; ++ GIOChannel *child_stderr_channel; ++ ++ GSource *child_watch_source; ++ GSource *child_stdout_source; ++ GSource *child_stderr_source; ++ ++ guint timeout_seconds; ++ gboolean timed_out; ++ GSource *timeout_source; ++ ++ GString *child_stdout; ++ GString *child_stderr; ++ ++ gint exit_status; ++} UtilsSpawnData; ++ ++typedef struct ++{ ++ GMainLoop *loop; ++ GAsyncResult *res; ++} SpawnData; ++ ++void polkit_backend_common_spawn (const gchar *const *argv, ++ guint timeout_seconds, ++ GCancellable *cancellable, ++ GAsyncReadyCallback callback, ++ gpointer user_data); ++void polkit_backend_common_spawn_cb (GObject *source_object, ++ GAsyncResult *res, ++ gpointer user_data); ++gboolean polkit_backend_common_spawn_finish (GAsyncResult *res, ++ gint *out_exit_status, ++ gchar **out_standard_output, ++ gchar **out_standard_error, ++ GError **error); ++ ++void polkit_backend_common_on_dir_monitor_changed (GFileMonitor *monitor, ++ GFile *file, ++ GFile *other_file, ++ GFileMonitorEvent event_type, ++ gpointer user_data); ++ ++void polkit_backend_common_js_authority_class_init_common (PolkitBackendJsAuthorityClass *klass); ++ ++gint polkit_backend_common_rules_file_name_cmp (const gchar *a, ++ const gchar *b); ++ ++const gchar *polkit_backend_common_get_signal_name (gint signal_number); ++ ++/* To be provided by each JS backend, from here onwards ---------------------------------------------- */ ++ ++void polkit_backend_common_reload_scripts (PolkitBackendJsAuthority *authority); ++void polkit_backend_common_js_authority_finalize (GObject *object); ++void polkit_backend_common_js_authority_constructed (GObject *object); ++GList *polkit_backend_common_js_authority_get_admin_auth_identities (PolkitBackendInteractiveAuthority *_authority, ++ PolkitSubject *caller, ++ PolkitSubject *subject, ++ PolkitIdentity *user_for_subject, ++ gboolean subject_is_local, ++ gboolean subject_is_active, ++ const gchar *action_id, ++ PolkitDetails *details); ++void polkit_backend_common_js_authority_set_property (GObject *object, ++ guint property_id, ++ const GValue *value, ++ GParamSpec *pspec); ++PolkitImplicitAuthorization polkit_backend_common_js_authority_check_authorization_sync (PolkitBackendInteractiveAuthority *_authority, ++ PolkitSubject *caller, ++ PolkitSubject *subject, ++ PolkitIdentity *user_for_subject, ++ gboolean subject_is_local, ++ gboolean subject_is_active, ++ const gchar *action_id, ++ PolkitDetails *details, ++ PolkitImplicitAuthorization implicit); ++#ifdef __cplusplus ++} ++#endif ++ ++#endif /* __POLKIT_BACKEND_COMMON_H */ ++ +diff --git a/src/polkitbackend/polkitbackendduktapeauthority.c b/src/polkitbackend/polkitbackendduktapeauthority.c +new file mode 100644 +index 0000000..c89dbcf +--- /dev/null ++++ b/src/polkitbackend/polkitbackendduktapeauthority.c +@@ -0,0 +1,1051 @@ ++/* ++ * Copyright (C) 2008-2012 Red Hat, Inc. ++ * Copyright (C) 2015 Tangent Space ++ * Copyright (C) 2019 Wu Xiaotian ++ * ++ * This library is free software; you can redistribute it and/or ++ * modify it under the terms of the GNU Lesser General Public ++ * License as published by the Free Software Foundation; either ++ * version 2 of the License, or (at your option) any later version. ++ * ++ * This library is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ * Lesser General Public License for more details. ++ * ++ * You should have received a copy of the GNU Lesser General ++ * Public License along with this library; if not, write to the ++ * Free Software Foundation, Inc., 59 Temple Place, Suite 330, ++ * Boston, MA 02111-1307, USA. ++ * ++ * Author: David Zeuthen ++ */ ++ ++#include ++ ++#include "polkitbackendcommon.h" ++ ++#include "duktape.h" ++ ++/* Built source and not too big to worry about deduplication */ ++#include "initjs.h" /* init.js */ ++ ++/** ++ * SECTION:polkitbackendjsauthority ++ * @title: PolkitBackendJsAuthority ++ * @short_description: JS Authority ++ * @stability: Unstable ++ * ++ * An (Duktape-based) implementation of #PolkitBackendAuthority that reads and ++ * evaluates Javascript files and supports interaction with authentication ++ * agents (virtue of being based on #PolkitBackendInteractiveAuthority). ++ */ ++ ++/* ---------------------------------------------------------------------------------------------------- */ ++ ++struct _PolkitBackendJsAuthorityPrivate ++{ ++ gchar **rules_dirs; ++ GFileMonitor **dir_monitors; /* NULL-terminated array of GFileMonitor instances */ ++ ++ duk_context *cx; ++ ++ pthread_t runaway_killer_thread; ++}; ++ ++enum ++{ ++ RUNAWAY_KILLER_THREAD_EXIT_STATUS_UNSET, ++ RUNAWAY_KILLER_THREAD_EXIT_STATUS_SUCCESS, ++ RUNAWAY_KILLER_THREAD_EXIT_STATUS_FAILURE, ++}; ++ ++static gboolean execute_script_with_runaway_killer(PolkitBackendJsAuthority *authority, ++ const gchar *filename); ++ ++/* ---------------------------------------------------------------------------------------------------- */ ++ ++G_DEFINE_TYPE (PolkitBackendJsAuthority, polkit_backend_js_authority, POLKIT_BACKEND_TYPE_INTERACTIVE_AUTHORITY); ++ ++/* ---------------------------------------------------------------------------------------------------- */ ++ ++static duk_ret_t js_polkit_log (duk_context *cx); ++static duk_ret_t js_polkit_spawn (duk_context *cx); ++static duk_ret_t js_polkit_user_is_in_netgroup (duk_context *cx); ++ ++static const duk_function_list_entry js_polkit_functions[] = ++{ ++ { "log", js_polkit_log, 1 }, ++ { "spawn", js_polkit_spawn, 1 }, ++ { "_userIsInNetGroup", js_polkit_user_is_in_netgroup, 2 }, ++ { NULL, NULL, 0 }, ++}; ++ ++static void report_error (void *udata, ++ const char *msg) ++{ ++ PolkitBackendJsAuthority *authority = udata; ++ polkit_backend_authority_log (POLKIT_BACKEND_AUTHORITY (authority), ++ "fatal Duktape JS backend error: %s", ++ (msg ? msg : "no message")); ++} ++ ++static void ++polkit_backend_js_authority_init (PolkitBackendJsAuthority *authority) ++{ ++ authority->priv = G_TYPE_INSTANCE_GET_PRIVATE (authority, ++ POLKIT_BACKEND_TYPE_JS_AUTHORITY, ++ PolkitBackendJsAuthorityPrivate); ++} ++ ++static void ++load_scripts (PolkitBackendJsAuthority *authority) ++{ ++ GList *files = NULL; ++ GList *l; ++ guint num_scripts = 0; ++ GError *error = NULL; ++ guint n; ++ ++ files = NULL; ++ ++ for (n = 0; authority->priv->rules_dirs != NULL && authority->priv->rules_dirs[n] != NULL; n++) ++ { ++ const gchar *dir_name = authority->priv->rules_dirs[n]; ++ GDir *dir = NULL; ++ ++ polkit_backend_authority_log (POLKIT_BACKEND_AUTHORITY (authority), ++ "Loading rules from directory %s", ++ dir_name); ++ ++ dir = g_dir_open (dir_name, ++ 0, ++ &error); ++ if (dir == NULL) ++ { ++ polkit_backend_authority_log (POLKIT_BACKEND_AUTHORITY (authority), ++ "Error opening rules directory: %s (%s, %d)", ++ error->message, g_quark_to_string (error->domain), error->code); ++ g_clear_error (&error); ++ } ++ else ++ { ++ const gchar *name; ++ while ((name = g_dir_read_name (dir)) != NULL) ++ { ++ if (g_str_has_suffix (name, ".rules")) ++ files = g_list_prepend (files, g_strdup_printf ("%s/%s", dir_name, name)); ++ } ++ g_dir_close (dir); ++ } ++ } ++ ++ files = g_list_sort (files, (GCompareFunc) polkit_backend_common_rules_file_name_cmp); ++ ++ for (l = files; l != NULL; l = l->next) ++ { ++ const gchar *filename = (gchar *)l->data; ++ ++ if (!execute_script_with_runaway_killer(authority, filename)) ++ continue; ++ num_scripts++; ++ } ++ ++ polkit_backend_authority_log (POLKIT_BACKEND_AUTHORITY (authority), ++ "Finished loading, compiling and executing %d rules", ++ num_scripts); ++ g_list_free_full (files, g_free); ++} ++ ++void ++polkit_backend_common_reload_scripts (PolkitBackendJsAuthority *authority) ++{ ++ duk_context *cx = authority->priv->cx; ++ ++ duk_set_top (cx, 0); ++ if (!duk_get_global_string (cx, "polkit")) { ++ polkit_backend_authority_log (POLKIT_BACKEND_AUTHORITY (authority), ++ "Error deleting old rules, not loading new ones"); ++ return; ++ } ++ duk_push_string (cx, "_deleteRules"); ++ ++ duk_call_prop (cx, 0, 0); ++ ++ polkit_backend_authority_log (POLKIT_BACKEND_AUTHORITY (authority), ++ "Collecting garbage unconditionally..."); ++ ++ load_scripts (authority); ++ ++ /* Let applications know we have new rules... */ ++ g_signal_emit_by_name (authority, "changed"); ++} ++ ++static void ++setup_file_monitors (PolkitBackendJsAuthority *authority) ++{ ++ guint n; ++ GPtrArray *p; ++ ++ p = g_ptr_array_new (); ++ for (n = 0; authority->priv->rules_dirs != NULL && authority->priv->rules_dirs[n] != NULL; n++) ++ { ++ GFile *file; ++ GError *error; ++ GFileMonitor *monitor; ++ ++ file = g_file_new_for_path (authority->priv->rules_dirs[n]); ++ error = NULL; ++ monitor = g_file_monitor_directory (file, ++ G_FILE_MONITOR_NONE, ++ NULL, ++ &error); ++ g_object_unref (file); ++ if (monitor == NULL) ++ { ++ g_warning ("Error monitoring directory %s: %s", ++ authority->priv->rules_dirs[n], ++ error->message); ++ g_clear_error (&error); ++ } ++ else ++ { ++ g_signal_connect (monitor, ++ "changed", ++ G_CALLBACK (polkit_backend_common_on_dir_monitor_changed), ++ authority); ++ g_ptr_array_add (p, monitor); ++ } ++ } ++ g_ptr_array_add (p, NULL); ++ authority->priv->dir_monitors = (GFileMonitor**) g_ptr_array_free (p, FALSE); ++} ++ ++void ++polkit_backend_common_js_authority_constructed (GObject *object) ++{ ++ PolkitBackendJsAuthority *authority = POLKIT_BACKEND_JS_AUTHORITY (object); ++ duk_context *cx; ++ ++ cx = duk_create_heap (NULL, NULL, NULL, authority, report_error); ++ if (cx == NULL) ++ goto fail; ++ ++ authority->priv->cx = cx; ++ ++ duk_push_global_object (cx); ++ duk_push_object (cx); ++ duk_put_function_list (cx, -1, js_polkit_functions); ++ duk_put_prop_string (cx, -2, "polkit"); ++ ++ /* load polkit objects/functions into JS context (e.g. addRule(), ++ * _deleteRules(), _runRules() et al) ++ */ ++ duk_eval_string (cx, init_js); ++ ++ if (authority->priv->rules_dirs == NULL) ++ { ++ authority->priv->rules_dirs = g_new0 (gchar *, 3); ++ authority->priv->rules_dirs[0] = g_strdup (PACKAGE_SYSCONF_DIR "/polkit-1/rules.d"); ++ authority->priv->rules_dirs[1] = g_strdup (PACKAGE_DATA_DIR "/polkit-1/rules.d"); ++ } ++ ++ setup_file_monitors (authority); ++ load_scripts (authority); ++ ++ G_OBJECT_CLASS (polkit_backend_js_authority_parent_class)->constructed (object); ++ return; ++ ++ fail: ++ g_critical ("Error initializing JavaScript environment"); ++ g_assert_not_reached (); ++} ++ ++void ++polkit_backend_common_js_authority_finalize (GObject *object) ++{ ++ PolkitBackendJsAuthority *authority = POLKIT_BACKEND_JS_AUTHORITY (object); ++ guint n; ++ ++ for (n = 0; authority->priv->dir_monitors != NULL && authority->priv->dir_monitors[n] != NULL; n++) ++ { ++ GFileMonitor *monitor = authority->priv->dir_monitors[n]; ++ g_signal_handlers_disconnect_by_func (monitor, ++ G_CALLBACK (polkit_backend_common_on_dir_monitor_changed), ++ authority); ++ g_object_unref (monitor); ++ } ++ g_free (authority->priv->dir_monitors); ++ g_strfreev (authority->priv->rules_dirs); ++ ++ duk_destroy_heap (authority->priv->cx); ++ ++ G_OBJECT_CLASS (polkit_backend_js_authority_parent_class)->finalize (object); ++} ++ ++void ++polkit_backend_common_js_authority_set_property (GObject *object, ++ guint property_id, ++ const GValue *value, ++ GParamSpec *pspec) ++{ ++ PolkitBackendJsAuthority *authority = POLKIT_BACKEND_JS_AUTHORITY (object); ++ ++ switch (property_id) ++ { ++ case PROP_RULES_DIRS: ++ g_assert (authority->priv->rules_dirs == NULL); ++ authority->priv->rules_dirs = (gchar **) g_value_dup_boxed (value); ++ break; ++ ++ default: ++ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); ++ break; ++ } ++} ++ ++static void ++polkit_backend_js_authority_class_init (PolkitBackendJsAuthorityClass *klass) ++{ ++ polkit_backend_common_js_authority_class_init_common (klass); ++ g_type_class_add_private (klass, sizeof (PolkitBackendJsAuthorityPrivate)); ++} ++ ++/* ---------------------------------------------------------------------------------------------------- */ ++ ++static void ++set_property_str (duk_context *cx, ++ const gchar *name, ++ const gchar *value) ++{ ++ duk_push_string (cx, value); ++ duk_put_prop_string (cx, -2, name); ++} ++ ++static void ++set_property_strv (duk_context *cx, ++ const gchar *name, ++ GPtrArray *value) ++{ ++ guint n; ++ duk_push_array (cx); ++ for (n = 0; n < value->len; n++) ++ { ++ duk_push_string (cx, g_ptr_array_index (value, n)); ++ duk_put_prop_index (cx, -2, n); ++ } ++ duk_put_prop_string (cx, -2, name); ++} ++ ++static void ++set_property_int32 (duk_context *cx, ++ const gchar *name, ++ gint32 value) ++{ ++ duk_push_int (cx, value); ++ duk_put_prop_string (cx, -2, name); ++} ++ ++static void ++set_property_bool (duk_context *cx, ++ const char *name, ++ gboolean value) ++{ ++ duk_push_boolean (cx, value); ++ duk_put_prop_string (cx, -2, name); ++} ++ ++/* ---------------------------------------------------------------------------------------------------- */ ++ ++static gboolean ++push_subject (duk_context *cx, ++ PolkitSubject *subject, ++ PolkitIdentity *user_for_subject, ++ gboolean subject_is_local, ++ gboolean subject_is_active, ++ GError **error) ++{ ++ gboolean ret = FALSE; ++ pid_t pid; ++ uid_t uid; ++ gchar *user_name = NULL; ++ GPtrArray *groups = NULL; ++ struct passwd *passwd; ++ char *seat_str = NULL; ++ char *session_str = NULL; ++ ++ if (!duk_get_global_string (cx, "Subject")) { ++ return FALSE; ++ } ++ ++ duk_new (cx, 0); ++ ++ if (POLKIT_IS_UNIX_PROCESS (subject)) ++ { ++ pid = polkit_unix_process_get_pid (POLKIT_UNIX_PROCESS (subject)); ++ } ++ else if (POLKIT_IS_SYSTEM_BUS_NAME (subject)) ++ { ++ PolkitSubject *process; ++ process = polkit_system_bus_name_get_process_sync (POLKIT_SYSTEM_BUS_NAME (subject), NULL, error); ++ if (process == NULL) ++ goto out; ++ pid = polkit_unix_process_get_pid (POLKIT_UNIX_PROCESS (process)); ++ g_object_unref (process); ++ } ++ else ++ { ++ g_assert_not_reached (); ++ } ++ ++#ifdef HAVE_LIBSYSTEMD ++ if (sd_pid_get_session (pid, &session_str) == 0) ++ { ++ if (sd_session_get_seat (session_str, &seat_str) == 0) ++ { ++ /* do nothing */ ++ } ++ } ++#endif /* HAVE_LIBSYSTEMD */ ++ ++ g_assert (POLKIT_IS_UNIX_USER (user_for_subject)); ++ uid = polkit_unix_user_get_uid (POLKIT_UNIX_USER (user_for_subject)); ++ ++ groups = g_ptr_array_new_with_free_func (g_free); ++ ++ passwd = getpwuid (uid); ++ if (passwd == NULL) ++ { ++ user_name = g_strdup_printf ("%d", (gint) uid); ++ g_warning ("Error looking up info for uid %d: %m", (gint) uid); ++ } ++ else ++ { ++ gid_t gids[512]; ++ int num_gids = 512; ++ ++ user_name = g_strdup (passwd->pw_name); ++ ++ if (getgrouplist (passwd->pw_name, ++ passwd->pw_gid, ++ gids, ++ &num_gids) < 0) ++ { ++ g_warning ("Error looking up groups for uid %d: %m", (gint) uid); ++ } ++ else ++ { ++ gint n; ++ for (n = 0; n < num_gids; n++) ++ { ++ struct group *group; ++ group = getgrgid (gids[n]); ++ if (group == NULL) ++ { ++ g_ptr_array_add (groups, g_strdup_printf ("%d", (gint) gids[n])); ++ } ++ else ++ { ++ g_ptr_array_add (groups, g_strdup (group->gr_name)); ++ } ++ } ++ } ++ } ++ ++ set_property_int32 (cx, "pid", pid); ++ set_property_str (cx, "user", user_name); ++ set_property_strv (cx, "groups", groups); ++ set_property_str (cx, "seat", seat_str); ++ set_property_str (cx, "session", session_str); ++ set_property_bool (cx, "local", subject_is_local); ++ set_property_bool (cx, "active", subject_is_active); ++ ++ ret = TRUE; ++ ++ out: ++ free (session_str); ++ free (seat_str); ++ g_free (user_name); ++ if (groups != NULL) ++ g_ptr_array_unref (groups); ++ ++ return ret; ++} ++ ++/* ---------------------------------------------------------------------------------------------------- */ ++ ++static gboolean ++push_action_and_details (duk_context *cx, ++ const gchar *action_id, ++ PolkitDetails *details, ++ GError **error) ++{ ++ gchar **keys; ++ guint n; ++ ++ if (!duk_get_global_string (cx, "Action")) { ++ return FALSE; ++ } ++ ++ duk_new (cx, 0); ++ ++ set_property_str (cx, "id", action_id); ++ ++ keys = polkit_details_get_keys (details); ++ for (n = 0; keys != NULL && keys[n] != NULL; n++) ++ { ++ gchar *key; ++ const gchar *value; ++ key = g_strdup_printf ("_detail_%s", keys[n]); ++ value = polkit_details_lookup (details, keys[n]); ++ set_property_str (cx, key, value); ++ g_free (key); ++ } ++ g_strfreev (keys); ++ ++ return TRUE; ++} ++ ++/* ---------------------------------------------------------------------------------------------------- */ ++ ++typedef struct { ++ PolkitBackendJsAuthority *authority; ++ const gchar *filename; ++ pthread_cond_t cond; ++ pthread_mutex_t mutex; ++ gint ret; ++} RunawayKillerCtx; ++ ++static gpointer ++runaway_killer_thread_execute_js (gpointer user_data) ++{ ++ RunawayKillerCtx *ctx = user_data; ++ duk_context *cx = ctx->authority->priv->cx; ++ ++ int oldtype, pthread_err; ++ ++ if ((pthread_err = pthread_setcanceltype(PTHREAD_CANCEL_ASYNCHRONOUS, &oldtype))) { ++ polkit_backend_authority_log (POLKIT_BACKEND_AUTHORITY (ctx->authority), ++ "Error setting thread cancel type: %s", ++ strerror(pthread_err)); ++ goto err; ++ } ++ ++ GFile *file = g_file_new_for_path(ctx->filename); ++ char *contents; ++ gsize len; ++ ++ if (!g_file_load_contents(file, NULL, &contents, &len, NULL, NULL)) { ++ polkit_backend_authority_log(POLKIT_BACKEND_AUTHORITY(ctx->authority), ++ "Error loading script %s", ctx->filename); ++ g_object_unref(file); ++ goto err; ++ } ++ ++ g_object_unref(file); ++ ++ /* evaluate the script, trying to print context in any syntax errors ++ found */ ++ if (duk_peval_lstring(cx, contents, len) != 0) ++ { ++ polkit_backend_authority_log(POLKIT_BACKEND_AUTHORITY(ctx->authority), ++ "Error compiling script %s: %s", ctx->filename, ++ duk_safe_to_string(cx, -1)); ++ duk_pop(cx); ++ goto free_err; ++ } ++ g_free(contents); ++ ++ ctx->ret = RUNAWAY_KILLER_THREAD_EXIT_STATUS_SUCCESS; ++ goto end; ++ ++free_err: ++ g_free(contents); ++err: ++ ctx->ret = RUNAWAY_KILLER_THREAD_EXIT_STATUS_FAILURE; ++end: ++ if ((pthread_err = pthread_cond_signal(&ctx->cond))) { ++ polkit_backend_authority_log (POLKIT_BACKEND_AUTHORITY (ctx->authority), ++ "Error signaling on condition variable: %s", ++ strerror(pthread_err)); ++ ctx->ret = RUNAWAY_KILLER_THREAD_EXIT_STATUS_FAILURE; ++ } ++ return NULL; ++} ++ ++static gpointer ++runaway_killer_thread_call_js (gpointer user_data) ++{ ++ RunawayKillerCtx *ctx = user_data; ++ duk_context *cx = ctx->authority->priv->cx; ++ int oldtype, pthread_err; ++ ++ if ((pthread_err = pthread_setcanceltype(PTHREAD_CANCEL_ASYNCHRONOUS, &oldtype))) { ++ polkit_backend_authority_log (POLKIT_BACKEND_AUTHORITY (ctx->authority), ++ "Error setting thread cancel type: %s", ++ strerror(pthread_err)); ++ goto err; ++ } ++ ++ if (duk_pcall_prop (cx, 0, 2) != DUK_EXEC_SUCCESS) ++ { ++ polkit_backend_authority_log (POLKIT_BACKEND_AUTHORITY (ctx->authority), ++ "Error evaluating admin rules: ", ++ duk_safe_to_string (cx, -1)); ++ goto err; ++ } ++ ++ ctx->ret = RUNAWAY_KILLER_THREAD_EXIT_STATUS_SUCCESS; ++ goto end; ++ ++err: ++ ctx->ret = RUNAWAY_KILLER_THREAD_EXIT_STATUS_FAILURE; ++end: ++ if ((pthread_err = pthread_cond_signal(&ctx->cond))) { ++ polkit_backend_authority_log (POLKIT_BACKEND_AUTHORITY (ctx->authority), ++ "Error signaling on condition variable: %s", ++ strerror(pthread_err)); ++ ctx->ret = RUNAWAY_KILLER_THREAD_EXIT_STATUS_FAILURE; ++ } ++ return NULL; ++} ++ ++#if defined (HAVE_PTHREAD_CONDATTR_SETCLOCK) ++# if defined(CLOCK_MONOTONIC) ++# define PK_CLOCK CLOCK_MONOTONIC ++# elif defined(CLOCK_BOOTTIME) ++# define PK_CLOCK CLOCK_BOOTTIME ++# else ++ /* No suitable clock */ ++# undef HAVE_PTHREAD_CONDATTR_SETCLOCK ++# define PK_CLOCK CLOCK_REALTIME ++# endif ++#else /* ! HAVE_PTHREAD_CONDATTR_SETCLOCK */ ++# define PK_CLOCK CLOCK_REALTIME ++#endif /* ! HAVE_PTHREAD_CONDATTR_SETCLOCK */ ++ ++static gboolean ++runaway_killer_common(PolkitBackendJsAuthority *authority, RunawayKillerCtx *ctx, void *js_context_cb (void *user_data)) ++{ ++ int pthread_err; ++ gboolean cancel = FALSE; ++ pthread_condattr_t attr; ++ struct timespec abs_time; ++ ++#ifdef HAVE_PTHREAD_CONDATTR_SETCLOCK ++ if ((pthread_err = pthread_condattr_init(&attr))) { ++ polkit_backend_authority_log (POLKIT_BACKEND_AUTHORITY (authority), ++ "Error initializing condition variable attributes: %s", ++ strerror(pthread_err)); ++ return FALSE; ++ } ++ if ((pthread_err = pthread_condattr_setclock(&attr, PK_CLOCK))) { ++ polkit_backend_authority_log (POLKIT_BACKEND_AUTHORITY (authority), ++ "Error setting condition variable attributes: %s", ++ strerror(pthread_err)); ++ goto err_clean_condattr; ++ } ++ /* Init again, with needed attr */ ++ if ((pthread_err = pthread_cond_init(&ctx->cond, &attr))) { ++ polkit_backend_authority_log (POLKIT_BACKEND_AUTHORITY (authority), ++ "Error initializing condition variable: %s", ++ strerror(pthread_err)); ++ goto err_clean_condattr; ++ } ++#endif ++ ++ if ((pthread_err = pthread_mutex_lock(&ctx->mutex))) { ++ polkit_backend_authority_log (POLKIT_BACKEND_AUTHORITY (authority), ++ "Error locking mutex: %s", ++ strerror(pthread_err)); ++ goto err_clean_cond; ++ } ++ ++ if (clock_gettime(PK_CLOCK, &abs_time)) { ++ polkit_backend_authority_log (POLKIT_BACKEND_AUTHORITY (authority), ++ "Error getting system's monotonic time: %s", ++ strerror(errno)); ++ goto err_clean_cond; ++ } ++ abs_time.tv_sec += RUNAWAY_KILLER_TIMEOUT; ++ ++ if ((pthread_err = pthread_create(&authority->priv->runaway_killer_thread, NULL, ++ js_context_cb, ctx))) { ++ polkit_backend_authority_log (POLKIT_BACKEND_AUTHORITY (authority), ++ "Error creating runaway JS killer thread: %s", ++ strerror(pthread_err)); ++ goto err_clean_cond; ++ } ++ ++ while (ctx->ret == RUNAWAY_KILLER_THREAD_EXIT_STATUS_UNSET) /* loop to treat spurious wakeups */ ++ if (pthread_cond_timedwait(&ctx->cond, &ctx->mutex, &abs_time) == ETIMEDOUT) { ++ cancel = TRUE; ++ ++ /* Log that we are terminating the script */ ++ polkit_backend_authority_log (POLKIT_BACKEND_AUTHORITY (authority), ++ "Terminating runaway script after %d seconds", ++ RUNAWAY_KILLER_TIMEOUT); ++ ++ break; ++ } ++ ++ if ((pthread_err = pthread_mutex_unlock(&ctx->mutex))) { ++ polkit_backend_authority_log (POLKIT_BACKEND_AUTHORITY (authority), ++ "Error unlocking mutex: %s", ++ strerror(pthread_err)); ++ goto err_clean_cond; ++ } ++ ++ if (cancel) { ++ if ((pthread_err = pthread_cancel (authority->priv->runaway_killer_thread))) { ++ polkit_backend_authority_log (POLKIT_BACKEND_AUTHORITY (authority), ++ "Error cancelling runaway JS killer thread: %s", ++ strerror(pthread_err)); ++ goto err_clean_cond; ++ } ++ } ++ if ((pthread_err = pthread_join (authority->priv->runaway_killer_thread, NULL))) { ++ polkit_backend_authority_log (POLKIT_BACKEND_AUTHORITY (authority), ++ "Error joining runaway JS killer thread: %s", ++ strerror(pthread_err)); ++ goto err_clean_cond; ++ } ++ ++ return ctx->ret == RUNAWAY_KILLER_THREAD_EXIT_STATUS_SUCCESS; ++ ++ err_clean_cond: ++#ifdef HAVE_PTHREAD_CONDATTR_SETCLOCK ++ pthread_cond_destroy(&ctx->cond); ++#endif ++ err_clean_condattr: ++#ifdef HAVE_PTHREAD_CONDATTR_SETCLOCK ++ pthread_condattr_destroy(&attr); ++#endif ++ return FALSE; ++} ++ ++/* Blocking for at most RUNAWAY_KILLER_TIMEOUT */ ++static gboolean ++execute_script_with_runaway_killer(PolkitBackendJsAuthority *authority, ++ const gchar *filename) ++{ ++ RunawayKillerCtx ctx = {.authority = authority, .filename = filename, ++ .ret = RUNAWAY_KILLER_THREAD_EXIT_STATUS_UNSET, ++ .mutex = PTHREAD_MUTEX_INITIALIZER, ++ .cond = PTHREAD_COND_INITIALIZER}; ++ ++ return runaway_killer_common(authority, &ctx, &runaway_killer_thread_execute_js); ++} ++ ++/* Calls already stacked function and args. Blocking for at most ++ * RUNAWAY_KILLER_TIMEOUT. If timeout is the case, ctx.ret will be ++ * RUNAWAY_KILLER_THREAD_EXIT_STATUS_UNSET, thus returning FALSE. ++ */ ++static gboolean ++call_js_function_with_runaway_killer(PolkitBackendJsAuthority *authority) ++{ ++ RunawayKillerCtx ctx = {.authority = authority, ++ .ret = RUNAWAY_KILLER_THREAD_EXIT_STATUS_UNSET, ++ .mutex = PTHREAD_MUTEX_INITIALIZER, ++ .cond = PTHREAD_COND_INITIALIZER}; ++ ++ return runaway_killer_common(authority, &ctx, &runaway_killer_thread_call_js); ++} ++ ++/* ---------------------------------------------------------------------------------------------------- */ ++ ++GList * ++polkit_backend_common_js_authority_get_admin_auth_identities (PolkitBackendInteractiveAuthority *_authority, ++ PolkitSubject *caller, ++ PolkitSubject *subject, ++ PolkitIdentity *user_for_subject, ++ gboolean subject_is_local, ++ gboolean subject_is_active, ++ const gchar *action_id, ++ PolkitDetails *details) ++{ ++ PolkitBackendJsAuthority *authority = POLKIT_BACKEND_JS_AUTHORITY (_authority); ++ GList *ret = NULL; ++ guint n; ++ GError *error = NULL; ++ const char *ret_str = NULL; ++ gchar **ret_strs = NULL; ++ duk_context *cx = authority->priv->cx; ++ ++ duk_set_top (cx, 0); ++ if (!duk_get_global_string (cx, "polkit")) { ++ polkit_backend_authority_log (POLKIT_BACKEND_AUTHORITY (authority), ++ "Error deleting old rules, not loading new ones"); ++ goto out; ++ } ++ ++ duk_push_string (cx, "_runAdminRules"); ++ ++ if (!push_action_and_details (cx, action_id, details, &error)) ++ { ++ polkit_backend_authority_log (POLKIT_BACKEND_AUTHORITY (authority), ++ "Error converting action and details to JS object: %s", ++ error->message); ++ g_clear_error (&error); ++ goto out; ++ } ++ ++ if (!push_subject (cx, subject, user_for_subject, subject_is_local, subject_is_active, &error)) ++ { ++ polkit_backend_authority_log (POLKIT_BACKEND_AUTHORITY (authority), ++ "Error converting subject to JS object: %s", ++ error->message); ++ g_clear_error (&error); ++ goto out; ++ } ++ ++ if (!call_js_function_with_runaway_killer (authority)) ++ goto out; ++ ++ ret_str = duk_require_string (cx, -1); ++ ++ ret_strs = g_strsplit (ret_str, ",", -1); ++ for (n = 0; ret_strs != NULL && ret_strs[n] != NULL; n++) ++ { ++ const gchar *identity_str = ret_strs[n]; ++ PolkitIdentity *identity; ++ ++ error = NULL; ++ identity = polkit_identity_from_string (identity_str, &error); ++ if (identity == NULL) ++ { ++ polkit_backend_authority_log (POLKIT_BACKEND_AUTHORITY (authority), ++ "Identity `%s' is not valid, ignoring: %s", ++ identity_str, error->message); ++ g_clear_error (&error); ++ } ++ else ++ { ++ ret = g_list_prepend (ret, identity); ++ } ++ } ++ ret = g_list_reverse (ret); ++ ++ out: ++ g_strfreev (ret_strs); ++ /* fallback to root password auth */ ++ if (ret == NULL) ++ ret = g_list_prepend (ret, polkit_unix_user_new (0)); ++ ++ return ret; ++} ++ ++/* ---------------------------------------------------------------------------------------------------- */ ++ ++PolkitImplicitAuthorization ++polkit_backend_common_js_authority_check_authorization_sync (PolkitBackendInteractiveAuthority *_authority, ++ PolkitSubject *caller, ++ PolkitSubject *subject, ++ PolkitIdentity *user_for_subject, ++ gboolean subject_is_local, ++ gboolean subject_is_active, ++ const gchar *action_id, ++ PolkitDetails *details, ++ PolkitImplicitAuthorization implicit) ++{ ++ PolkitBackendJsAuthority *authority = POLKIT_BACKEND_JS_AUTHORITY (_authority); ++ PolkitImplicitAuthorization ret = implicit; ++ GError *error = NULL; ++ gchar *ret_str = NULL; ++ gboolean good = FALSE; ++ duk_context *cx = authority->priv->cx; ++ ++ duk_set_top (cx, 0); ++ if (!duk_get_global_string (cx, "polkit")) { ++ goto out; ++ } ++ ++ duk_push_string (cx, "_runRules"); ++ ++ if (!push_action_and_details (cx, action_id, details, &error)) ++ { ++ polkit_backend_authority_log (POLKIT_BACKEND_AUTHORITY (authority), ++ "Error converting action and details to JS object: %s", ++ error->message); ++ g_clear_error (&error); ++ goto out; ++ } ++ ++ if (!push_subject (cx, subject, user_for_subject, subject_is_local, subject_is_active, &error)) ++ { ++ polkit_backend_authority_log (POLKIT_BACKEND_AUTHORITY (authority), ++ "Error converting subject to JS object: %s", ++ error->message); ++ g_clear_error (&error); ++ goto out; ++ } ++ ++ // If any error is the js context happened (ctx.ret == ++ // RUNAWAY_KILLER_THREAD_EXIT_STATUS_FAILURE) or it never properly returned ++ // (runaway scripts or ctx.ret == RUNAWAY_KILLER_THREAD_EXIT_STATUS_UNSET), ++ // unauthorize ++ if (!call_js_function_with_runaway_killer (authority)) ++ goto out; ++ ++ if (duk_is_null(cx, -1)) { ++ /* this is fine, means there was no match, use implicit authorizations */ ++ good = TRUE; ++ goto out; ++ } ++ ret_str = g_strdup (duk_require_string (cx, -1)); ++ if (!polkit_implicit_authorization_from_string (ret_str, &ret)) ++ { ++ polkit_backend_authority_log (POLKIT_BACKEND_AUTHORITY (authority), ++ "Returned result `%s' is not valid", ++ ret_str); ++ goto out; ++ } ++ ++ good = TRUE; ++ ++ out: ++ if (!good) ++ ret = POLKIT_IMPLICIT_AUTHORIZATION_NOT_AUTHORIZED; ++ if (ret_str != NULL) ++ g_free (ret_str); ++ ++ return ret; ++} ++ ++/* ---------------------------------------------------------------------------------------------------- */ ++ ++static duk_ret_t ++js_polkit_log (duk_context *cx) ++{ ++ const char *str = duk_require_string (cx, 0); ++ fprintf (stderr, "%s\n", str); ++ return 0; ++} ++ ++/* ---------------------------------------------------------------------------------------------------- */ ++ ++static duk_ret_t ++js_polkit_spawn (duk_context *cx) ++{ ++ duk_ret_t ret = DUK_RET_ERROR; ++ gchar *standard_output = NULL; ++ gchar *standard_error = NULL; ++ gint exit_status; ++ GError *error = NULL; ++ guint32 array_len; ++ gchar **argv = NULL; ++ GMainContext *context = NULL; ++ GMainLoop *loop = NULL; ++ SpawnData data = {0}; ++ char *err_str = NULL; ++ guint n; ++ ++ if (!duk_is_array (cx, 0)) ++ goto out; ++ ++ array_len = duk_get_length (cx, 0); ++ ++ argv = g_new0 (gchar*, array_len + 1); ++ for (n = 0; n < array_len; n++) ++ { ++ duk_get_prop_index (cx, 0, n); ++ argv[n] = g_strdup (duk_to_string (cx, -1)); ++ duk_pop (cx); ++ } ++ ++ context = g_main_context_new (); ++ loop = g_main_loop_new (context, FALSE); ++ ++ g_main_context_push_thread_default (context); ++ ++ data.loop = loop; ++ polkit_backend_common_spawn ((const gchar *const *) argv, ++ 10, /* timeout_seconds */ ++ NULL, /* cancellable */ ++ polkit_backend_common_spawn_cb, ++ &data); ++ ++ g_main_loop_run (loop); ++ ++ g_main_context_pop_thread_default (context); ++ ++ if (!polkit_backend_common_spawn_finish (data.res, ++ &exit_status, ++ &standard_output, ++ &standard_error, ++ &error)) ++ { ++ err_str = g_strdup_printf ("Error spawning helper: %s (%s, %d)", ++ error->message, g_quark_to_string (error->domain), error->code); ++ g_clear_error (&error); ++ goto out; ++ } ++ ++ if (!(WIFEXITED (exit_status) && WEXITSTATUS (exit_status) == 0)) ++ { ++ GString *gstr; ++ gstr = g_string_new (NULL); ++ if (WIFEXITED (exit_status)) ++ { ++ g_string_append_printf (gstr, ++ "Helper exited with non-zero exit status %d", ++ WEXITSTATUS (exit_status)); ++ } ++ else if (WIFSIGNALED (exit_status)) ++ { ++ g_string_append_printf (gstr, ++ "Helper was signaled with signal %s (%d)", ++ polkit_backend_common_get_signal_name (WTERMSIG (exit_status)), ++ WTERMSIG (exit_status)); ++ } ++ g_string_append_printf (gstr, ", stdout=`%s', stderr=`%s'", ++ standard_output, standard_error); ++ err_str = g_string_free (gstr, FALSE); ++ goto out; ++ } ++ ++ duk_push_string (cx, standard_output); ++ ret = 1; ++ ++ out: ++ g_strfreev (argv); ++ g_free (standard_output); ++ g_free (standard_error); ++ g_clear_object (&data.res); ++ if (loop != NULL) ++ g_main_loop_unref (loop); ++ if (context != NULL) ++ g_main_context_unref (context); ++ ++ if (err_str) ++ duk_error (cx, DUK_ERR_ERROR, err_str); ++ ++ return ret; ++} ++ ++/* ---------------------------------------------------------------------------------------------------- */ ++ ++ ++static duk_ret_t ++js_polkit_user_is_in_netgroup (duk_context *cx) ++{ ++ const char *user; ++ const char *netgroup; ++ gboolean is_in_netgroup = FALSE; ++ ++ user = duk_require_string (cx, 0); ++ netgroup = duk_require_string (cx, 1); ++ ++ if (innetgr (netgroup, ++ NULL, /* host */ ++ user, ++ NULL)) /* domain */ ++ { ++ is_in_netgroup = TRUE; ++ } ++ ++ duk_push_boolean (cx, is_in_netgroup); ++ return 1; ++} ++ ++/* ---------------------------------------------------------------------------------------------------- */ +diff --git a/src/polkitbackend/polkitbackendjsauthority.cpp b/src/polkitbackend/polkitbackendjsauthority.cpp +index ca17108..11e91c0 100644 +--- a/src/polkitbackend/polkitbackendjsauthority.cpp ++++ b/src/polkitbackend/polkitbackendjsauthority.cpp +@@ -19,29 +19,7 @@ + * Author: David Zeuthen + */ + +-#include "config.h" +-#include +-#include +-#include +-#include +-#ifdef HAVE_NETGROUP_H +-#include +-#else +-#include +-#endif +-#include +-#include +-#include +-#include +- +-#include +-#include "polkitbackendjsauthority.h" +- +-#include +- +-#ifdef HAVE_LIBSYSTEMD +-#include +-#endif /* HAVE_LIBSYSTEMD */ ++#include "polkitbackendcommon.h" + + #include + #include +@@ -52,6 +30,7 @@ + #include + #include + ++/* Built source and not too big to worry about deduplication */ + #include "initjs.h" /* init.js */ + + #ifdef JSGC_USE_EXACT_ROOTING +@@ -67,10 +46,9 @@ + * @short_description: JS Authority + * @stability: Unstable + * +- * An implementation of #PolkitBackendAuthority that reads and +- * evalates Javascript files and supports interaction with +- * authentication agents (virtue of being based on +- * #PolkitBackendInteractiveAuthority). ++ * An (SpiderMonkey-based) implementation of #PolkitBackendAuthority that reads ++ * and evaluates Javascript files and supports interaction with authentication ++ * agents (virtue of being based on #PolkitBackendInteractiveAuthority). + */ + + /* ---------------------------------------------------------------------------------------------------- */ +@@ -100,57 +78,11 @@ static bool execute_script_with_runaway_killer (PolkitBackendJsAuthority *author + JS::HandleScript script, + JS::MutableHandleValue rval); + +-static void utils_spawn (const gchar *const *argv, +- guint timeout_seconds, +- GCancellable *cancellable, +- GAsyncReadyCallback callback, +- gpointer user_data); +- +-gboolean utils_spawn_finish (GAsyncResult *res, +- gint *out_exit_status, +- gchar **out_standard_output, +- gchar **out_standard_error, +- GError **error); +- +-static void on_dir_monitor_changed (GFileMonitor *monitor, +- GFile *file, +- GFile *other_file, +- GFileMonitorEvent event_type, +- gpointer user_data); +- +-/* ---------------------------------------------------------------------------------------------------- */ +- +-enum +-{ +- PROP_0, +- PROP_RULES_DIRS, +-}; +- + /* ---------------------------------------------------------------------------------------------------- */ + + static gpointer runaway_killer_thread_func (gpointer user_data); + static void runaway_killer_terminate (PolkitBackendJsAuthority *authority); + +-static GList *polkit_backend_js_authority_get_admin_auth_identities (PolkitBackendInteractiveAuthority *authority, +- PolkitSubject *caller, +- PolkitSubject *subject, +- PolkitIdentity *user_for_subject, +- gboolean subject_is_local, +- gboolean subject_is_active, +- const gchar *action_id, +- PolkitDetails *details); +- +-static PolkitImplicitAuthorization polkit_backend_js_authority_check_authorization_sync ( +- PolkitBackendInteractiveAuthority *authority, +- PolkitSubject *caller, +- PolkitSubject *subject, +- PolkitIdentity *user_for_subject, +- gboolean subject_is_local, +- gboolean subject_is_active, +- const gchar *action_id, +- PolkitDetails *details, +- PolkitImplicitAuthorization implicit); +- + G_DEFINE_TYPE (PolkitBackendJsAuthority, polkit_backend_js_authority, POLKIT_BACKEND_TYPE_INTERACTIVE_AUTHORITY); + + /* ---------------------------------------------------------------------------------------------------- */ +@@ -229,33 +161,6 @@ polkit_backend_js_authority_init (PolkitBackendJsAuthority *authority) + PolkitBackendJsAuthorityPrivate); + } + +-static gint +-rules_file_name_cmp (const gchar *a, +- const gchar *b) +-{ +- gint ret; +- const gchar *a_base; +- const gchar *b_base; +- +- a_base = strrchr (a, '/'); +- b_base = strrchr (b, '/'); +- +- g_assert (a_base != NULL); +- g_assert (b_base != NULL); +- a_base += 1; +- b_base += 1; +- +- ret = g_strcmp0 (a_base, b_base); +- if (ret == 0) +- { +- /* /etc wins over /usr */ +- ret = g_strcmp0 (a, b); +- g_assert (ret != 0); +- } +- +- return ret; +-} +- + /* authority->priv->cx must be within a request */ + static void + load_scripts (PolkitBackendJsAuthority *authority) +@@ -299,7 +204,7 @@ load_scripts (PolkitBackendJsAuthority *authority) + } + } + +- files = g_list_sort (files, (GCompareFunc) rules_file_name_cmp); ++ files = g_list_sort (files, (GCompareFunc) polkit_backend_common_rules_file_name_cmp); + + for (l = files; l != NULL; l = l->next) + { +@@ -365,8 +270,8 @@ load_scripts (PolkitBackendJsAuthority *authority) + g_list_free_full (files, g_free); + } + +-static void +-reload_scripts (PolkitBackendJsAuthority *authority) ++void ++polkit_backend_common_reload_scripts (PolkitBackendJsAuthority *authority) + { + JS::RootedValueArray<1> args(authority->priv->cx); + JS::RootedValue rval(authority->priv->cx); +@@ -395,42 +300,6 @@ reload_scripts (PolkitBackendJsAuthority *authority) + g_signal_emit_by_name (authority, "changed"); + } + +-static void +-on_dir_monitor_changed (GFileMonitor *monitor, +- GFile *file, +- GFile *other_file, +- GFileMonitorEvent event_type, +- gpointer user_data) +-{ +- PolkitBackendJsAuthority *authority = POLKIT_BACKEND_JS_AUTHORITY (user_data); +- +- /* TODO: maybe rate-limit so storms of events are collapsed into one with a 500ms resolution? +- * Because when editing a file with emacs we get 4-8 events.. +- */ +- +- if (file != NULL) +- { +- gchar *name; +- +- name = g_file_get_basename (file); +- +- /* g_print ("event_type=%d file=%p name=%s\n", event_type, file, name); */ +- if (!g_str_has_prefix (name, ".") && +- !g_str_has_prefix (name, "#") && +- g_str_has_suffix (name, ".rules") && +- (event_type == G_FILE_MONITOR_EVENT_CREATED || +- event_type == G_FILE_MONITOR_EVENT_DELETED || +- event_type == G_FILE_MONITOR_EVENT_CHANGES_DONE_HINT)) +- { +- polkit_backend_authority_log (POLKIT_BACKEND_AUTHORITY (authority), +- "Reloading rules"); +- reload_scripts (authority); +- } +- g_free (name); +- } +-} +- +- + static void + setup_file_monitors (PolkitBackendJsAuthority *authority) + { +@@ -462,7 +331,7 @@ setup_file_monitors (PolkitBackendJsAuthority *authority) + { + g_signal_connect (monitor, + "changed", +- G_CALLBACK (on_dir_monitor_changed), ++ G_CALLBACK (polkit_backend_common_on_dir_monitor_changed), + authority); + g_ptr_array_add (p, monitor); + } +@@ -471,8 +340,8 @@ setup_file_monitors (PolkitBackendJsAuthority *authority) + authority->priv->dir_monitors = (GFileMonitor**) g_ptr_array_free (p, FALSE); + } + +-static void +-polkit_backend_js_authority_constructed (GObject *object) ++void ++polkit_backend_common_js_authority_constructed (GObject *object) + { + PolkitBackendJsAuthority *authority = POLKIT_BACKEND_JS_AUTHORITY (object); + +@@ -561,8 +430,8 @@ polkit_backend_js_authority_constructed (GObject *object) + g_assert_not_reached (); + } + +-static void +-polkit_backend_js_authority_finalize (GObject *object) ++void ++polkit_backend_common_js_authority_finalize (GObject *object) + { + PolkitBackendJsAuthority *authority = POLKIT_BACKEND_JS_AUTHORITY (object); + guint n; +@@ -577,7 +446,7 @@ polkit_backend_js_authority_finalize (GObject *object) + { + GFileMonitor *monitor = authority->priv->dir_monitors[n]; + g_signal_handlers_disconnect_by_func (monitor, +- (gpointer*)G_CALLBACK (on_dir_monitor_changed), ++ (gpointer*)G_CALLBACK (polkit_backend_common_on_dir_monitor_changed), + authority); + g_object_unref (monitor); + } +@@ -594,11 +463,11 @@ polkit_backend_js_authority_finalize (GObject *object) + G_OBJECT_CLASS (polkit_backend_js_authority_parent_class)->finalize (object); + } + +-static void +-polkit_backend_js_authority_set_property (GObject *object, +- guint property_id, +- const GValue *value, +- GParamSpec *pspec) ++void ++polkit_backend_common_js_authority_set_property (GObject *object, ++ guint property_id, ++ const GValue *value, ++ GParamSpec *pspec) + { + PolkitBackendJsAuthority *authority = POLKIT_BACKEND_JS_AUTHORITY (object); + +@@ -615,57 +484,12 @@ polkit_backend_js_authority_set_property (GObject *object, + } + } + +-static const gchar * +-polkit_backend_js_authority_get_name (PolkitBackendAuthority *authority) +-{ +- return "js"; +-} +- +-static const gchar * +-polkit_backend_js_authority_get_version (PolkitBackendAuthority *authority) +-{ +- return PACKAGE_VERSION; +-} +- +-static PolkitAuthorityFeatures +-polkit_backend_js_authority_get_features (PolkitBackendAuthority *authority) +-{ +- return POLKIT_AUTHORITY_FEATURES_TEMPORARY_AUTHORIZATION; +-} +- + static void + polkit_backend_js_authority_class_init (PolkitBackendJsAuthorityClass *klass) + { +- GObjectClass *gobject_class; +- PolkitBackendAuthorityClass *authority_class; +- PolkitBackendInteractiveAuthorityClass *interactive_authority_class; +- +- +- gobject_class = G_OBJECT_CLASS (klass); +- gobject_class->finalize = polkit_backend_js_authority_finalize; +- gobject_class->set_property = polkit_backend_js_authority_set_property; +- gobject_class->constructed = polkit_backend_js_authority_constructed; +- +- authority_class = POLKIT_BACKEND_AUTHORITY_CLASS (klass); +- authority_class->get_name = polkit_backend_js_authority_get_name; +- authority_class->get_version = polkit_backend_js_authority_get_version; +- authority_class->get_features = polkit_backend_js_authority_get_features; +- +- interactive_authority_class = POLKIT_BACKEND_INTERACTIVE_AUTHORITY_CLASS (klass); +- interactive_authority_class->get_admin_identities = polkit_backend_js_authority_get_admin_auth_identities; +- interactive_authority_class->check_authorization_sync = polkit_backend_js_authority_check_authorization_sync; +- +- g_object_class_install_property (gobject_class, +- PROP_RULES_DIRS, +- g_param_spec_boxed ("rules-dirs", +- NULL, +- NULL, +- G_TYPE_STRV, +- GParamFlags(G_PARAM_CONSTRUCT_ONLY | G_PARAM_WRITABLE))); +- ++ polkit_backend_common_js_authority_class_init_common (klass); + + g_type_class_add_private (klass, sizeof (PolkitBackendJsAuthorityPrivate)); +- + JS_Init (); + } + +@@ -1005,11 +829,14 @@ runaway_killer_setup (PolkitBackendJsAuthority *authority) + { + g_assert (authority->priv->rkt_source == NULL); + +- /* set-up timer for runaway scripts, will be executed in runaway_killer_thread */ ++ /* set-up timer for runaway scripts, will be executed in ++ runaway_killer_thread, that is one, permanent thread running a glib ++ mainloop (rkt_loop) whose context (rkt_context) has a timeout source ++ (rkt_source) */ + g_mutex_lock (&authority->priv->rkt_timeout_pending_mutex); + authority->priv->rkt_timeout_pending = FALSE; + g_mutex_unlock (&authority->priv->rkt_timeout_pending_mutex); +- authority->priv->rkt_source = g_timeout_source_new_seconds (15); ++ authority->priv->rkt_source = g_timeout_source_new_seconds (RUNAWAY_KILLER_TIMEOUT); + g_source_set_callback (authority->priv->rkt_source, rkt_on_timeout, authority, NULL); + g_source_attach (authority->priv->rkt_source, authority->priv->rkt_context); + +@@ -1069,6 +896,9 @@ execute_script_with_runaway_killer (PolkitBackendJsAuthority *authority, + { + bool ret; + ++ // tries to JS_ExecuteScript(), may hang for > RUNAWAY_KILLER_TIMEOUT, ++ // runaway_killer_thread makes sure the call returns, due to exception ++ // injection + runaway_killer_setup (authority); + ret = JS_ExecuteScript (authority->priv->cx, + script, +@@ -1099,15 +929,15 @@ call_js_function_with_runaway_killer (PolkitBackendJsAuthority *authority, + + /* ---------------------------------------------------------------------------------------------------- */ + +-static GList * +-polkit_backend_js_authority_get_admin_auth_identities (PolkitBackendInteractiveAuthority *_authority, +- PolkitSubject *caller, +- PolkitSubject *subject, +- PolkitIdentity *user_for_subject, +- gboolean subject_is_local, +- gboolean subject_is_active, +- const gchar *action_id, +- PolkitDetails *details) ++GList * ++polkit_backend_common_js_authority_get_admin_auth_identities (PolkitBackendInteractiveAuthority *_authority, ++ PolkitSubject *caller, ++ PolkitSubject *subject, ++ PolkitIdentity *user_for_subject, ++ gboolean subject_is_local, ++ gboolean subject_is_active, ++ const gchar *action_id, ++ PolkitDetails *details) + { + PolkitBackendJsAuthority *authority = POLKIT_BACKEND_JS_AUTHORITY (_authority); + GList *ret = NULL; +@@ -1202,16 +1032,16 @@ polkit_backend_js_authority_get_admin_auth_identities (PolkitBackendInteractiveA + + /* ---------------------------------------------------------------------------------------------------- */ + +-static PolkitImplicitAuthorization +-polkit_backend_js_authority_check_authorization_sync (PolkitBackendInteractiveAuthority *_authority, +- PolkitSubject *caller, +- PolkitSubject *subject, +- PolkitIdentity *user_for_subject, +- gboolean subject_is_local, +- gboolean subject_is_active, +- const gchar *action_id, +- PolkitDetails *details, +- PolkitImplicitAuthorization implicit) ++PolkitImplicitAuthorization ++polkit_backend_common_js_authority_check_authorization_sync (PolkitBackendInteractiveAuthority *_authority, ++ PolkitSubject *caller, ++ PolkitSubject *subject, ++ PolkitIdentity *user_for_subject, ++ gboolean subject_is_local, ++ gboolean subject_is_active, ++ const gchar *action_id, ++ PolkitDetails *details, ++ PolkitImplicitAuthorization implicit) + { + PolkitBackendJsAuthority *authority = POLKIT_BACKEND_JS_AUTHORITY (_authority); + PolkitImplicitAuthorization ret = implicit; +@@ -1324,65 +1154,6 @@ js_polkit_log (JSContext *cx, + + /* ---------------------------------------------------------------------------------------------------- */ + +-static const gchar * +-get_signal_name (gint signal_number) +-{ +- switch (signal_number) +- { +-#define _HANDLE_SIG(sig) case sig: return #sig; +- _HANDLE_SIG (SIGHUP); +- _HANDLE_SIG (SIGINT); +- _HANDLE_SIG (SIGQUIT); +- _HANDLE_SIG (SIGILL); +- _HANDLE_SIG (SIGABRT); +- _HANDLE_SIG (SIGFPE); +- _HANDLE_SIG (SIGKILL); +- _HANDLE_SIG (SIGSEGV); +- _HANDLE_SIG (SIGPIPE); +- _HANDLE_SIG (SIGALRM); +- _HANDLE_SIG (SIGTERM); +- _HANDLE_SIG (SIGUSR1); +- _HANDLE_SIG (SIGUSR2); +- _HANDLE_SIG (SIGCHLD); +- _HANDLE_SIG (SIGCONT); +- _HANDLE_SIG (SIGSTOP); +- _HANDLE_SIG (SIGTSTP); +- _HANDLE_SIG (SIGTTIN); +- _HANDLE_SIG (SIGTTOU); +- _HANDLE_SIG (SIGBUS); +-#ifdef SIGPOLL +- _HANDLE_SIG (SIGPOLL); +-#endif +- _HANDLE_SIG (SIGPROF); +- _HANDLE_SIG (SIGSYS); +- _HANDLE_SIG (SIGTRAP); +- _HANDLE_SIG (SIGURG); +- _HANDLE_SIG (SIGVTALRM); +- _HANDLE_SIG (SIGXCPU); +- _HANDLE_SIG (SIGXFSZ); +-#undef _HANDLE_SIG +- default: +- break; +- } +- return "UNKNOWN_SIGNAL"; +-} +- +-typedef struct +-{ +- GMainLoop *loop; +- GAsyncResult *res; +-} SpawnData; +- +-static void +-spawn_cb (GObject *source_object, +- GAsyncResult *res, +- gpointer user_data) +-{ +- SpawnData *data = (SpawnData *)user_data; +- data->res = (GAsyncResult*)g_object_ref (res); +- g_main_loop_quit (data->loop); +-} +- + static bool + js_polkit_spawn (JSContext *cx, + unsigned js_argc, +@@ -1440,21 +1211,21 @@ js_polkit_spawn (JSContext *cx, + g_main_context_push_thread_default (context); + + data.loop = loop; +- utils_spawn ((const gchar *const *) argv, +- 10, /* timeout_seconds */ +- NULL, /* cancellable */ +- spawn_cb, +- &data); ++ polkit_backend_common_spawn ((const gchar *const *) argv, ++ 10, /* timeout_seconds */ ++ NULL, /* cancellable */ ++ polkit_backend_common_spawn_cb, ++ &data); + + g_main_loop_run (loop); + + g_main_context_pop_thread_default (context); + +- if (!utils_spawn_finish (data.res, +- &exit_status, +- &standard_output, +- &standard_error, +- &error)) ++ if (!polkit_backend_common_spawn_finish (data.res, ++ &exit_status, ++ &standard_output, ++ &standard_error, ++ &error)) + { + JS_ReportErrorUTF8 (cx, + "Error spawning helper: %s (%s, %d)", +@@ -1477,7 +1248,7 @@ js_polkit_spawn (JSContext *cx, + { + g_string_append_printf (gstr, + "Helper was signaled with signal %s (%d)", +- get_signal_name (WTERMSIG (exit_status)), ++ polkit_backend_common_get_signal_name (WTERMSIG (exit_status)), + WTERMSIG (exit_status)); + } + g_string_append_printf (gstr, ", stdout=`%s', stderr=`%s'", +@@ -1542,381 +1313,5 @@ js_polkit_user_is_in_netgroup (JSContext *cx, + return ret; + } + +- +- + /* ---------------------------------------------------------------------------------------------------- */ + +-typedef struct +-{ +- GSimpleAsyncResult *simple; /* borrowed reference */ +- GMainContext *main_context; /* may be NULL */ +- +- GCancellable *cancellable; /* may be NULL */ +- gulong cancellable_handler_id; +- +- GPid child_pid; +- gint child_stdout_fd; +- gint child_stderr_fd; +- +- GIOChannel *child_stdout_channel; +- GIOChannel *child_stderr_channel; +- +- GSource *child_watch_source; +- GSource *child_stdout_source; +- GSource *child_stderr_source; +- +- guint timeout_seconds; +- gboolean timed_out; +- GSource *timeout_source; +- +- GString *child_stdout; +- GString *child_stderr; +- +- gint exit_status; +-} UtilsSpawnData; +- +-static void +-utils_child_watch_from_release_cb (GPid pid, +- gint status, +- gpointer user_data) +-{ +-} +- +-static void +-utils_spawn_data_free (UtilsSpawnData *data) +-{ +- if (data->timeout_source != NULL) +- { +- g_source_destroy (data->timeout_source); +- data->timeout_source = NULL; +- } +- +- /* Nuke the child, if necessary */ +- if (data->child_watch_source != NULL) +- { +- g_source_destroy (data->child_watch_source); +- data->child_watch_source = NULL; +- } +- +- if (data->child_pid != 0) +- { +- GSource *source; +- kill (data->child_pid, SIGTERM); +- /* OK, we need to reap for the child ourselves - we don't want +- * to use waitpid() because that might block the calling +- * thread (the child might handle SIGTERM and use several +- * seconds for cleanup/rollback). +- * +- * So we use GChildWatch instead. +- * +- * Avoid taking a references to ourselves. but note that we need +- * to pass the GSource so we can nuke it once handled. +- */ +- source = g_child_watch_source_new (data->child_pid); +- g_source_set_callback (source, +- (GSourceFunc) utils_child_watch_from_release_cb, +- source, +- (GDestroyNotify) g_source_destroy); +- /* attach source to the global default main context */ +- g_source_attach (source, NULL); +- g_source_unref (source); +- data->child_pid = 0; +- } +- +- if (data->child_stdout != NULL) +- { +- g_string_free (data->child_stdout, TRUE); +- data->child_stdout = NULL; +- } +- +- if (data->child_stderr != NULL) +- { +- g_string_free (data->child_stderr, TRUE); +- data->child_stderr = NULL; +- } +- +- if (data->child_stdout_channel != NULL) +- { +- g_io_channel_unref (data->child_stdout_channel); +- data->child_stdout_channel = NULL; +- } +- if (data->child_stderr_channel != NULL) +- { +- g_io_channel_unref (data->child_stderr_channel); +- data->child_stderr_channel = NULL; +- } +- +- if (data->child_stdout_source != NULL) +- { +- g_source_destroy (data->child_stdout_source); +- data->child_stdout_source = NULL; +- } +- if (data->child_stderr_source != NULL) +- { +- g_source_destroy (data->child_stderr_source); +- data->child_stderr_source = NULL; +- } +- +- if (data->child_stdout_fd != -1) +- { +- g_warn_if_fail (close (data->child_stdout_fd) == 0); +- data->child_stdout_fd = -1; +- } +- if (data->child_stderr_fd != -1) +- { +- g_warn_if_fail (close (data->child_stderr_fd) == 0); +- data->child_stderr_fd = -1; +- } +- +- if (data->cancellable_handler_id > 0) +- { +- g_cancellable_disconnect (data->cancellable, data->cancellable_handler_id); +- data->cancellable_handler_id = 0; +- } +- +- if (data->main_context != NULL) +- g_main_context_unref (data->main_context); +- +- if (data->cancellable != NULL) +- g_object_unref (data->cancellable); +- +- g_slice_free (UtilsSpawnData, data); +-} +- +-/* called in the thread where @cancellable was cancelled */ +-static void +-utils_on_cancelled (GCancellable *cancellable, +- gpointer user_data) +-{ +- UtilsSpawnData *data = (UtilsSpawnData *)user_data; +- GError *error; +- +- error = NULL; +- g_warn_if_fail (g_cancellable_set_error_if_cancelled (cancellable, &error)); +- g_simple_async_result_take_error (data->simple, error); +- g_simple_async_result_complete_in_idle (data->simple); +- g_object_unref (data->simple); +-} +- +-static gboolean +-utils_read_child_stderr (GIOChannel *channel, +- GIOCondition condition, +- gpointer user_data) +-{ +- UtilsSpawnData *data = (UtilsSpawnData *)user_data; +- gchar buf[1024]; +- gsize bytes_read; +- +- g_io_channel_read_chars (channel, buf, sizeof buf, &bytes_read, NULL); +- g_string_append_len (data->child_stderr, buf, bytes_read); +- return TRUE; +-} +- +-static gboolean +-utils_read_child_stdout (GIOChannel *channel, +- GIOCondition condition, +- gpointer user_data) +-{ +- UtilsSpawnData *data = (UtilsSpawnData *)user_data; +- gchar buf[1024]; +- gsize bytes_read; +- +- g_io_channel_read_chars (channel, buf, sizeof buf, &bytes_read, NULL); +- g_string_append_len (data->child_stdout, buf, bytes_read); +- return TRUE; +-} +- +-static void +-utils_child_watch_cb (GPid pid, +- gint status, +- gpointer user_data) +-{ +- UtilsSpawnData *data = (UtilsSpawnData *)user_data; +- gchar *buf; +- gsize buf_size; +- +- if (g_io_channel_read_to_end (data->child_stdout_channel, &buf, &buf_size, NULL) == G_IO_STATUS_NORMAL) +- { +- g_string_append_len (data->child_stdout, buf, buf_size); +- g_free (buf); +- } +- if (g_io_channel_read_to_end (data->child_stderr_channel, &buf, &buf_size, NULL) == G_IO_STATUS_NORMAL) +- { +- g_string_append_len (data->child_stderr, buf, buf_size); +- g_free (buf); +- } +- +- data->exit_status = status; +- +- /* ok, child watch is history, make sure we don't free it in spawn_data_free() */ +- data->child_pid = 0; +- data->child_watch_source = NULL; +- +- /* we're done */ +- g_simple_async_result_complete_in_idle (data->simple); +- g_object_unref (data->simple); +-} +- +-static gboolean +-utils_timeout_cb (gpointer user_data) +-{ +- UtilsSpawnData *data = (UtilsSpawnData *)user_data; +- +- data->timed_out = TRUE; +- +- /* ok, timeout is history, make sure we don't free it in spawn_data_free() */ +- data->timeout_source = NULL; +- +- /* we're done */ +- g_simple_async_result_complete_in_idle (data->simple); +- g_object_unref (data->simple); +- +- return FALSE; /* remove source */ +-} +- +-static void +-utils_spawn (const gchar *const *argv, +- guint timeout_seconds, +- GCancellable *cancellable, +- GAsyncReadyCallback callback, +- gpointer user_data) +-{ +- UtilsSpawnData *data; +- GError *error; +- +- data = g_slice_new0 (UtilsSpawnData); +- data->timeout_seconds = timeout_seconds; +- data->simple = g_simple_async_result_new (NULL, +- callback, +- user_data, +- (gpointer*)utils_spawn); +- data->main_context = g_main_context_get_thread_default (); +- if (data->main_context != NULL) +- g_main_context_ref (data->main_context); +- +- data->cancellable = cancellable != NULL ? (GCancellable*)g_object_ref (cancellable) : NULL; +- +- data->child_stdout = g_string_new (NULL); +- data->child_stderr = g_string_new (NULL); +- data->child_stdout_fd = -1; +- data->child_stderr_fd = -1; +- +- /* the life-cycle of UtilsSpawnData is tied to its GSimpleAsyncResult */ +- g_simple_async_result_set_op_res_gpointer (data->simple, data, (GDestroyNotify) utils_spawn_data_free); +- +- error = NULL; +- if (data->cancellable != NULL) +- { +- /* could already be cancelled */ +- error = NULL; +- if (g_cancellable_set_error_if_cancelled (data->cancellable, &error)) +- { +- g_simple_async_result_take_error (data->simple, error); +- g_simple_async_result_complete_in_idle (data->simple); +- g_object_unref (data->simple); +- goto out; +- } +- +- data->cancellable_handler_id = g_cancellable_connect (data->cancellable, +- G_CALLBACK (utils_on_cancelled), +- data, +- NULL); +- } +- +- error = NULL; +- if (!g_spawn_async_with_pipes (NULL, /* working directory */ +- (gchar **) argv, +- NULL, /* envp */ +- GSpawnFlags(G_SPAWN_SEARCH_PATH | G_SPAWN_DO_NOT_REAP_CHILD), +- NULL, /* child_setup */ +- NULL, /* child_setup's user_data */ +- &(data->child_pid), +- NULL, /* gint *stdin_fd */ +- &(data->child_stdout_fd), +- &(data->child_stderr_fd), +- &error)) +- { +- g_prefix_error (&error, "Error spawning: "); +- g_simple_async_result_take_error (data->simple, error); +- g_simple_async_result_complete_in_idle (data->simple); +- g_object_unref (data->simple); +- goto out; +- } +- +- if (timeout_seconds > 0) +- { +- data->timeout_source = g_timeout_source_new_seconds (timeout_seconds); +- g_source_set_priority (data->timeout_source, G_PRIORITY_DEFAULT); +- g_source_set_callback (data->timeout_source, utils_timeout_cb, data, NULL); +- g_source_attach (data->timeout_source, data->main_context); +- g_source_unref (data->timeout_source); +- } +- +- data->child_watch_source = g_child_watch_source_new (data->child_pid); +- g_source_set_callback (data->child_watch_source, (GSourceFunc) utils_child_watch_cb, data, NULL); +- g_source_attach (data->child_watch_source, data->main_context); +- g_source_unref (data->child_watch_source); +- +- data->child_stdout_channel = g_io_channel_unix_new (data->child_stdout_fd); +- g_io_channel_set_flags (data->child_stdout_channel, G_IO_FLAG_NONBLOCK, NULL); +- data->child_stdout_source = g_io_create_watch (data->child_stdout_channel, G_IO_IN); +- g_source_set_callback (data->child_stdout_source, (GSourceFunc) utils_read_child_stdout, data, NULL); +- g_source_attach (data->child_stdout_source, data->main_context); +- g_source_unref (data->child_stdout_source); +- +- data->child_stderr_channel = g_io_channel_unix_new (data->child_stderr_fd); +- g_io_channel_set_flags (data->child_stderr_channel, G_IO_FLAG_NONBLOCK, NULL); +- data->child_stderr_source = g_io_create_watch (data->child_stderr_channel, G_IO_IN); +- g_source_set_callback (data->child_stderr_source, (GSourceFunc) utils_read_child_stderr, data, NULL); +- g_source_attach (data->child_stderr_source, data->main_context); +- g_source_unref (data->child_stderr_source); +- +- out: +- ; +-} +- +-gboolean +-utils_spawn_finish (GAsyncResult *res, +- gint *out_exit_status, +- gchar **out_standard_output, +- gchar **out_standard_error, +- GError **error) +-{ +- GSimpleAsyncResult *simple = G_SIMPLE_ASYNC_RESULT (res); +- UtilsSpawnData *data; +- gboolean ret = FALSE; +- +- g_return_val_if_fail (G_IS_ASYNC_RESULT (res), FALSE); +- g_return_val_if_fail (error == NULL || *error == NULL, FALSE); +- +- g_warn_if_fail (g_simple_async_result_get_source_tag (simple) == utils_spawn); +- +- if (g_simple_async_result_propagate_error (simple, error)) +- goto out; +- +- data = (UtilsSpawnData*)g_simple_async_result_get_op_res_gpointer (simple); +- +- if (data->timed_out) +- { +- g_set_error (error, +- G_IO_ERROR, +- G_IO_ERROR_TIMED_OUT, +- "Timed out after %d seconds", +- data->timeout_seconds); +- goto out; +- } +- +- if (out_exit_status != NULL) +- *out_exit_status = data->exit_status; +- +- if (out_standard_output != NULL) +- *out_standard_output = g_strdup (data->child_stdout->str); +- +- if (out_standard_error != NULL) +- *out_standard_error = g_strdup (data->child_stderr->str); +- +- ret = TRUE; +- +- out: +- return ret; +-} +diff --git a/test/data/etc/polkit-1/rules.d/10-testing.rules b/test/data/etc/polkit-1/rules.d/10-testing.rules +index 98bf062..e346b5d 100644 +--- a/test/data/etc/polkit-1/rules.d/10-testing.rules ++++ b/test/data/etc/polkit-1/rules.d/10-testing.rules +@@ -189,8 +189,10 @@ polkit.addRule(function(action, subject) { + ; + } catch (error) { + if (error == "Terminating runaway script") +- return polkit.Result.YES; +- return polkit.Result.NO; ++ // Inverted logic to accomodate Duktape's model as well, which ++ // will always fail with negation, on timeouts ++ return polkit.Result.NO; ++ return polkit.Result.YES; + } + } + }); +diff --git a/test/polkitbackend/test-polkitbackendjsauthority.c b/test/polkitbackend/test-polkitbackendjsauthority.c +index f97e0e0..2103b17 100644 +--- a/test/polkitbackend/test-polkitbackendjsauthority.c ++++ b/test/polkitbackend/test-polkitbackendjsauthority.c +@@ -328,7 +328,7 @@ static const RulesTestCase rules_test_cases[] = { + "net.company.run_away_script", + "unix-user:root", + NULL, +- POLKIT_IMPLICIT_AUTHORIZATION_AUTHORIZED, ++ POLKIT_IMPLICIT_AUTHORIZATION_NOT_AUTHORIZED, + }, + + { +-- +2.20.1 + diff --git a/meta-gnome/recipes-freedesktop/polkit/polkit/0003-make-netgroup-support-optional.patch b/meta-gnome/recipes-freedesktop/polkit/polkit/0003-make-netgroup-support-optional.patch index fd72513..1a268f2 100644 --- a/meta-gnome/recipes-freedesktop/polkit/polkit/0003-make-netgroup-support-optional.patch +++ b/meta-gnome/recipes-freedesktop/polkit/polkit/0003-make-netgroup-support-optional.patch @@ -1,4 +1,4 @@ -From 21aa2747e8f0048759aab184b07dd6389666d5e6 Mon Sep 17 00:00:00 2001 +From 0c1debb380fee7f5b2bc62406e45856dc9c9e1a1 Mon Sep 17 00:00:00 2001 From: Khem Raj Date: Wed, 22 May 2019 13:18:55 -0700 Subject: [PATCH] make netgroup support optional @@ -17,20 +17,23 @@ Fixes bug 50145. Closes polkit/polkit#14. Signed-off-by: A. Wilcox Signed-off-by: Khem Raj + --- configure.ac | 2 +- src/polkit/polkitidentity.c | 16 ++++++++++++++++ src/polkit/polkitunixnetgroup.c | 3 +++ .../polkitbackendinteractiveauthority.c | 14 ++++++++------ - src/polkitbackend/polkitbackendjsauthority.cpp | 2 ++ + src/polkitbackend/polkitbackendjsauthority.cpp | 3 +++ test/polkit/polkitidentitytest.c | 9 ++++++++- test/polkit/polkitunixnetgrouptest.c | 3 +++ .../test-polkitbackendjsauthority.c | 2 ++ - 8 files changed, 43 insertions(+), 8 deletions(-) + 8 files changed, 44 insertions(+), 8 deletions(-) +diff --git a/configure.ac b/configure.ac +index b625743..d807086 100644 --- a/configure.ac +++ b/configure.ac -@@ -99,7 +99,7 @@ AC_CHECK_LIB(expat,XML_ParserCreate,[EXP +@@ -100,7 +100,7 @@ AC_CHECK_LIB(expat,XML_ParserCreate,[EXPAT_LIBS="-lexpat"], [AC_MSG_ERROR([Can't find expat library. Please install expat.])]) AC_SUBST(EXPAT_LIBS) @@ -39,9 +42,11 @@ Signed-off-by: Khem Raj if test "x$GCC" = "xyes"; then LDFLAGS="-Wl,--as-needed $LDFLAGS" +diff --git a/src/polkit/polkitidentity.c b/src/polkit/polkitidentity.c +index 3aa1f7f..10e9c17 100644 --- a/src/polkit/polkitidentity.c +++ b/src/polkit/polkitidentity.c -@@ -182,7 +182,15 @@ polkit_identity_from_string (const gcha +@@ -182,7 +182,15 @@ polkit_identity_from_string (const gchar *str, } else if (g_str_has_prefix (str, "unix-netgroup:")) { @@ -57,7 +62,7 @@ Signed-off-by: Khem Raj } if (identity == NULL && (error != NULL && *error == NULL)) -@@ -344,6 +352,13 @@ polkit_identity_new_for_gvariant (GVaria +@@ -344,6 +352,13 @@ polkit_identity_new_for_gvariant (GVariant *variant, GVariant *v; const char *name; @@ -71,7 +76,7 @@ Signed-off-by: Khem Raj v = lookup_asv (details_gvariant, "name", G_VARIANT_TYPE_STRING, error); if (v == NULL) { -@@ -353,6 +368,7 @@ polkit_identity_new_for_gvariant (GVaria +@@ -353,6 +368,7 @@ polkit_identity_new_for_gvariant (GVariant *variant, name = g_variant_get_string (v, NULL); ret = polkit_unix_netgroup_new (name); g_variant_unref (v); @@ -79,9 +84,11 @@ Signed-off-by: Khem Raj } else { +diff --git a/src/polkit/polkitunixnetgroup.c b/src/polkit/polkitunixnetgroup.c +index 8a2b369..83f8d4a 100644 --- a/src/polkit/polkitunixnetgroup.c +++ b/src/polkit/polkitunixnetgroup.c -@@ -194,6 +194,9 @@ polkit_unix_netgroup_set_name (PolkitUni +@@ -194,6 +194,9 @@ polkit_unix_netgroup_set_name (PolkitUnixNetgroup *group, PolkitIdentity * polkit_unix_netgroup_new (const gchar *name) { @@ -91,9 +98,11 @@ Signed-off-by: Khem Raj g_return_val_if_fail (name != NULL, NULL); return POLKIT_IDENTITY (g_object_new (POLKIT_TYPE_UNIX_NETGROUP, "name", name, +diff --git a/src/polkitbackend/polkitbackendinteractiveauthority.c b/src/polkitbackend/polkitbackendinteractiveauthority.c +index 056d9a8..36c2f3d 100644 --- a/src/polkitbackend/polkitbackendinteractiveauthority.c +++ b/src/polkitbackend/polkitbackendinteractiveauthority.c -@@ -2233,25 +2233,26 @@ get_users_in_net_group (PolkitIdentity +@@ -2233,25 +2233,26 @@ get_users_in_net_group (PolkitIdentity *group, GList *ret; ret = NULL; @@ -126,7 +135,7 @@ Signed-off-by: Khem Raj PolkitIdentity *user; GError *error = NULL; -@@ -2282,6 +2283,7 @@ get_users_in_net_group (PolkitIdentity +@@ -2282,6 +2283,7 @@ get_users_in_net_group (PolkitIdentity *group, out: endnetgrent (); @@ -134,9 +143,11 @@ Signed-off-by: Khem Raj return ret; } +diff --git a/src/polkitbackend/polkitbackendjsauthority.cpp b/src/polkitbackend/polkitbackendjsauthority.cpp +index ca17108..41d8d5c 100644 --- a/src/polkitbackend/polkitbackendjsauthority.cpp +++ b/src/polkitbackend/polkitbackendjsauthority.cpp -@@ -1502,6 +1502,7 @@ js_polkit_user_is_in_netgroup (JSContext +@@ -1520,6 +1520,7 @@ js_polkit_user_is_in_netgroup (JSContext *cx, JS::CallArgs args = JS::CallArgsFromVp (argc, vp); @@ -144,14 +155,17 @@ Signed-off-by: Khem Raj JS::RootedString usrstr (authority->priv->cx); usrstr = args[0].toString(); user = JS_EncodeStringToUTF8 (cx, usrstr); -@@ -1519,6 +1520,7 @@ js_polkit_user_is_in_netgroup (JSContext +@@ -1535,6 +1536,8 @@ js_polkit_user_is_in_netgroup (JSContext *cx, + is_in_netgroup = true; + } - JS_free (cx, netgroup); - JS_free (cx, user); +#endif - ++ ret = true; + args.rval ().setBoolean (is_in_netgroup); +diff --git a/test/polkit/polkitidentitytest.c b/test/polkit/polkitidentitytest.c +index e91967b..e829aaa 100644 --- a/test/polkit/polkitidentitytest.c +++ b/test/polkit/polkitidentitytest.c @@ -19,6 +19,7 @@ @@ -162,7 +176,7 @@ Signed-off-by: Khem Raj #include "glib.h" #include #include -@@ -145,11 +146,15 @@ struct ComparisonTestData comparison_tes +@@ -145,11 +146,15 @@ struct ComparisonTestData comparison_test_data [] = { {"unix-group:root", "unix-group:jane", FALSE}, {"unix-group:jane", "unix-group:jane", TRUE}, @@ -193,6 +207,8 @@ Signed-off-by: Khem Raj add_comparison_tests (); +diff --git a/test/polkit/polkitunixnetgrouptest.c b/test/polkit/polkitunixnetgrouptest.c +index 3701ba1..e3352eb 100644 --- a/test/polkit/polkitunixnetgrouptest.c +++ b/test/polkit/polkitunixnetgrouptest.c @@ -19,6 +19,7 @@ @@ -213,6 +229,8 @@ Signed-off-by: Khem Raj +#endif return g_test_run (); } +diff --git a/test/polkitbackend/test-polkitbackendjsauthority.c b/test/polkitbackend/test-polkitbackendjsauthority.c +index f97e0e0..fc52149 100644 --- a/test/polkitbackend/test-polkitbackendjsauthority.c +++ b/test/polkitbackend/test-polkitbackendjsauthority.c @@ -137,12 +137,14 @@ test_get_admin_identities (void) diff --git a/meta-gnome/recipes-freedesktop/polkit/polkit_0.118.bb b/meta-gnome/recipes-freedesktop/polkit/polkit_0.119.bb similarity index 71% rename from meta-gnome/recipes-freedesktop/polkit/polkit_0.118.bb rename to meta-gnome/recipes-freedesktop/polkit/polkit_0.119.bb index 4c9124c..66bbf73 100644 --- a/meta-gnome/recipes-freedesktop/polkit/polkit_0.118.bb +++ b/meta-gnome/recipes-freedesktop/polkit/polkit_0.119.bb @@ -1,11 +1,11 @@ SUMMARY = "PolicyKit Authorization Framework" DESCRIPTION = "The polkit package is an application-level toolkit for defining and handling the policy that allows unprivileged processes to speak to privileged processes." HOMEPAGE = "http://www.freedesktop.org/wiki/Software/polkit" -LICENSE = "LGPLv2+" +LICENSE = "LGPL-2.0-or-later" LIC_FILES_CHKSUM = "file://COPYING;md5=155db86cdbafa7532b41f390409283eb \ file://src/polkit/polkit.h;beginline=1;endline=20;md5=0a8630b0133176d0504c87a0ded39db4" -DEPENDS = "expat glib-2.0 intltool-native mozjs78" +DEPENDS = "expat glib-2.0 intltool-native duktape" inherit autotools gtk-doc pkgconfig useradd systemd gobject-introspection features_check @@ -24,27 +24,30 @@ PACKAGECONFIG[consolekit] = ",,,consolekit" PAM_SRC_URI = "file://polkit-1_pam.patch" SRC_URI = "http://www.freedesktop.org/software/polkit/releases/polkit-${PV}.tar.gz \ ${@bb.utils.contains('DISTRO_FEATURES', 'pam', '${PAM_SRC_URI}', '', d)} \ + file://0003-make-netgroup-support-optional.patch \ + file://0001-pkexec-local-privilege-escalation-CVE-2021-4034.patch \ + file://0002-CVE-2021-4115-GHSL-2021-077-fix.patch \ + file://0003-Added-support-for-duktape-as-JS-engine.patch \ " -SRC_URI[sha256sum] = "6d54e984e7072339f0d3147179e16e34e5fe0705158f259a765d772dcf78956b" -SRC_URI[md5] = "ae3f2a742740069922589ad20ffd54d2" - +SRC_URI[sha256sum] = "c8579fdb86e94295404211285fee0722ad04893f0213e571bd75c00972fd1f5c" EXTRA_OECONF = "--with-os-type=moblin \ --disable-man-pages \ --disable-libelogind \ - --enable-libsystemd-login \ + --with-duktape \ " -do_configure_prepend() { - export LIBJS_CFLAGS="-include ${STAGING_INCDIR}/mozjs-78/js/RequiredDefines.h -isystem ${STAGING_INCDIR}/mozjs-78" +do_configure:prepend () { + rm -f ${S}/buildutil/lt*.m4 ${S}/buildutil/libtool.m4 } -do_compile_prepend () { + +do_compile:prepend () { export GIR_EXTRA_LIBS_PATH="${B}/src/polkit/.libs" } PACKAGES =+ "${PN}-examples" -FILES_${PN}_append = " \ +FILES:${PN}:append = " \ ${libdir}/${BPN}-1 \ ${nonarch_libdir}/${BPN}-1 \ ${datadir}/dbus-1 \ @@ -52,10 +55,10 @@ FILES_${PN}_append = " \ ${datadir}/gettext \ " -FILES_${PN}-examples = "${bindir}/*example*" +FILES:${PN}-examples = "${bindir}/*example*" USERADD_PACKAGES = "${PN}" -USERADD_PARAM_${PN} = "--system --no-create-home --user-group --home-dir ${sysconfdir}/${BPN}-1 polkitd" +USERADD_PARAM:${PN} = "--system --no-create-home --user-group --home-dir ${sysconfdir}/${BPN}-1 polkitd" -SYSTEMD_SERVICE_${PN} = "${BPN}.service" +SYSTEMD_SERVICE:${PN} = "${BPN}.service" SYSTEMD_AUTO_ENABLE = "disable" diff --git a/meta-gnome/recipes-gnome/adwaita-icon-theme/adwaita-icon-theme/0001-Don-t-use-AC_CANONICAL_HOST.patch b/meta-gnome/recipes-gnome/adwaita-icon-theme/adwaita-icon-theme/0001-Don-t-use-AC_CANONICAL_HOST.patch new file mode 100644 index 0000000..5afba3c --- /dev/null +++ b/meta-gnome/recipes-gnome/adwaita-icon-theme/adwaita-icon-theme/0001-Don-t-use-AC_CANONICAL_HOST.patch @@ -0,0 +1,27 @@ +From 63d97fefdbc90f5c68f67bdc30844776d9a1b720 Mon Sep 17 00:00:00 2001 +From: Jussi Kukkonen +Date: Tue, 30 May 2017 14:55:49 +0300 +Subject: [PATCH] Don't use AC_CANONICAL_HOST + +This won't work when building allarch (and is only used to find out if +target is windows). + +Upstream-Status: Inappropriate [embedded specific] +Signed-off-by: Jussi Kukkonen + +--- + configure.ac | 1 - + 1 file changed, 1 deletion(-) + +diff --git a/configure.ac b/configure.ac +index f2659a5..1e8b016 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -3,7 +3,6 @@ AC_PREREQ(2.53) + + AC_INIT([adwaita-icon-theme], [41.0], + [http://bugzilla.gnome.org/enter_bug.cgi?product=adwaita-icon-theme]) +-AC_CANONICAL_HOST + AC_CONFIG_MACRO_DIR([m4]) + AC_CONFIG_SRCDIR([index.theme.in]) + diff --git a/meta-gnome/recipes-gnome/adwaita-icon-theme/adwaita-icon-theme/0001-Run-installation-commands-as-shell-jobs.patch b/meta-gnome/recipes-gnome/adwaita-icon-theme/adwaita-icon-theme/0001-Run-installation-commands-as-shell-jobs.patch new file mode 100644 index 0000000..a1d39cf --- /dev/null +++ b/meta-gnome/recipes-gnome/adwaita-icon-theme/adwaita-icon-theme/0001-Run-installation-commands-as-shell-jobs.patch @@ -0,0 +1,84 @@ +From 79da031e9811f3eef34b14cce419be93fea34319 Mon Sep 17 00:00:00 2001 +From: Alexander Kanavin +Date: Tue, 13 Jun 2017 18:10:06 +0300 +Subject: [PATCH] Run installation commands as shell jobs + +This greatly speeds up installation time on multi-core systems. + +Upstream-Status: Submitted [https://gitlab.gnome.org/GNOME/adwaita-icon-theme/-/merge_requests/39] +Signed-off-by: Alexander Kanavin + +--- + src/fullcolor/Makefile.am | 5 +++-- + src/spinner/Makefile.am | 7 ++++--- + src/symbolic/Makefile.am | 11 ++++++----- + 3 files changed, 13 insertions(+), 10 deletions(-) + +diff --git a/src/fullcolor/Makefile.am b/src/fullcolor/Makefile.am +index d73529b..b7d0808 100644 +--- a/src/fullcolor/Makefile.am ++++ b/src/fullcolor/Makefile.am +@@ -9,9 +9,10 @@ install-data-local: + for file in `cd $(top_srcdir)/$(SVGOUTDIR)/$$size && find . -name "*.png"`; do \ + context="`dirname $$file`"; \ + $(mkdir_p) $(DESTDIR)$(themedir)/$$size/$$context; \ +- $(install_sh_DATA) $(top_srcdir)/$(SVGOUTDIR)/$$size/$$file $(DESTDIR)$(themedir)/$$size/$$file; \ ++ $(install_sh_DATA) $(top_srcdir)/$(SVGOUTDIR)/$$size/$$file $(DESTDIR)$(themedir)/$$size/$$file & \ + done; \ +- done; ++ done; \ ++ wait + + ## FIXME we should add a way to remove links generated by icon mapping + uninstall-local: +diff --git a/src/spinner/Makefile.am b/src/spinner/Makefile.am +index c14caf6..322dc0d 100644 +--- a/src/spinner/Makefile.am ++++ b/src/spinner/Makefile.am +@@ -24,13 +24,14 @@ install-data-local: + for file in `cd $(top_srcdir)/$(SVGOUTDIR)/$$size; find . -name "*.png"`; do \ + context="`dirname $$file`"; \ + $(mkdir_p) $(DESTDIR)$(themedir)/$$size/$$context; \ +- $(install_sh_DATA) $(top_srcdir)/$(SVGOUTDIR)/$$size/$$file $(DESTDIR)$(themedir)/$$size/$$file; \ ++ $(install_sh_DATA) $(top_srcdir)/$(SVGOUTDIR)/$$size/$$file $(DESTDIR)$(themedir)/$$size/$$file & \ + done; \ + for file in `cd $(top_srcdir)/$(SVGOUTDIR)/scalable-up-to-32; find . -name "*.svg"`; do \ + context="`dirname $$file`"; \ + $(mkdir_p) $(DESTDIR)$(themedir)/scalable-up-to-32/$$context; \ +- $(install_sh_DATA) $(top_srcdir)/$(SVGOUTDIR)/scalable-up-to-32/$$file $(DESTDIR)$(themedir)/scalable-up-to-32/$$file; \ +- done ++ $(install_sh_DATA) $(top_srcdir)/$(SVGOUTDIR)/scalable-up-to-32/$$file $(DESTDIR)$(themedir)/scalable-up-to-32/$$file & \ ++ done; \ ++ wait + + uninstall-local: + for file in `cd $(top_srcdir)/$(SVGOUTDIR)/scalable-up-to-32; find . -name "*.svg"`; do \ +diff --git a/src/symbolic/Makefile.am b/src/symbolic/Makefile.am +index 957c0ee..e1f8818 100644 +--- a/src/symbolic/Makefile.am ++++ b/src/symbolic/Makefile.am +@@ -34,18 +34,19 @@ install-data-local: + for file in `cd $(top_srcdir)/$(SVGOUTDIR)/$$size; find . -name "*.png"`; do \ + context="`dirname $$file`"; \ + $(mkdir_p) $(DESTDIR)$(themedir)/$$size/$$context; \ +- $(install_sh_DATA) $(top_srcdir)/$(SVGOUTDIR)/$$size/$$file $(DESTDIR)$(themedir)/$$size/$$file; \ ++ $(install_sh_DATA) $(top_srcdir)/$(SVGOUTDIR)/$$size/$$file $(DESTDIR)$(themedir)/$$size/$$file & \ + done; \ +- done ++ done; \ + for file in `cd $(top_srcdir)/$(SVGOUTDIR)/scalable; find . -name "*.svg"`; do \ + context="`dirname $$file`"; \ + $(mkdir_p) $(DESTDIR)$(themedir)/scalable/$$context; \ +- $(install_sh_DATA) $(top_srcdir)/$(SVGOUTDIR)/scalable/$$file $(DESTDIR)$(themedir)/scalable/$$file; \ ++ $(install_sh_DATA) $(top_srcdir)/$(SVGOUTDIR)/scalable/$$file $(DESTDIR)$(themedir)/scalable/$$file & \ + for size in $(symbolic_encode_sizes); do \ + $(mkdir_p) $(DESTDIR)$(themedir)/$$size/$$context; \ +- $(GTK_ENCODE_SYMBOLIC_SVG) $(top_srcdir)/$(SVGOUTDIR)/scalable/$$file $$size -o $(DESTDIR)$(themedir)/$$size/$$context; \ ++ $(GTK_ENCODE_SYMBOLIC_SVG) $(top_srcdir)/$(SVGOUTDIR)/scalable/$$file $$size -o $(DESTDIR)$(themedir)/$$size/$$context & \ + done \ +- done ++ done; \ ++ wait + + uninstall-local: + for file in `cd $(top_srcdir)/$(SVGOUTDIR)/scalable; find . -name "*.svg"`; do \ diff --git a/meta-gnome/recipes-gnome/adwaita-icon-theme/adwaita-icon-theme_42.0.bb b/meta-gnome/recipes-gnome/adwaita-icon-theme/adwaita-icon-theme_42.0.bb new file mode 100644 index 0000000..ba57fb7 --- /dev/null +++ b/meta-gnome/recipes-gnome/adwaita-icon-theme/adwaita-icon-theme_42.0.bb @@ -0,0 +1,42 @@ +SUMMARY = "GTK+ icon theme" +DESCRIPTION = "The Adwaita icon theme is the default icon theme of the GNOME desktop \ +This package package contains an icon theme for Gtk+ 3 applications." +HOMEPAGE = "https://gitlab.gnome.org/GNOME/adwaita-icon-theme" +BUGTRACKER = "https://gitlab.gnome.org/GNOME/adwaita-icon-theme/issues" +SECTION = "x11/gnome" + +LICENSE = "LGPL-3.0-only | CC-BY-SA-3.0" +LIC_FILES_CHKSUM = "file://COPYING;md5=c84cac88e46fc07647ea07e6c24eeb7c \ + file://COPYING_CCBYSA3;md5=96143d33de3a79321b1006c4e8ed07e7 \ + file://COPYING_LGPL;md5=e6a600fd5e1d9cbde2d983680233ad02" + +inherit allarch autotools pkgconfig gettext gtk-icon-cache gnomebase + +SRC_URI += " \ + file://0001-Don-t-use-AC_CANONICAL_HOST.patch \ + " + +SRC_URI[archive.sha256sum] = "5e85b5adc8dee666900fcaf271ba717f7dcb9d0a03d96dae08f9cbd27e18b1e0" + +DEPENDS += "librsvg-native" + +PACKAGES = "${PN}-cursors ${PN}-symbolic-hires ${PN}-symbolic ${PN}-hires ${PN}" + +RREPLACES:${PN} = "gnome-icon-theme" +RCONFLICTS:${PN} = "gnome-icon-theme" +RPROVIDES:${PN} = "gnome-icon-theme" + +FILES:${PN}-cursors = "${prefix}/share/icons/Adwaita/cursors/" +FILES:${PN}-symbolic-hires = "${prefix}/share/icons/Adwaita/96x96/*/*.symbolic.png \ + ${prefix}/share/icons/Adwaita/64x64/*/*.symbolic.png \ + ${prefix}/share/icons/Adwaita/48x48/*/*.symbolic.png \ + ${prefix}/share/icons/Adwaita/32x32/*/*.symbolic.png" +FILES:${PN}-symbolic = "${prefix}/share/icons/Adwaita/16x16/*/*.symbolic.png \ + ${prefix}/share/icons/Adwaita/24x24/*/*.symbolic.png \ + ${prefix}/share/icons/Adwaita/scalable/*/*-symbolic*.svg" +FILES:${PN}-hires = "${prefix}/share/icons/Adwaita/256x256/ \ + ${prefix}/share/icons/Adwaita/512x512/" +FILES:${PN} = "${prefix}/share/icons/Adwaita/ \ + ${prefix}/share/pkgconfig/adwaita-icon-theme.pc" + +BBCLASSEXTEND = "native nativesdk" diff --git a/meta-gnome/recipes-gnome/gdm/gdm_41.0.bb b/meta-gnome/recipes-gnome/gdm/gdm_41.0.bb deleted file mode 100644 index 90fb9ec..0000000 --- a/meta-gnome/recipes-gnome/gdm/gdm_41.0.bb +++ /dev/null @@ -1,60 +0,0 @@ -SUMMARY = "GNOME Display Manager" -LICENSE="GPL-2.0-only" -LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263" - -DEPENDS = " \ - dconf-native \ - itstool-native \ - gtk+3 \ - glib-2.0 \ - accountsservice \ - libcanberra \ - libxinerama \ - libpam \ - plymouth \ -" - -REQUIRED_DISTRO_FEATURES = "x11 systemd pam" - -GNOMEBASEBUILDCLASS = "meson" -inherit gnomebase gsettings gobject-introspection gettext systemd useradd upstream-version-is-even features_check - -SRC_URI[archive.sha256sum] = "5738c4293a9f5a80d4a6e9e06f4d0df3e9f313ca7b61bfb4d8afaba983e200dc" - -SRC_URI += "file://gdm.conf" - -GIR_MESON_OPTION = "" - -FILES:${PN} += " \ - ${libdir}/systemd/system/gdm.service \ - ${libdir}/systemd/user \ - ${base_libdir}/security/pam_gdm.so \ - ${datadir}/gnome-session/sessions \ - ${datadir}/dconf/profile \ - /run/gdm/greeter \ -" - -do_install:append() { - install -d ${D}${sysconfdir}/default/volatiles - echo "d gdm gdm 755 ${localstatedir}/run/gdm/greeter none" > ${D}${sysconfdir}/default/volatiles/99_gdm - rm ${D}${sysconfdir}/gdm/custom.conf - rm -rf ${D}/run/gdm - rm ${D}${libdir}/udev/rules.d/61-gdm.rules - install -m 644 ${WORKDIR}/gdm.conf ${D}${sysconfdir}/gdm/custom.conf -} - -USERADD_PACKAGES = "${PN}" -USERADD_PARAM:${PN} = "--system --home /var/lib/gdm -u 21 -s /bin/false --user-group gdm" - -SYSTEMD_SERVICE:${PN} = "${BPN}.service" - -EXTRA_OEMESON = "\ - -Dplymouth=enabled \ - -Dxdmcp=disabled \ - -Ddefault-pam-config=openembedded \ - -Dpam-mod-dir=${base_libdir}/security \ - -Dgdm-xsession=true\ -" - -PACKAGES += "${PN}-help" -FILES:${PN}-help = "${datadir}/help" diff --git a/meta-gnome/recipes-gnome/gdm/gdm_42.0.bb b/meta-gnome/recipes-gnome/gdm/gdm_42.0.bb new file mode 100644 index 0000000..00fb56b --- /dev/null +++ b/meta-gnome/recipes-gnome/gdm/gdm_42.0.bb @@ -0,0 +1,58 @@ +SUMMARY = "GNOME Display Manager" +LICENSE="GPL-2.0-only" +LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263" + +DEPENDS = " \ + dconf-native \ + gtk+3 \ + accountsservice \ + libcanberra \ + libpam \ + libgudev \ +" + +REQUIRED_DISTRO_FEATURES = "x11 systemd pam polkit gobject-introspection-data" +GIR_MESON_OPTION = "" + +GNOMEBASEBUILDCLASS = "meson" + +inherit gnomebase gsettings gobject-introspection gettext systemd useradd itstool gnome-help features_check + +SRC_URI[archive.sha256sum] = "a328ac976937bec179971ff07829a1246b98ce724181c128ae32a0ba47ad3855" + +EXTRA_OEMESON = " \ + -Dplymouth=disabled \ + -Ddefault-pam-config=openembedded \ + -Dpam-mod-dir=${base_libdir}/security \ +" + +do_install:append() { + rm -rf ${D}/run ${D}${localstatedir}/run +} + +USERADD_PACKAGES = "${PN}" +USERADD_PARAM:${PN} = "--system --no-create-home --home ${localstatedir}/lib/gdm --user-group gdm" + +SYSTEMD_SERVICE:${PN} = "${BPN}.service" + +# Some gnome components - as gnome-panel and gnome-shell (!!) - require gdm +# components. To allow gnome-images using different display-manager, split them +# out into a seperate package. +PACKAGE_BEFORE_PN = "${PN}-base" +FILES:${PN}-base = " \ + ${datadir}/glib-2.0 \ + ${datadir}/gnome-session \ + ${libdir}/lib*${SOLIBS} \ + ${libdir}/girepository-1.0 \ +" + +CONFFILES:${PN} += "${sysconfdir}/gdm/custom.conf" +FILES:${PN} += " \ + ${datadir}/dconf \ + ${base_libdir}/security/pam_gdm.so \ + ${localstatedir} \ + ${systemd_unitdir} ${systemd_user_unitdir} \ +" + +RDEPENDS:${PN} += "${PN}-base" + diff --git a/meta-gnome/recipes-gnome/gexiv2/gexiv2_0.12.1.bb b/meta-gnome/recipes-gnome/gexiv2/gexiv2_0.12.1.bb deleted file mode 100644 index 16c46e4..0000000 --- a/meta-gnome/recipes-gnome/gexiv2/gexiv2_0.12.1.bb +++ /dev/null @@ -1,19 +0,0 @@ -SUMMARY = "A GObject-based Exiv2 wrapper" -LICENSE = "GPL-2.0-only" -LIC_FILES_CHKSUM = "file://COPYING;md5=625f055f41728f84a8d7938acc35bdc2" - -DEPENDS = "exiv2" - -GNOMEBASEBUILDCLASS = "meson" -GTKDOC_MESON_OPTION = "gtk_doc" - -inherit gnomebase gobject-introspection gtk-doc - -SRC_URI[archive.md5sum] = "44a3cfeab1afd83a71e852835d24e656" -SRC_URI[archive.sha256sum] = "8aeafd59653ea88f6b78cb03780ee9fd61a2f993070c5f0d0976bed93ac2bd77" - -EXTRA_OEMESON = " \ - -Dvapi=false \ - -Dpython2_girdir=no \ - -Dpython3_girdir=no \ -" diff --git a/meta-gnome/recipes-gnome/gexiv2/gexiv2_0.14.0.bb b/meta-gnome/recipes-gnome/gexiv2/gexiv2_0.14.0.bb new file mode 100644 index 0000000..afec302 --- /dev/null +++ b/meta-gnome/recipes-gnome/gexiv2/gexiv2_0.14.0.bb @@ -0,0 +1,21 @@ +SUMMARY = "A GObject-based Exiv2 wrapper" +LICENSE = "GPL-2.0-only" +LIC_FILES_CHKSUM = "file://COPYING;md5=625f055f41728f84a8d7938acc35bdc2" + +DEPENDS = "exiv2 python3-pygobject-native" + +GNOMEBASEBUILDCLASS = "meson" +GTKDOC_MESON_OPTION = "gtk_doc" + +inherit gnomebase gobject-introspection gtk-doc python3native + +SRC_URI[archive.sha256sum] = "e58279a6ff20b6f64fa499615da5e9b57cf65ba7850b72fafdf17221a9d6d69e" + +EXTRA_OEMESON = " \ + -Dvapi=false \ + -Dpython3_girdir=${PYTHON_SITEPACKAGES_DIR}/gi/overrides \ +" + +PACKAGES =+ "${PN}-python3" +FILES:${PN}-python3 = "${PYTHON_SITEPACKAGES_DIR}" +RDEPENDS:${PN}-python3 = "${PN}" diff --git a/meta-gnome/recipes-gnome/gjs/gjs/0001-Fix-tests-that-cannot-run.patch b/meta-gnome/recipes-gnome/gjs/gjs/0001-Fix-tests-that-cannot-run.patch deleted file mode 100644 index 58ebe67..0000000 --- a/meta-gnome/recipes-gnome/gjs/gjs/0001-Fix-tests-that-cannot-run.patch +++ /dev/null @@ -1,55 +0,0 @@ -From a8011c5037a8807bb592b5d9e7e9f73be1e185e6 Mon Sep 17 00:00:00 2001 -From: Bruce Leidl -Date: Tue, 5 Oct 2021 12:37:53 +0000 -Subject: [PATCH] Fix tests that cannot run - ---- - meson.build | 28 ---------------------------- - 1 file changed, 28 deletions(-) - -diff --git a/meson.build b/meson.build -index 6ded66c..3753b9f 100644 ---- a/meson.build -+++ b/meson.build -@@ -234,27 +234,6 @@ release builds of SpiderMonkey. Try configuring SpiderMonkey with - --disable-debug.''') - endif - --# Check if a minimal SpiderMonkey program compiles, links, and runs. If not, --# it's most likely the case that SpiderMonkey was configured incorrectly, for --# example by building mozglue as a shared library. --minimal_program = cxx.run(''' --#include --int main(void) { -- if (!JS_Init()) return 1; -- JS_ShutDown(); -- return 0; --} --''', -- args: debug_arg, dependencies: spidermonkey, -- name: 'SpiderMonkey sanity check') -- --if not minimal_program.compiled() or minimal_program.returncode() != 0 -- error('''A minimal SpiderMonkey program --could not be compiled, linked, or run. Most likely you should build it with a --different configuration. Check the recommended configuration: --https://github.com/spidermonkey-embedders/spidermonkey-embedding-examples/blob/esr78/docs/Building%20SpiderMonkey.md''') --endif -- - have_printf_alternative_int = cc.compiles(''' - #include - int main(void) { -@@ -656,13 +635,6 @@ if not get_option('skip_gtk_tests') - have_gtk4 = dependency('gtk4', required: false).found() - endif - --subdir('installed-tests') -- --# Note: The test program in test/ needs to be ported --# to Windows before we can build it on Windows. --if host_machine.system() != 'windows' -- subdir('test') --endif - - valgrind_environment = environment() - valgrind_environment.set('G_SLICE', 'always-malloc,debug-blocks') diff --git a/meta-gnome/recipes-gnome/gjs/gjs/0001-Fix-tests-that-cannot-run.patch.bak b/meta-gnome/recipes-gnome/gjs/gjs/0001-Fix-tests-that-cannot-run.patch.bak deleted file mode 100644 index 2de0c4e..0000000 --- a/meta-gnome/recipes-gnome/gjs/gjs/0001-Fix-tests-that-cannot-run.patch.bak +++ /dev/null @@ -1,50 +0,0 @@ -From cb34a340e47a2c85830346aa3ebeb7e2c278c6c4 Mon Sep 17 00:00:00 2001 -From: Bruce Leidl -Date: Tue, 5 Oct 2021 11:58:42 +0000 -Subject: [PATCH] Fix tests that cannot run - ---- - meson.build | 23 ----------------------- - 1 file changed, 23 deletions(-) - -diff --git a/meson.build b/meson.build -index 6ded66c..3bd6142 100644 ---- a/meson.build -+++ b/meson.build -@@ -234,27 +234,6 @@ release builds of SpiderMonkey. Try configuring SpiderMonkey with - --disable-debug.''') - endif - --# Check if a minimal SpiderMonkey program compiles, links, and runs. If not, --# it's most likely the case that SpiderMonkey was configured incorrectly, for --# example by building mozglue as a shared library. --minimal_program = cxx.run(''' --#include --int main(void) { -- if (!JS_Init()) return 1; -- JS_ShutDown(); -- return 0; --} --''', -- args: debug_arg, dependencies: spidermonkey, -- name: 'SpiderMonkey sanity check') -- --if not minimal_program.compiled() or minimal_program.returncode() != 0 -- error('''A minimal SpiderMonkey program --could not be compiled, linked, or run. Most likely you should build it with a --different configuration. Check the recommended configuration: --https://github.com/spidermonkey-embedders/spidermonkey-embedding-examples/blob/esr78/docs/Building%20SpiderMonkey.md''') --endif -- - have_printf_alternative_int = cc.compiles(''' - #include - int main(void) { -@@ -656,8 +635,6 @@ if not get_option('skip_gtk_tests') - have_gtk4 = dependency('gtk4', required: false).found() - endif - --subdir('installed-tests') -- - # Note: The test program in test/ needs to be ported - # to Windows before we can build it on Windows. - if host_machine.system() != 'windows' diff --git a/meta-gnome/recipes-gnome/gjs/gjs/0001-Support-cross-builds-a-bit-better.patch b/meta-gnome/recipes-gnome/gjs/gjs/0001-Support-cross-builds-a-bit-better.patch new file mode 100644 index 0000000..0c45e60 --- /dev/null +++ b/meta-gnome/recipes-gnome/gjs/gjs/0001-Support-cross-builds-a-bit-better.patch @@ -0,0 +1,47 @@ +From fa47185d9c8150a0dcb0ea12b92fcf139edbef35 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Andreas=20M=C3=BCller?= +Date: Wed, 27 Oct 2021 20:18:47 +0200 +Subject: [PATCH] Support cross builds a bit better +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +* Do not build/run mozjs-linked program +* Do not try to run test applications + +Upstream-Status: Submitted[https://gitlab.gnome.org/GNOME/gjs/-/merge_requests/690] + +Signed-off-by: Andreas Müller +--- + meson.build | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +diff --git a/meson.build b/meson.build +index 136e812..f5b91e0 100644 +--- a/meson.build ++++ b/meson.build +@@ -252,6 +252,7 @@ release builds of SpiderMonkey. Try configuring SpiderMonkey with + --disable-debug.''') + endif + ++if not meson.is_cross_build() + # Check if a minimal SpiderMonkey program compiles, links, and runs. If not, + # it's most likely the case that SpiderMonkey was configured incorrectly, for + # example by building mozglue as a shared library. +@@ -282,6 +283,7 @@ elif minimal_program.returncode() != 0 + failed to execute. Most likely you should build it with a different + configuration.''' + recommended_configuration) + endif ++endif # not meson.is_cross_build() + + have_printf_alternative_int = cc.compiles(''' + #include +@@ -682,7 +684,7 @@ subdir('installed-tests') + + # Note: The test program in test/ needs to be ported + # to Windows before we can build it on Windows. +-if host_machine.system() != 'windows' ++if host_machine.system() != 'windows' and not meson.is_cross_build() + subdir('test') + endif + diff --git a/meta-gnome/recipes-gnome/gjs/gjs/0002-meson.build-Do-not-add-dir-installed-tests-when-inst.patch b/meta-gnome/recipes-gnome/gjs/gjs/0002-meson.build-Do-not-add-dir-installed-tests-when-inst.patch new file mode 100644 index 0000000..6e7b550 --- /dev/null +++ b/meta-gnome/recipes-gnome/gjs/gjs/0002-meson.build-Do-not-add-dir-installed-tests-when-inst.patch @@ -0,0 +1,31 @@ +From 2b8aa1ea4a4d1836164c934b1ab2556a32cb5af7 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Andreas=20M=C3=BCller?= +Date: Wed, 27 Oct 2021 20:04:02 +0200 +Subject: [PATCH] meson.build: Do not add dir installed-tests when + installed_tests is false +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Upstream-Status: Submitted[https://gitlab.gnome.org/GNOME/gjs/-/merge_requests/690] + +Signed-off-by: Andreas Müller +--- + meson.build | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +diff --git a/meson.build b/meson.build +index f5b91e0..3110530 100644 +--- a/meson.build ++++ b/meson.build +@@ -680,7 +680,9 @@ if not get_option('skip_gtk_tests') + have_gtk4 = dependency('gtk4', required: false).found() + endif + +-subdir('installed-tests') ++if get_option('installed_tests') ++ subdir('installed-tests') ++endif + + # Note: The test program in test/ needs to be ported + # to Windows before we can build it on Windows. diff --git a/meta-gnome/recipes-gnome/gjs/gjs_1.70.0.bb b/meta-gnome/recipes-gnome/gjs/gjs_1.70.0.bb deleted file mode 100644 index fd362e6..0000000 --- a/meta-gnome/recipes-gnome/gjs/gjs_1.70.0.bb +++ /dev/null @@ -1,21 +0,0 @@ -SUMMARY = "GNOME javascript bindings based on the Spidermonkey javascript engine" -HOMEPAGE = "https://wiki.gnome.org/Projects/Gjs" - -LICENSE = "MIT & LGPL-2.0-only" -LIC_FILES_CHKSUM = "file://COPYING;md5=8dcea832f6acf45d856abfeb2d51ec48" - -inherit gnomebase gettext gobject-introspection meson - -GIR_MESON_OPTION = "" - -DEPENDS = "glib-2.0 gobject-introspection gobject-introspection-native cairo gtk+3 mozjs-91 glib-2.0-native" - -EXTRA_OEMESON = " -Dskip_dbus_tests=true -Dskip_gtk_tests=true -Dinstalled_tests=false" -CFLAGS:append = " -include ${STAGING_INCDIR}/mozjs-91/js/RequiredDefines.h" - -SRC_URI += " file://0001-Fix-tests-that-cannot-run.patch" -SRC_URI[archive.sha256sum] = "4b0629341a318a02374e113ab97f9a9f3325423269fc1e0b043a5ffb01861c5f" - -RDEPENDS:${PN} += "libmozjs-91" - -FILES:${PN}-dbg += "${datadir}/gjs-1.0/lsan ${datadir}/gjs-1.0/valgrind" diff --git a/meta-gnome/recipes-gnome/gjs/gjs_1.72.0.bb b/meta-gnome/recipes-gnome/gjs/gjs_1.72.0.bb new file mode 100644 index 0000000..95e4bd5 --- /dev/null +++ b/meta-gnome/recipes-gnome/gjs/gjs_1.72.0.bb @@ -0,0 +1,40 @@ +SUMMARY = "Javascript bindings for GNOME" +LICENSE = "MIT & LGPL-2.0-or-later" +LIC_FILES_CHKSUM = "file://COPYING;md5=8dcea832f6acf45d856abfeb2d51ec48" + +GNOMEBASEBUILDCLASS = "meson" + +DEPENDS = "mozjs-91 cairo" + +inherit gnomebase gsettings gobject-introspection vala gettext features_check upstream-version-is-even pkgconfig + +SRC_URI[archive.sha256sum] = "3ef0caf716e3920dd61f7748f6d56e476cc0fc18351ad0548e7df1a0ab9bdcad" +SRC_URI += " \ + file://0001-Support-cross-builds-a-bit-better.patch \ + file://0002-meson.build-Do-not-add-dir-installed-tests-when-inst.patch \ +" + +# gobject-introspection is mandatory and cannot be configured +REQUIRED_DISTRO_FEATURES = "gobject-introspection-data" +GIR_MESON_OPTION = "" + +EXTRA_OEMESON = " \ + -Dinstalled_tests=false \ + -Dskip_dbus_tests=true \ + -Dskip_gtk_tests=true \ +" + +LDFLAGS:append:mipsarch = " -latomic" +LDFLAGS:append:powerpc = " -latomic" +LDFLAGS:append:powerpc64 = " -latomic" +LDFLAGS:append:riscv32 = " -latomic" + +FILES:${PN} += "${datadir}/gjs-1.0/lsan" + +PACKAGES =+ "${PN}-valgrind" +FILES:${PN}-valgrind = "${datadir}/gjs-1.0/valgrind" +RDEPENDS:${PN}-valgrind += "valgrind" + +# Valgrind not yet available on rv32/rv64 +RDEPENDS:${PN}-valgrind:remove:riscv32 = "valgrind" +RDEPENDS:${PN}-valgrind:remove:riscv64 = "valgrind" diff --git a/meta-gnome/recipes-gnome/gnome-autoar/gnome-autoar_0.4.1.bb b/meta-gnome/recipes-gnome/gnome-autoar/gnome-autoar_0.4.3.bb similarity index 69% rename from meta-gnome/recipes-gnome/gnome-autoar/gnome-autoar_0.4.1.bb rename to meta-gnome/recipes-gnome/gnome-autoar/gnome-autoar_0.4.3.bb index fd7064a..017d67b 100644 --- a/meta-gnome/recipes-gnome/gnome-autoar/gnome-autoar_0.4.1.bb +++ b/meta-gnome/recipes-gnome/gnome-autoar/gnome-autoar_0.4.3.bb @@ -8,11 +8,13 @@ DEPENDS = " \ " GNOMEBASEBUILDCLASS = "meson" -GIR_MESON_ENABLE_FLAG = "enabled" +GIR_MESON_ENABLE_FLAG = 'enabled' +GIR_MESON_DISABLE_FLAG = 'disabled' GTKDOC_MESON_OPTION = "gtk_doc" + inherit gnomebase gobject-introspection gtk-doc vala -SRC_URI[archive.sha256sum] = "646bd50ebad92d91c1be89097a15364156157442cac1471ded7ecb27d9a9150e" +SRC_URI[archive.sha256sum] = "7bdf0789553496abddc3c963b0ce7363805c0c02c025feddebcaacc787249e88" do_compile:prepend() { export GIR_EXTRA_LIBS_PATH="${B}/gnome-autoar/.libs" diff --git a/meta-gnome/recipes-gnome/gnome-backgrounds/gnome-backgrounds_41.0.bb b/meta-gnome/recipes-gnome/gnome-backgrounds/gnome-backgrounds_41.0.bb deleted file mode 100644 index 7d85779..0000000 --- a/meta-gnome/recipes-gnome/gnome-backgrounds/gnome-backgrounds_41.0.bb +++ /dev/null @@ -1,20 +0,0 @@ -SUMMARY = "Default GNOME desktop background images" - -LICENSE = "GPL-2.0-only" -LIC_FILES_CHKSUM = "file://COPYING;md5=75859989545e37968a99b631ef42722e" - -GNOMEBASEBUILDCLASS = "meson" -inherit gnomebase gettext - -def gnome_verdir(v): - return oe.utils.trim_version(v, 1) - -SRC_URI = "${GNOME_MIRROR}/${GNOMEBN}/${@gnome_verdir("${PV}")}/${GNOMEBN}-${PV}.tar.${GNOME_COMPRESS_TYPE};name=archive" - -SRC_URI[archive.sha256sum] = "1da1ac0d261bedf0fcd2c85b480bc65505e23cf51f1143126c0d37717e693145" - -FILES:${PN} += "\ - ${datadir}/backgrounds/gnome \ - ${datadir}/gnome-background-properties \ -" - diff --git a/meta-gnome/recipes-gnome/gnome-backgrounds/gnome-backgrounds_42.0.bb b/meta-gnome/recipes-gnome/gnome-backgrounds/gnome-backgrounds_42.0.bb new file mode 100644 index 0000000..d700c1b --- /dev/null +++ b/meta-gnome/recipes-gnome/gnome-backgrounds/gnome-backgrounds_42.0.bb @@ -0,0 +1,16 @@ +SUMMARY = "GNOME wallpapers" +LICENSE = "CC-BY-SA-3.0" +LIC_FILES_CHKSUM = "file://COPYING;md5=b52fb0a6df395efb7047cb6fc56bfd7e" + +SECTION = "x11/gnome" + +GNOMEBASEBUILDCLASS = "meson" + +inherit gnomebase gettext allarch + +SRC_URI[archive.sha256sum] = "4c7fe1a09f459c5f77189a5982524fce05d888944955d679910f234606c1295d" + +FILES:${PN} += " \ + ${datadir}/backgrounds \ + ${datadir}/gnome-background-properties \ +" diff --git a/meta-gnome/recipes-gnome/gnome-bluetooth/gnome-bluetooth_3.34.3.bb b/meta-gnome/recipes-gnome/gnome-bluetooth/gnome-bluetooth_3.34.3.bb deleted file mode 100644 index 9b83c34..0000000 --- a/meta-gnome/recipes-gnome/gnome-bluetooth/gnome-bluetooth_3.34.3.bb +++ /dev/null @@ -1,20 +0,0 @@ -SUMMARY = "Bluetooth integration with GNOME desktop" -HOMEPAGE = "https://wiki.gnome.org/Projects/GnomeBluetooth" -LICENSE = "GPL-2.0-only & LGPL-2.1-only" -LIC_FILES_CHKSUM = "file://COPYING;md5=eb723b61539feef013de476e68b5c50a \ - file://COPYING.LIB;md5=a6f89e2100d9b6cdffcea4f398e37343" - -SRC_URI[archive.md5sum] = "c82f7df6a411c897d4d59337d5d9a789" -SRC_URI[archive.sha256sum] = "0a068e3bddbbdab46991521e6624098579abe80da242398bdd579c4ca6926422" - - -DEPENDS = "glib-2.0 glib-2.0-native gtk+3 libcanberra libnotify libxml2-native gobject-introspection" - - -GNOMEBASEBUILDCLASS = "meson" -GTKDOC_MESON_OPTION = "gtk_doc" - -inherit gnomebase gobject-introspection gettext gtk-doc -FILES:${PN} += "${datadir}/icons" - - diff --git a/meta-gnome/recipes-gnome/gnome-bluetooth/gnome-bluetooth_42.0.bb b/meta-gnome/recipes-gnome/gnome-bluetooth/gnome-bluetooth_42.0.bb new file mode 100644 index 0000000..36fe9cf --- /dev/null +++ b/meta-gnome/recipes-gnome/gnome-bluetooth/gnome-bluetooth_42.0.bb @@ -0,0 +1,44 @@ +SUMMARY = "GNOME bluetooth manager" +LICENSE = "GPL-2.0-only & LGPL-2.1-only" +LIC_FILES_CHKSUM = " \ + file://COPYING;md5=eb723b61539feef013de476e68b5c50a \ + file://COPYING.LIB;md5=a6f89e2100d9b6cdffcea4f398e37343 \ +" + +SECTION = "x11/gnome" + +DEPENDS = " \ + udev \ + libnotify \ + libcanberra \ + bluez5 \ + upower \ + gtk4 \ + gsound \ + libadwaita \ +" + +GNOMEBASEBUILDCLASS = "meson" +GTKDOC_MESON_OPTION = "gtk_doc" +GTKIC_VERSION = "4" + +inherit features_check gnomebase gtk-icon-cache gtk-doc gobject-introspection + +REQUIRED_DISTRO_FEATURES = "x11" + +SRC_URI[archive.sha256sum] = "3d1e2720673bc9a242619dc5d231fd6e776c18a49da29f43cdc433055adb0170" + +BT_PULSE_PACKS = " \ + pulseaudio-lib-bluez5-util \ + pulseaudio-module-bluetooth-discover \ + pulseaudio-module-bluetooth-policy \ + pulseaudio-module-bluez5-device \ + pulseaudio-module-bluez5-discover \ +" + +PACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES', 'pulseaudio', d)}" +PACKAGECONFIG[pulseaudio] = ",,,${BT_PULSE_PACKS}" + +FILES:${PN} += "${datadir}/gnome-bluetooth-3.0" + +RDEPENDS:${PN} += "bluez5" diff --git a/meta-gnome/recipes-gnome/gnome-control-center/gnome-control-center/0001-Add-meson-option-to-pass-sysroot.patch b/meta-gnome/recipes-gnome/gnome-control-center/gnome-control-center/0001-Add-meson-option-to-pass-sysroot.patch new file mode 100644 index 0000000..768ba54 --- /dev/null +++ b/meta-gnome/recipes-gnome/gnome-control-center/gnome-control-center/0001-Add-meson-option-to-pass-sysroot.patch @@ -0,0 +1,45 @@ +From ba8aebe1259ae3f7f5a4827e5a47bb95c568b218 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Andreas=20M=C3=BCller?= +Date: Tue, 21 May 2019 16:07:46 +0200 +Subject: [PATCH] Add meson option to pass sysroot +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +We need to pass this to meson to help it finding gdesktop-enums.h: + +| panels/background/meson.build:38:0: ERROR: File /usr/include/gsettings-desktop-schemas/gdesktop-enums.h does not exist. + +Upstream-Status: Inappropriate [OE specific] + +Signed-off-by: Andreas Müller +--- + meson_options.txt | 1 + + panels/background/meson.build | 2 +- + 2 files changed, 2 insertions(+), 1 deletion(-) + +diff --git a/meson_options.txt b/meson_options.txt +index dbca723..af0f871 100644 +--- a/meson_options.txt ++++ b/meson_options.txt +@@ -1,3 +1,4 @@ ++option('oe_sysroot', type: 'string', value: '', description: 'Directory for OE-sysroot') + option('documentation', type: 'boolean', value: false, description: 'build documentation') + option('ibus', type: 'boolean', value: true, description: 'build with IBus support') + option('privileged_group', type: 'string', value: 'wheel', description: 'name of group that has elevated permissions') +diff --git a/panels/background/meson.build b/panels/background/meson.build +index 3634c47..459ccfe 100644 +--- a/panels/background/meson.build ++++ b/panels/background/meson.build +@@ -25,7 +25,7 @@ common_sources = [] + + enums = 'gdesktop-enums-types' + enums_header = files( +- gsettings_desktop_dep.get_pkgconfig_variable('prefix') + '/include/gsettings-desktop-schemas/gdesktop-enums.h', ++ get_option('oe_sysroot') + gsettings_desktop_dep.get_pkgconfig_variable('prefix') + '/include/gsettings-desktop-schemas/gdesktop-enums.h', + 'cc-background-item.h' + ) + +-- +2.34.1 + diff --git a/meta-gnome/recipes-gnome/gnome-control-center/gnome-control-center/0001-Add-options-for-Citadel-and-disabling-GOA-CUPS.patch b/meta-gnome/recipes-gnome/gnome-control-center/gnome-control-center/0001-Add-options-for-Citadel-and-disabling-GOA-CUPS.patch index f131d3c..1944518 100644 --- a/meta-gnome/recipes-gnome/gnome-control-center/gnome-control-center/0001-Add-options-for-Citadel-and-disabling-GOA-CUPS.patch +++ b/meta-gnome/recipes-gnome/gnome-control-center/gnome-control-center/0001-Add-options-for-Citadel-and-disabling-GOA-CUPS.patch @@ -1,6 +1,6 @@ -From 408e0ab8df0b7e98b642228a91ac1072196df36b Mon Sep 17 00:00:00 2001 +From 34269016c3d438e2f84119c779ebdcf032307ed4 Mon Sep 17 00:00:00 2001 From: Bruce Leidl -Date: Wed, 6 Oct 2021 14:28:02 -0400 +Date: Fri, 27 May 2022 15:06:26 -0400 Subject: [PATCH] Add options for Citadel and disabling GOA/CUPS --- @@ -14,12 +14,12 @@ Subject: [PATCH] Add options for Citadel and disabling GOA/CUPS 7 files changed, 81 insertions(+), 9 deletions(-) diff --git a/meson.build b/meson.build -index 1ee69c5..a5a5243 100644 +index 09aa30f..7835bc7 100644 --- a/meson.build +++ b/meson.build -@@ -114,6 +114,15 @@ if not libhandy_dep.found() - libhandy_dep = libhandy.get_variable('libhandy_dep') - endif +@@ -99,6 +99,15 @@ libgvc = subproject( + ) + libgvc_dep = libgvc.get_variable('libgvc_dep') +enable_goa = get_option('online_accounts') +enable_cups = get_option('cups') @@ -33,18 +33,18 @@ index 1ee69c5..a5a5243 100644 goa_req_version = '>= 3.25.3' pulse_req_version = '>= 2.0' -@@ -124,7 +133,9 @@ gio_dep = dependency('gio-2.0') - glib_dep = dependency('glib-2.0', version: '>= 2.68.0') - gnome_desktop_dep = dependency('gnome-desktop-3.0', version: '>= 3.33.4') - gnome_settings_dep = dependency('gnome-settings-daemon', version: '>= 3.27.90') +@@ -118,7 +127,9 @@ gnome_desktop_dep = dependency('gnome-desktop-4') + gnome_bg_dep = dependency('gnome-bg-4') + gnome_rr_dep = dependency('gnome-rr-4') + gnome_settings_dep = dependency('gnome-settings-daemon', version: '>= 41.0') +if enable_goa goa_dep = dependency('goa-1.0', version: goa_req_version) +endif - gsettings_desktop_dep = dependency('gsettings-desktop-schemas', version: '>= 40.alpha') + gsettings_desktop_dep = dependency('gsettings-desktop-schemas', version: '>= 42.alpha') libxml_dep = dependency('libxml-2.0') - polkit_gobject_dep = dependency('polkit-gobject-1', version: '>= 0.114') -@@ -149,6 +160,8 @@ common_deps = [ - ] + pulse_dep = dependency('libpulse', version: pulse_req_version) +@@ -153,6 +164,8 @@ foreach polkit_file: polkit_files + endforeach # Check for CUPS 1.4 or newer + @@ -52,19 +52,19 @@ index 1ee69c5..a5a5243 100644 cups_dep = dependency('cups', version : '>= 1.4', required: false) assert(cups_dep.found(), 'CUPS 1.4 or newer not found') -@@ -171,6 +184,7 @@ endforeach +@@ -175,6 +188,7 @@ endforeach config_h.set10('HAVE_CUPS_HTTPCONNECT2', cc.has_function('httpConnect2', dependencies: cups_dep), description: 'Define if httpConnect2() is available in CUPS') +endif - # Optional dependency for the user accounts panel - enable_cheese = get_option('cheese') + # IBus support + enable_ibus = get_option('ibus') diff --git a/meson_options.txt b/meson_options.txt -index 1b7b548..8dd1b33 100644 +index dbca723..1f65b82 100644 --- a/meson_options.txt +++ b/meson_options.txt -@@ -8,3 +8,8 @@ option('tracing', type: 'boolean', value: false, description: 'add extra debuggi +@@ -7,3 +7,8 @@ option('tracing', type: 'boolean', value: false, description: 'add extra debuggi option('wayland', type: 'boolean', value: true, description: 'build with Wayland support') option('profile', type: 'combo', choices: ['default','development'], value: 'default') option('malcontent', type: 'boolean', value: false, description: 'build with malcontent support') @@ -73,25 +73,8 @@ index 1b7b548..8dd1b33 100644 +option('cups', type: 'boolean', value: false, description: 'build with support for CUPS') +option('user_accounts', type: 'boolean', value: false, description: 'build with support for user accounts panel') +option('citadel', type: 'boolean', value: true, description: 'build with Citadel support, which removes unneeded components') -diff --git a/panels/background/meson.build b/panels/background/meson.build -index eb5e9ec..ee52d12 100644 ---- a/panels/background/meson.build -+++ b/panels/background/meson.build -@@ -34,9 +34,11 @@ install_data( - - common_sources = [] - -+staging = get_option('staging_dir') -+ - enums = 'gdesktop-enums-types' - enums_header = files( -- gsettings_desktop_dep.get_pkgconfig_variable('prefix') + '/include/gsettings-desktop-schemas/gdesktop-enums.h', -+ staging + gsettings_desktop_dep.get_pkgconfig_variable('prefix') + '/include/gsettings-desktop-schemas/gdesktop-enums.h', - 'cc-background-item.h' - ) - diff --git a/panels/meson.build b/panels/meson.build -index f603db9..943210f 100644 +index 75941ed..b3fe923 100644 --- a/panels/meson.build +++ b/panels/meson.build @@ -1,12 +1,10 @@ @@ -122,7 +105,7 @@ index f603db9..943210f 100644 'universal-access', 'usage', - 'user-accounts', - 'wwan', + 'wwan', ] @@ -43,6 +36,22 @@ if host_is_linux_not_s390 @@ -149,10 +132,10 @@ index f603db9..943210f 100644 panels_libs = [] foreach cappletname: panels diff --git a/shell/cc-panel-list.c b/shell/cc-panel-list.c -index c5532ba..75be10d 100644 +index 6cbc16b..41d6722 100644 --- a/shell/cc-panel-list.c +++ b/shell/cc-panel-list.c -@@ -388,10 +388,16 @@ static const gchar * const panel_order[] = { +@@ -385,10 +385,16 @@ static const gchar * const panel_order[] = { "notifications", "search", "multitasking", @@ -169,7 +152,7 @@ index c5532ba..75be10d 100644 /* Privacy page */ "location", -@@ -408,16 +414,24 @@ static const gchar * const panel_order[] = { +@@ -405,16 +411,24 @@ static const gchar * const panel_order[] = { "display", "mouse", "keyboard", @@ -195,7 +178,7 @@ index c5532ba..75be10d 100644 "datetime", "info-overview", diff --git a/shell/cc-panel-loader.c b/shell/cc-panel-loader.c -index 67f3f1b..4b595af 100644 +index 66c513e..97eea5b 100644 --- a/shell/cc-panel-loader.c +++ b/shell/cc-panel-loader.c @@ -31,14 +31,18 @@ diff --git a/meta-gnome/recipes-gnome/gnome-control-center/gnome-control-center/0001-Add-options-for-Citadel-and-disabling-GOA-CUPS.patch.blah b/meta-gnome/recipes-gnome/gnome-control-center/gnome-control-center/0001-Add-options-for-Citadel-and-disabling-GOA-CUPS.patch.blah deleted file mode 100644 index e50a484..0000000 --- a/meta-gnome/recipes-gnome/gnome-control-center/gnome-control-center/0001-Add-options-for-Citadel-and-disabling-GOA-CUPS.patch.blah +++ /dev/null @@ -1,293 +0,0 @@ -From d7283acccea0a26c1236e757a186221cf9177cff Mon Sep 17 00:00:00 2001 -From: Bruce Leidl -Date: Wed, 6 Oct 2021 14:19:27 -0400 -Subject: [PATCH] Add options for Citadel and disabling GOA/CUPS - ---- - meson.build | 14 ++++++++++++++ - meson_options.txt | 5 +++++ - panels/meson.build | 23 ++++++++++++++++------- - shell/cc-panel-list.c | 14 ++++++++++++++ - shell/cc-panel-loader.c | 28 ++++++++++++++++++++++++++++ - tests/meson.build | 2 +- - 6 files changed, 78 insertions(+), 8 deletions(-) - -diff --git a/meson.build b/meson.build -index 1ee69c5..a5a5243 100644 ---- a/meson.build -+++ b/meson.build -@@ -114,6 +114,15 @@ if not libhandy_dep.found() - libhandy_dep = libhandy.get_variable('libhandy_dep') - endif - -+enable_goa = get_option('online_accounts') -+enable_cups = get_option('cups') -+enable_user_accounts = get_option('user_accounts') -+enable_citadel = get_option('citadel') -+config_h.set('WITH_GOA', enable_goa, description: 'Define to enable support for Gnome Online Accounts') -+config_h.set('WITH_CUPS', enable_goa, description: 'Define to enable support for CUPS') -+config_h.set('WITH_USER_ACCOUNTS', enable_user_accounts, description: 'Define to enable user accounts panel') -+config_h.set('CITADEL', enable_citadel, description: 'Define to enable the removal of components unneeded in Citadel') -+ - goa_req_version = '>= 3.25.3' - pulse_req_version = '>= 2.0' - -@@ -124,7 +133,9 @@ gio_dep = dependency('gio-2.0') - glib_dep = dependency('glib-2.0', version: '>= 2.68.0') - gnome_desktop_dep = dependency('gnome-desktop-3.0', version: '>= 3.33.4') - gnome_settings_dep = dependency('gnome-settings-daemon', version: '>= 3.27.90') -+if enable_goa - goa_dep = dependency('goa-1.0', version: goa_req_version) -+endif - gsettings_desktop_dep = dependency('gsettings-desktop-schemas', version: '>= 40.alpha') - libxml_dep = dependency('libxml-2.0') - polkit_gobject_dep = dependency('polkit-gobject-1', version: '>= 0.114') -@@ -149,6 +160,8 @@ common_deps = [ - ] - - # Check for CUPS 1.4 or newer -+ -+if enable_cups - cups_dep = dependency('cups', version : '>= 1.4', required: false) - assert(cups_dep.found(), 'CUPS 1.4 or newer not found') - -@@ -171,6 +184,7 @@ endforeach - config_h.set10('HAVE_CUPS_HTTPCONNECT2', - cc.has_function('httpConnect2', dependencies: cups_dep), - description: 'Define if httpConnect2() is available in CUPS') -+endif - - # Optional dependency for the user accounts panel - enable_cheese = get_option('cheese') -diff --git a/meson_options.txt b/meson_options.txt -index 1b7b548..8dd1b33 100644 ---- a/meson_options.txt -+++ b/meson_options.txt -@@ -8,3 +8,8 @@ option('tracing', type: 'boolean', value: false, description: 'add extra debuggi - option('wayland', type: 'boolean', value: true, description: 'build with Wayland support') - option('profile', type: 'combo', choices: ['default','development'], value: 'default') - option('malcontent', type: 'boolean', value: false, description: 'build with malcontent support') -+option('staging_dir', type: 'string', description: 'set staging directory for cross-compile') -+option('online_accounts', type: 'boolean', value: false, description: 'build with support for gnome-online-accounts') -+option('cups', type: 'boolean', value: false, description: 'build with support for CUPS') -+option('user_accounts', type: 'boolean', value: false, description: 'build with support for user accounts panel') -+option('citadel', type: 'boolean', value: true, description: 'build with Citadel support, which removes unneeded components') -diff --git a/panels/meson.build b/panels/meson.build -index f603db9..943210f 100644 ---- a/panels/meson.build -+++ b/panels/meson.build -@@ -1,12 +1,10 @@ - subdir('common') - - panels = [ -- 'applications', - 'background', - 'camera', - 'color', - 'datetime', -- 'default-apps', - 'diagnostics', - 'display', - 'info-overview', -@@ -17,17 +15,12 @@ panels = [ - 'mouse', - 'multitasking', - 'notifications', -- 'online-accounts', - 'power', -- 'printers', - 'region', -- 'removable-media', - 'search', -- 'sharing', - 'sound', - 'universal-access', - 'usage', -- 'user-accounts', - 'wwan', - ] - -@@ -43,6 +36,22 @@ if host_is_linux_not_s390 - ] - endif - -+if enable_goa -+ panels += ['online-accounts'] -+endif -+ -+if enable_cups -+ panels += ['printers'] -+endif -+ -+if enable_user_accounts -+ panels += ['user-accounts'] -+endif -+ -+if not enable_citadel -+ panel_names += ['applications', 'default-apps', 'removable-media', 'sharing'] -+endif -+ - panels_list = [] - panels_libs = [] - foreach cappletname: panels -diff --git a/shell/cc-panel-list.c b/shell/cc-panel-list.c -index c5532ba..75be10d 100644 ---- a/shell/cc-panel-list.c -+++ b/shell/cc-panel-list.c -@@ -388,10 +388,16 @@ static const gchar * const panel_order[] = { - "notifications", - "search", - "multitasking", -+#ifndef CITADEL - "applications", -+#endif - "privacy", -+#ifndef WITH_GOA - "online-accounts", -+#endif -++#ifndef CITADEL - "sharing", -+#endif - - /* Privacy page */ - "location", -@@ -408,16 +414,24 @@ static const gchar * const panel_order[] = { - "display", - "mouse", - "keyboard", -+#ifndef WITH_CUPS - "printers", -+#endif -+#ifndef CITADEL - "removable-media", -+#endif - "wacom", - "color", - - /* Details page */ - "region", - "universal-access", -+#ifndef WITH_USER_ACCOUNTS - "user-accounts", -+#endif -+#ifndef CITADEL - "default-apps", -+#endif - "reset-settings", - "datetime", - "info-overview", -diff --git a/shell/cc-panel-loader.c b/shell/cc-panel-loader.c -index 67f3f1b..4b595af 100644 ---- a/shell/cc-panel-loader.c -+++ b/shell/cc-panel-loader.c -@@ -31,14 +31,18 @@ - #ifndef CC_PANEL_LOADER_NO_GTYPES - - /* Extension points */ -+#ifndef CITADEL - extern GType cc_applications_panel_get_type (void); -+#endif - extern GType cc_background_panel_get_type (void); - #ifdef BUILD_BLUETOOTH - extern GType cc_bluetooth_panel_get_type (void); - #endif /* BUILD_BLUETOOTH */ - extern GType cc_color_panel_get_type (void); - extern GType cc_date_time_panel_get_type (void); -+#ifndef CITADEL - extern GType cc_default_apps_panel_get_type (void); -+#endif - extern GType cc_display_panel_get_type (void); - extern GType cc_info_overview_panel_get_type (void); - extern GType cc_keyboard_panel_get_type (void); -@@ -49,19 +53,29 @@ extern GType cc_network_panel_get_type (void); - extern GType cc_wifi_panel_get_type (void); - #endif /* BUILD_NETWORK */ - extern GType cc_notifications_panel_get_type (void); -+#ifdef WITH_GOA - extern GType cc_goa_panel_get_type (void); -+#endif - extern GType cc_power_panel_get_type (void); -+#ifdef WITH_CUPS - extern GType cc_printers_panel_get_type (void); -+#endif - extern GType cc_region_panel_get_type (void); -+#ifndef CITADEL - extern GType cc_removable_media_panel_get_type (void); -+#endif - extern GType cc_search_panel_get_type (void); -+#ifndef CITADEL - extern GType cc_sharing_panel_get_type (void); -+#endif - extern GType cc_sound_panel_get_type (void); - #ifdef BUILD_THUNDERBOLT - extern GType cc_bolt_panel_get_type (void); - #endif /* BUILD_THUNDERBOLT */ - extern GType cc_ua_panel_get_type (void); -+#ifdef WITH_USER_ACCOUNTS - extern GType cc_user_panel_get_type (void); -+#endif - #ifdef BUILD_WACOM - extern GType cc_wacom_panel_get_type (void); - #endif /* BUILD_WACOM */ -@@ -97,7 +111,9 @@ extern void cc_wwan_panel_static_init_func (void); - - static CcPanelLoaderVtable default_panels[] = - { -+#ifndef CITADEL - PANEL_TYPE("applications", cc_applications_panel_get_type, NULL), -+#endif - PANEL_TYPE("background", cc_background_panel_get_type, NULL), - #ifdef BUILD_BLUETOOTH - PANEL_TYPE("bluetooth", cc_bluetooth_panel_get_type, NULL), -@@ -105,7 +121,9 @@ static CcPanelLoaderVtable default_panels[] = - PANEL_TYPE("camera", cc_camera_panel_get_type, NULL), - PANEL_TYPE("color", cc_color_panel_get_type, NULL), - PANEL_TYPE("datetime", cc_date_time_panel_get_type, NULL), -+#ifndef CITADEL - PANEL_TYPE("default-apps", cc_default_apps_panel_get_type, NULL), -+#endif - PANEL_TYPE("diagnostics", cc_diagnostics_panel_get_type, cc_diagnostics_panel_static_init_func), - PANEL_TYPE("display", cc_display_panel_get_type, NULL), - PANEL_TYPE("info-overview", cc_info_overview_panel_get_type, NULL), -@@ -120,20 +138,30 @@ static CcPanelLoaderVtable default_panels[] = - PANEL_TYPE("wifi", cc_wifi_panel_get_type, cc_wifi_panel_static_init_func), - #endif - PANEL_TYPE("notifications", cc_notifications_panel_get_type, NULL), -+#ifdef WITH_GOA - PANEL_TYPE("online-accounts", cc_goa_panel_get_type, NULL), -+#endif - PANEL_TYPE("power", cc_power_panel_get_type, NULL), -+#ifdef WITH_CUPS - PANEL_TYPE("printers", cc_printers_panel_get_type, NULL), -+#endif - PANEL_TYPE("region", cc_region_panel_get_type, NULL), -+#ifndef CITADEL - PANEL_TYPE("removable-media", cc_removable_media_panel_get_type, NULL), -+#endif - PANEL_TYPE("search", cc_search_panel_get_type, NULL), -+#ifndef CITADEL - PANEL_TYPE("sharing", cc_sharing_panel_get_type, NULL), -+#endif - PANEL_TYPE("sound", cc_sound_panel_get_type, NULL), - #ifdef BUILD_THUNDERBOLT - PANEL_TYPE("thunderbolt", cc_bolt_panel_get_type, NULL), - #endif - PANEL_TYPE("universal-access", cc_ua_panel_get_type, NULL), - PANEL_TYPE("usage", cc_usage_panel_get_type, NULL), -+#ifdef WITH_USER_ACCOUNTS - PANEL_TYPE("user-accounts", cc_user_panel_get_type, NULL), -+#endif - #ifdef BUILD_WACOM - PANEL_TYPE("wacom", cc_wacom_panel_get_type, cc_wacom_panel_static_init_func), - #endif -diff --git a/tests/meson.build b/tests/meson.build -index d4fe361..b879160 100644 ---- a/tests/meson.build -+++ b/tests/meson.build -@@ -6,5 +6,5 @@ endif - - subdir('interactive-panels') - --subdir('printers') -+#subdir('printers') - subdir('info') diff --git a/meta-gnome/recipes-gnome/gnome-control-center/gnome-control-center_41.1.bb b/meta-gnome/recipes-gnome/gnome-control-center/gnome-control-center_42.1.bb similarity index 77% rename from meta-gnome/recipes-gnome/gnome-control-center/gnome-control-center_41.1.bb rename to meta-gnome/recipes-gnome/gnome-control-center/gnome-control-center_42.1.bb index fa0aeca..73df0f1 100644 --- a/meta-gnome/recipes-gnome/gnome-control-center/gnome-control-center_41.1.bb +++ b/meta-gnome/recipes-gnome/gnome-control-center/gnome-control-center_42.1.bb @@ -22,22 +22,20 @@ DEPENDS = " \ networkmanager \ network-manager-applet \ gnome-bluetooth \ + libnma \ libgtop \ libgudev \ gsound \ libpwquality \ ibus \ - libhandy \ + libadwaita \ " REQUIRED_DISTRO_FEATURES += " pulseaudio systemd x11" -def gnome_verdir(v): - return oe.utils.trim_version(v, 1) - -SRC_URI = "${GNOME_MIRROR}/${GNOMEBN}/${@gnome_verdir("${PV}")}/${GNOMEBN}-${PV}.tar.${GNOME_COMPRESS_TYPE};name=archive" - -SRC_URI[archive.sha256sum] = "ea0c71484c65ce2cc11376f9b01e6211fa4a7ffd334f4307fc52c93f0fddd4c7" +SRC_URI += "file://0001-Add-meson-option-to-pass-sysroot.patch" +SRC_URI += " file://0001-Add-options-for-Citadel-and-disabling-GOA-CUPS.patch" +SRC_URI[archive.sha256sum] = "fb30aff90fbe1d2ad56107d6e9f5f8a4a3aaf3635bbd88920d75b568bb776785" # @@ -69,8 +67,19 @@ SRC_URI[archive.sha256sum] = "ea0c71484c65ce2cc11376f9b01e6211fa4a7ffd334f4307fc # EXTRA_OEMESON += "-Dcitadel=false" # -SRC_URI += " file://0001-Add-options-for-Citadel-and-disabling-GOA-CUPS.patch" +#SRC_URI += " file://0001-Add-options-for-Citadel-and-disabling-GOA-CUPS.patch" +EXTRA_OEMESON = " \ + -Doe_sysroot=${STAGING_DIR_HOST} \ +" + +do_install:append() { + # If polkit is setup fixup permissions and ownership + if [ -d ${D}${datadir}/polkit-1/rules.d ]; then + chmod 700 ${D}${datadir}/polkit-1/rules.d + chown polkitd:root ${D}${datadir}/polkit-1/rules.d + fi +} FILES:${PN} += " \ ${datadir}/dbus-1 \ ${datadir}/gnome-shell \ @@ -80,5 +89,4 @@ FILES:${PN} += " \ FILES:${PN}-dev += "${datadir}/gettext" RDEPENDS:${PN} += "gsettings-desktop-schemas" -EXTRA_OEMESON = "--buildtype=release -Dcheese=false -Ddocumentation=false -Dstaging_dir=${STAGING_DIR_TARGET}" diff --git a/meta-gnome/recipes-gnome/gnome-desktop/gnome-desktop/0001-meson.build-Disable-libseccomp-for-all-archs.patch b/meta-gnome/recipes-gnome/gnome-desktop/gnome-desktop/0001-meson.build-Disable-libseccomp-for-all-archs.patch new file mode 100644 index 0000000..8ae1d82 --- /dev/null +++ b/meta-gnome/recipes-gnome/gnome-desktop/gnome-desktop/0001-meson.build-Disable-libseccomp-for-all-archs.patch @@ -0,0 +1,40 @@ +From de0d33b068a5d8e61cc0c82d88d15b9a8aa97977 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Andreas=20M=C3=BCller?= +Date: Sat, 6 Apr 2019 18:07:17 +0200 +Subject: [PATCH] meson.build: Disable libseccomp for all archs +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +It does not seem mandatory and can cause unsatisfied dependency [1]. + +[1] https://errors.yoctoproject.org/Errors/Details/235565/ + +Upstream-Status: Inappropriate [configuration] + +Signed-off-by: Andreas Müller +--- + meson.build | 7 +------ + 1 file changed, 1 insertion(+), 6 deletions(-) + +diff --git a/meson.build b/meson.build +index 1dc8a73..87d72fe 100644 +--- a/meson.build ++++ b/meson.build +@@ -65,12 +65,7 @@ udev_dep = dependency('libudev', required: get_option('udev')) + host_os = host_machine.system() + host_cpu = host_machine.cpu() + supported_os = ['linux'] +-unsupported_cpus = ['alpha', 'ia64', 'm68k', 'sh4', 'sparc', 'sparc64'] +-if supported_os.contains(host_os) and not unsupported_cpus.contains(host_cpu) +- seccomp_dep = dependency('libseccomp') +-else +- seccomp_dep = dependency('', required: false) +-endif ++seccomp_dep = dependency('', required: false) + + fontconfig_cache_path = fontconfig_dep.get_variable(pkgconfig: 'cachedir') + xkb_base = xkb_config_dep.get_variable(pkgconfig: 'xkb_base') +-- +2.34.1 + diff --git a/meta-gnome/recipes-gnome/gnome-desktop/gnome-desktop/0001-needs-stdint-include.patch b/meta-gnome/recipes-gnome/gnome-desktop/gnome-desktop/0001-needs-stdint-include.patch deleted file mode 100644 index 5c423a5..0000000 --- a/meta-gnome/recipes-gnome/gnome-desktop/gnome-desktop/0001-needs-stdint-include.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff --git a/libgnome-desktop/gnome-rr.h b/libgnome-desktop/gnome-rr.h -index 111bab3f..f633a2d9 100644 ---- a/libgnome-desktop/gnome-rr.h -+++ b/libgnome-desktop/gnome-rr.h -@@ -30,6 +30,7 @@ - - #include - #include -+#include - - typedef struct GnomeRRScreenPrivate GnomeRRScreenPrivate; - typedef struct GnomeRROutput GnomeRROutput; diff --git a/meta-gnome/recipes-gnome/gnome-desktop/gnome-desktop/gnome-desktop-thumbnail-don-t-assume-time_t-is-long.patch b/meta-gnome/recipes-gnome/gnome-desktop/gnome-desktop/gnome-desktop-thumbnail-don-t-assume-time_t-is-long.patch new file mode 100644 index 0000000..fcc152f --- /dev/null +++ b/meta-gnome/recipes-gnome/gnome-desktop/gnome-desktop/gnome-desktop-thumbnail-don-t-assume-time_t-is-long.patch @@ -0,0 +1,61 @@ +From 9048939b76b3bd10783adb79ed0aaf6cd13895cc Mon Sep 17 00:00:00 2001 +From: Christopher Larson +Date: Tue, 13 Dec 2016 20:39:51 -0700 +Subject: [PATCH 1/2] gnome-desktop-thumbnail: don't convert time_t to long + +Explicitly use strftime+strptime rather than snprintf+atol. This fixes the +build for X32, where long's size doesn't match that of time_t. + +Upstream-Status: Pending +Signed-off-by: Christopher Larson + + +Modify patch described above to eliminate replacement of + +g_snprintf (mtime_str, 21, "%" G_GINT64_FORMAT, (gint64) mtime) + +which is not necessary. Retain replacement of atol(). + +Signed-off-by: Joe Slater + +--- + libgnome-desktop/gnome-desktop-thumbnail.c | 16 ++++++++++++++-- + 1 file changed, 14 insertions(+), 2 deletions(-) + +diff --git a/libgnome-desktop/gnome-desktop-thumbnail.c b/libgnome-desktop/gnome-desktop-thumbnail.c +index e56c3d7..5d96bf3 100644 +--- a/libgnome-desktop/gnome-desktop-thumbnail.c ++++ b/libgnome-desktop/gnome-desktop-thumbnail.c +@@ -120,6 +120,8 @@ + * Since: 2.2 + */ + ++#define _XOPEN_SOURCE ++ + #include + + #include +@@ -1319,6 +1326,7 @@ gnome_desktop_thumbnail_is_valid (GdkPixbuf *pixbuf, + { + const char *thumb_uri, *thumb_mtime_str; + time_t thumb_mtime; ++ struct tm tmp_mtime; + + thumb_uri = gdk_pixbuf_get_option (pixbuf, "tEXt::Thumb::URI"); + if (g_strcmp0 (uri, thumb_uri) != 0) +@@ -1327,7 +1335,11 @@ gnome_desktop_thumbnail_is_valid (GdkPixbuf *pixbuf, + thumb_mtime_str = gdk_pixbuf_get_option (pixbuf, "tEXt::Thumb::MTime"); + if (!thumb_mtime_str) + return FALSE; +- thumb_mtime = atol (thumb_mtime_str); ++ if (!strptime (thumb_mtime_str, "%s", &tmp_mtime)) ++ return FALSE; ++ thumb_mtime = mktime (&tmp_mtime); ++ if (!thumb_mtime) ++ return FALSE; + if (mtime != thumb_mtime) + return FALSE; + +-- +2.14.1 + diff --git a/meta-gnome/recipes-gnome/gnome-desktop/gnome-desktop_41.1.bb b/meta-gnome/recipes-gnome/gnome-desktop/gnome-desktop_41.1.bb deleted file mode 100644 index 8a381b8..0000000 --- a/meta-gnome/recipes-gnome/gnome-desktop/gnome-desktop_41.1.bb +++ /dev/null @@ -1,26 +0,0 @@ -SUMMARY = "GNOME library which provides API shared by several components and applications" -SECTION = "x11/gnome" -LICENSE = "GPL-2.0-only & LGPL-2.0-only" -LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263 \ - file://COPYING.LIB;md5=5f30f0716dfdd0d91eb439ebec522ec2" - -GNOMEBASEBUILDCLASS = "meson" -inherit gnomebase gtk-icon-cache gconf mime pkgconfig upstream-version-is-even gobject-introspection gtk-doc - -GIR_MESON_OPTION = "" -GTKDOC_MESON_OPTION = "gtk_doc" - - -SRC_URI += "file://0001-needs-stdint-include.patch" -SRC_URI[archive.sha256sum] = "be8aafa64d7ba2fd31079eed639d39fda1ea77ef77d35a678f019c4d91d473c2" - -DEPENDS += "itstool-native gsettings-desktop-schemas gconf virtual/libx11 gtk+3 glib-2.0 startup-notification xkeyboard-config iso-codes udev libseccomp" - -EXTRA_OEMESON = "-Ddesktop_docs=false -Dgnome_distributor='Subgraph'" - -PACKAGES =+ "libgnome-desktop" -FILES:libgnome-desktop = "${libdir}/lib*${SOLIBS} ${datadir}/libgnome-desktop*/pnp.ids ${datadir}/gnome/*xml" - -RRECOMMENDS:libgnome-desktop += "gsettings-desktop-schemas" - - diff --git a/meta-gnome/recipes-gnome/gnome-desktop/gnome-desktop_42.1.bb b/meta-gnome/recipes-gnome/gnome-desktop/gnome-desktop_42.1.bb new file mode 100644 index 0000000..d23056e --- /dev/null +++ b/meta-gnome/recipes-gnome/gnome-desktop/gnome-desktop_42.1.bb @@ -0,0 +1,47 @@ +SUMMARY = "GNOME library for reading .desktop files" +SECTION = "x11/gnome" +LICENSE = "GPL-2.0-only & LGPL-2.0-only" +LIC_FILES_CHKSUM = " \ + file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263 \ + file://COPYING.LIB;md5=5f30f0716dfdd0d91eb439ebec522ec2 \ +" + +GNOMEBASEBUILDCLASS = "meson" + +inherit gnomebase itstool pkgconfig upstream-version-is-even gobject-introspection features_check gtk-doc + +REQUIRED_DISTRO_FEATURES = "x11" +# gobject-introspection is mandatory and cannot be configured +REQUIRED_DISTRO_FEATURES += "gobject-introspection-data" + +GIR_MESON_OPTION = "" + +SRC_URI[archive.sha256sum] = "2433ab606d244c3524de5b812094db8a670fb11ed9ff7180c2d021ae1fc9fc05" +SRC_URI += " \ + file://gnome-desktop-thumbnail-don-t-assume-time_t-is-long.patch \ + file://0001-meson.build-Disable-libseccomp-for-all-archs.patch \ +" + +DEPENDS += " \ + gsettings-desktop-schemas \ + virtual/libx11 \ + gtk+3 \ + gtk4 \ + startup-notification \ + xkeyboard-config \ + iso-codes \ + udev \ +" + +GTKDOC_MESON_OPTION = "gtk_doc" +EXTRA_OEMESON = "-Ddesktop_docs=false" + +PACKAGES =+ "libgnome-desktop" +RDEPENDS:${PN} += "libgnome-desktop" +FILES:libgnome-desktop = " \ + ${libdir}/lib*${SOLIBS} \ + ${datadir}/libgnome-desktop*/pnp.ids \ + ${datadir}/gnome/*xml \ +" + +RRECOMMENDS:libgnome-desktop += "gsettings-desktop-schemas" diff --git a/meta-gnome/recipes-gnome/gnome-disk-utility/gnome-disk-utility_41.0.bb b/meta-gnome/recipes-gnome/gnome-disk-utility/gnome-disk-utility_42.0.bb similarity index 59% rename from meta-gnome/recipes-gnome/gnome-disk-utility/gnome-disk-utility_41.0.bb rename to meta-gnome/recipes-gnome/gnome-disk-utility/gnome-disk-utility_42.0.bb index 469ba98..6bf201b 100644 --- a/meta-gnome/recipes-gnome/gnome-disk-utility/gnome-disk-utility_41.0.bb +++ b/meta-gnome/recipes-gnome/gnome-disk-utility/gnome-disk-utility_42.0.bb @@ -11,34 +11,28 @@ DEPENDS = " \ libnotify \ libsecret \ libpwquality \ - libhandy \ udisks2 \ - libxml2-native \ + libhandy \ " GNOMEBASEBUILDCLASS = "meson" -inherit gnomebase gsettings gtk-icon-cache gettext features_check upstream-version-is-even mime-xdg +inherit gnomebase gsettings gtk-icon-cache gettext features_check mime-xdg -REQUIRED_DISTRO_FEATURES = "x11" +REQUIRED_DISTRO_FEATURES = "x11 polkit" PACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES', 'systemd', d)}" # As soon as elogind is of interest this needs rework: meson option is combo PACKAGECONFIG[systemd] = "-Dlogind=libsystemd,-Dlogind=none,systemd" -EXTRA_OEMESON += "-Dman=false" +SRC_URI += "file://0001-Don-t-display-ignored-disks.patch" -def gnome_verdir(v): - return oe.utils.trim_version(v, 1) +SRC_URI[archive.sha256sum] = "1b6564454d67426322cb3bfc5a5558653bfc7dfeea2ae0825b1d08629f01090b" -SRC_URI = "${GNOME_MIRROR}/${GNOMEBN}/${@gnome_verdir("${PV}")}/${GNOMEBN}-${PV}.tar.${GNOME_COMPRESS_TYPE};name=archive \ - file://0001-Don-t-display-ignored-disks.patch \ - " -SRC_URI[archive.sha256sum] = "8743c98fd656062ef862933efe30c5be4c6b322ec02eee154ec70d08ed0895df" +EXTRA_OEMESON = "-Dman=false" FILES:${PN} += " \ ${datadir}/metainfo \ ${datadir}/dbus-1 \ " - diff --git a/meta-gnome/recipes-gnome/gnome-screenshot/gnome-screenshot/0001-meson-remove-extraneous-positional-argument.patch b/meta-gnome/recipes-gnome/gnome-screenshot/gnome-screenshot/0001-meson-remove-extraneous-positional-argument.patch new file mode 100644 index 0000000..c80fda6 --- /dev/null +++ b/meta-gnome/recipes-gnome/gnome-screenshot/gnome-screenshot/0001-meson-remove-extraneous-positional-argument.patch @@ -0,0 +1,36 @@ +From c38c604b06a63f690d67318d4ef97ac556264876 Mon Sep 17 00:00:00 2001 +From: Jack Hill +Date: Thu, 18 Nov 2021 00:46:58 -0500 +Subject: [PATCH] meson: remove extraneous positional argument + +* data/meson.build (desktop_file) + (metainfo_file): Remove extraneous positional argument. + +Closes #186 + +Upstream-Status: Backport +Signed-off-by: Alexander Kanavin +--- + data/meson.build | 2 -- + 1 file changed, 2 deletions(-) + +diff --git a/data/meson.build b/data/meson.build +index fd570b3..4e2e2e8 100644 +--- a/data/meson.build ++++ b/data/meson.build +@@ -1,7 +1,6 @@ + gnome = import('gnome') + + desktop_file = i18n.merge_file( +- 'desktop', + type: 'desktop', + input: 'org.gnome.Screenshot.desktop.in', + output: 'org.gnome.Screenshot.desktop', +@@ -23,7 +22,6 @@ if desktop_file_validate.found() + endif + + metainfo_file = i18n.merge_file( +- 'appdata', + input: 'org.gnome.Screenshot.metainfo.xml.in', + output: 'org.gnome.Screenshot.metainfo.xml', + po_dir: join_paths(meson.current_source_dir(), '../po'), diff --git a/meta-gnome/recipes-gnome/gnome-screenshot/gnome-screenshot_40.0.bb b/meta-gnome/recipes-gnome/gnome-screenshot/gnome-screenshot_40.0.bb deleted file mode 100644 index 0ec686e..0000000 --- a/meta-gnome/recipes-gnome/gnome-screenshot/gnome-screenshot_40.0.bb +++ /dev/null @@ -1,19 +0,0 @@ -SUMMARY = "GNOME Screenshot" -LICENSE = "GPL-2.0-only" -LIC_FILES_CHKSUM = "file://COPYING;md5=59530bdf33659b29e73d4adb9f9f6552" - -GNOMEBASEBUILDCLASS = "meson" -inherit gnomebase gettext - -DEPENDS += "libx11 libxext glib-2.0 gtk+3 libcanberra glib-2.0-native libxml2-native libhandy" - -def gnome_verdir(v): - return oe.utils.trim_version(v, 1) - -SRC_URI = "${GNOME_MIRROR}/${GNOMEBN}/${@gnome_verdir("${PV}")}/${GNOMEBN}-${PV}.tar.${GNOME_COMPRESS_TYPE};name=archive" - -SRC_URI[archive.sha256sum] = "368ca95a39e39dc2406c849e8c4205e3f574acdd874c30741873455e3d21a5e2" - -FILES:${PN} += "${datadir}/dbus-1/services" -FILES:${PN}-dev += "${datadir}/metainfo" - diff --git a/meta-gnome/recipes-gnome/gnome-screenshot/gnome-screenshot_41.0.bb b/meta-gnome/recipes-gnome/gnome-screenshot/gnome-screenshot_41.0.bb new file mode 100644 index 0000000..fa7e161 --- /dev/null +++ b/meta-gnome/recipes-gnome/gnome-screenshot/gnome-screenshot_41.0.bb @@ -0,0 +1,23 @@ +SUMMARY = "GNOME Screenshot" +DESCRIPTION = "GNOME Screenshot is a small utility that takes a screenshot \ +of the whole desktop, the currently focused window, or an area of the screen." +LICENSE = "GPL-2.0-only" +LIC_FILES_CHKSUM = "file://COPYING;md5=59530bdf33659b29e73d4adb9f9f6552" + +SECTION = "x11/gnome" + +GNOMEBASEBUILDCLASS = "meson" + +inherit features_check gnomebase gettext upstream-version-is-even pkgconfig + +SRC_URI += " file://0001-meson-remove-extraneous-positional-argument.patch" +SRC_URI[archive.sha256sum] = "4adb7dec926428f74263d5796673cf142e4720b6e768f5468a8d0933f98c9597" + +DEPENDS += "glib-2.0 glib-2.0-native gtk+3 libhandy xext" + +REQUIRED_DISTRO_FEATURES = "x11" + +FILES:${PN} += " \ + ${datadir}/dbus-1 \ + ${datadir}/metainfo \ +" diff --git a/meta-gnome/recipes-gnome/gnome-session/gnome-session/0001-Patch-locking-logout-so-it-does-not-disable-shutting.patch b/meta-gnome/recipes-gnome/gnome-session/gnome-session/0001-Patch-locking-logout-so-it-does-not-disable-shutting.patch index d037d4d..d9a881a 100644 --- a/meta-gnome/recipes-gnome/gnome-session/gnome-session/0001-Patch-locking-logout-so-it-does-not-disable-shutting.patch +++ b/meta-gnome/recipes-gnome/gnome-session/gnome-session/0001-Patch-locking-logout-so-it-does-not-disable-shutting.patch @@ -1,6 +1,6 @@ -From 77e6fdd36bdc562e42da57c5a753b885d57eea85 Mon Sep 17 00:00:00 2001 -From: David McKinney -Date: Fri, 12 Feb 2021 13:57:01 +0000 +From 87a40c18adf3305f8b82679cc80b544158b566f9 Mon Sep 17 00:00:00 2001 +From: Bruce Leidl +Date: Fri, 27 May 2022 14:51:48 -0400 Subject: [PATCH] Patch locking logout so it does not disable shutting down --- @@ -8,10 +8,10 @@ Subject: [PATCH] Patch locking logout so it does not disable shutting down 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/gnome-session/gsm-manager.c b/gnome-session/gsm-manager.c -index 6839a02..4c2e862 100644 +index 1b88b26..fb3f2ec 100644 --- a/gnome-session/gsm-manager.c +++ b/gnome-session/gsm-manager.c -@@ -553,10 +553,10 @@ end_phase (GsmManager *manager) +@@ -560,10 +560,10 @@ end_phase (GsmManager *manager) case GSM_MANAGER_PHASE_APPLICATION: break; case GSM_MANAGER_PHASE_RUNNING: @@ -24,7 +24,7 @@ index 6839a02..4c2e862 100644 break; case GSM_MANAGER_PHASE_QUERY_END_SESSION: if (!do_query_end_session_exit (manager)) -@@ -2555,13 +2555,13 @@ gsm_manager_shutdown (GsmExportedManager *skeleton, +@@ -2633,13 +2633,13 @@ gsm_manager_shutdown (GsmExportedManager *skeleton, return TRUE; } @@ -38,9 +38,9 @@ index 6839a02..4c2e862 100644 - } + }*/ - task = g_task_new (manager, manager->priv->end_session_cancellable, (GAsyncReadyCallback) complete_end_session_task, invocation); + task = g_task_new (manager, priv->end_session_cancellable, (GAsyncReadyCallback) complete_end_session_task, invocation); -@@ -2590,13 +2590,13 @@ gsm_manager_reboot (GsmExportedManager *skeleton, +@@ -2669,13 +2669,13 @@ gsm_manager_reboot (GsmExportedManager *skeleton, return TRUE; } @@ -54,15 +54,15 @@ index 6839a02..4c2e862 100644 - } + }*/ - task = g_task_new (manager, manager->priv->end_session_cancellable, (GAsyncReadyCallback) complete_end_session_task, invocation); + task = g_task_new (manager, priv->end_session_cancellable, (GAsyncReadyCallback) complete_end_session_task, invocation); -@@ -2617,8 +2617,7 @@ gsm_manager_can_shutdown (GsmExportedManager *skeleton, +@@ -2697,8 +2697,7 @@ gsm_manager_can_shutdown (GsmExportedManager *skeleton, g_debug ("GsmManager: CanShutdown called"); - shutdown_available = !_log_out_is_locked_down (manager) && -- (gsm_system_can_stop (manager->priv->system) -+ shutdown_available = (gsm_system_can_stop (manager->priv->system) - || gsm_system_can_restart (manager->priv->system) - || gsm_system_can_suspend (manager->priv->system) - || gsm_system_can_hibernate (manager->priv->system)); +- (gsm_system_can_stop (priv->system) ++ shutdown_available = (gsm_system_can_stop (priv->system) + || gsm_system_can_restart (priv->system) + || gsm_system_can_suspend (priv->system) + || gsm_system_can_hibernate (priv->system)); diff --git a/meta-gnome/recipes-gnome/gnome-session/gnome-session/0001-Disable-sharing-and-usb-protection-add-systemd-to-de.patch b/meta-gnome/recipes-gnome/gnome-session/gnome-session/0002-Add-systemd-and-session-to-desktop-files.patch similarity index 76% rename from meta-gnome/recipes-gnome/gnome-session/gnome-session/0001-Disable-sharing-and-usb-protection-add-systemd-to-de.patch rename to meta-gnome/recipes-gnome/gnome-session/gnome-session/0002-Add-systemd-and-session-to-desktop-files.patch index 56b59a6..d478205 100644 --- a/meta-gnome/recipes-gnome/gnome-session/gnome-session/0001-Disable-sharing-and-usb-protection-add-systemd-to-de.patch +++ b/meta-gnome/recipes-gnome/gnome-session/gnome-session/0002-Add-systemd-and-session-to-desktop-files.patch @@ -1,30 +1,27 @@ -From a85ae8e4c464f0d4067ec86b4eba406917b4fd2e Mon Sep 17 00:00:00 2001 +From 5ec8ebdb6ffa4af30deee2c3a594a57f9f5a9b28 Mon Sep 17 00:00:00 2001 From: Bruce Leidl -Date: Wed, 28 Oct 2020 08:18:59 -0400 -Subject: [PATCH] Disable sharing and usb protection, add --systemd to desktops +Date: Fri, 27 May 2022 14:55:58 -0400 +Subject: [PATCH] Add --systemd and --session to desktop files --- - data/gnome-wayland.desktop.in.in | 4 +++- + data/gnome-wayland.desktop.in.in | 2 +- data/gnome-xorg.desktop.in.in | 2 +- data/gnome.desktop.in.in | 2 +- - data/meson.build | 2 -- - 4 files changed, 5 insertions(+), 5 deletions(-) + 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/data/gnome-wayland.desktop.in.in b/data/gnome-wayland.desktop.in.in -index 516c211..14b5f5a 100644 +index b48eecd..18f5c7e 100644 --- a/data/gnome-wayland.desktop.in.in +++ b/data/gnome-wayland.desktop.in.in -@@ -1,7 +1,9 @@ +@@ -1,7 +1,7 @@ [Desktop Entry] - Name=GNOME + Name=GNOME on Wayland Comment=This session logs you into GNOME -Exec=@bindir@/gnome-session +Exec=@bindir@/gnome-session --systemd --session=gnome TryExec=@bindir@/gnome-session Type=Application DesktopNames=GNOME -+X-GDM-SessionRegisters=true -+ diff --git a/data/gnome-xorg.desktop.in.in b/data/gnome-xorg.desktop.in.in index 9a76fac..40ec660 100644 --- a/data/gnome-xorg.desktop.in.in diff --git a/meta-gnome/recipes-gnome/gnome-session/gnome-session_40.1.1.bb b/meta-gnome/recipes-gnome/gnome-session/gnome-session_40.1.1.bb deleted file mode 100644 index ff1e6b4..0000000 --- a/meta-gnome/recipes-gnome/gnome-session/gnome-session_40.1.1.bb +++ /dev/null @@ -1,45 +0,0 @@ -SUMMARY = "GNOME session" -LICENSE = "GPL-2.0-only" -LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263" - -DEPENDS = " \ - glib-2.0-native \ - libxslt-native \ - xmlto-native \ - xtrans \ - libice \ - libsm \ - virtual/libx11 \ - gtk+3 \ - gnome-desktop \ - gsettings-desktop-schemas \ - json-glib \ -" - -GNOMEBASEBUILDCLASS = "meson" - -inherit gnomebase gettext gsettings upstream-version-is-even features_check - -REQUIRED_DISTRO_FEATURES = "x11 systemd pam gobject-introspection-data" - -def gnome_verdir(v): - return oe.utils.trim_version(v, 1) - -SRC_URI = "${GNOME_MIRROR}/${GNOMEBN}/${@gnome_verdir("${PV}")}/${GNOMEBN}-${PV}.tar.${GNOME_COMPRESS_TYPE};name=archive" - -SRC_URI[archive.sha256sum] = "9c787829ee32e13e1508b9aee2b1d9ba42a02c48e6c8094e34f3e7f92af4df82" -SRC_URI += " \ - file://0001-Patch-locking-logout-so-it-does-not-disable-shutting.patch \ - file://0001-Disable-sharing-and-usb-protection-add-systemd-to-de.patch \ -" - -EXTRA_OEMESON += "-Dsystemd=true -Dsystemd_journal=true -Ddocbook=false -Dman=false" -FILES:${PN} += " \ - ${bindir}/gnome-session \ - ${libexecdir}/gnome-session-ctl \ - ${datadir}/xsessions \ - ${datadir}/wayland-sessions \ - ${systemd_user_unitdir} \ -" - -RDEPENDS:${PN} += "gnome-shell gnome-settings-daemon gsettings-desktop-schemas" diff --git a/meta-gnome/recipes-gnome/gnome-session/gnome-session_42.0.bb b/meta-gnome/recipes-gnome/gnome-session/gnome-session_42.0.bb new file mode 100644 index 0000000..1f5fd34 --- /dev/null +++ b/meta-gnome/recipes-gnome/gnome-session/gnome-session_42.0.bb @@ -0,0 +1,41 @@ +SUMMARY = "GNOME session" +LICENSE = "GPL-2.0-only" +LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263" + +DEPENDS = " \ + glib-2.0-native \ + libxslt-native \ + xmlto-native \ + xtrans \ + libice \ + libsm \ + virtual/libx11 \ + gtk+3 \ + gnome-desktop \ + gsettings-desktop-schemas \ + json-glib \ +" + +GNOMEBASEBUILDCLASS = "meson" + +inherit gnomebase gettext gsettings upstream-version-is-even features_check + +REQUIRED_DISTRO_FEATURES = "x11 polkit systemd pam gobject-introspection-data" + +SRC_URI += "file://0001-Patch-locking-logout-so-it-does-not-disable-shutting.patch \ + file://0002-Add-systemd-and-session-to-desktop-files.patch \ + " +SRC_URI[archive.sha256sum] = "3cca06053ab682926920951a7da95f8cc6d72da74c682c46d0a0653332969caa" + +PACKAGECONFIG ??= "${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'systemd', 'consolekit',d)}" + +PACKAGECONFIG[consolekit] = "-Dconsolekit=true, -Dconsolekit=false, consolekit" +PACKAGECONFIG[systemd] = "-Dsystemd=true -Dsystemd_journal=true, -Dsystemd=false -Dsystemd_journal=false, systemd" + +FILES:${PN} += " \ + ${datadir}/xsessions \ + ${datadir}/wayland-sessions \ + ${systemd_user_unitdir} \ +" + +RDEPENDS:${PN} += "gnome-shell gnome-settings-daemon gsettings-desktop-schemas" diff --git a/meta-gnome/recipes-gnome/gnome-settings-daemon/gnome-settings-daemon_41.0.bb b/meta-gnome/recipes-gnome/gnome-settings-daemon/gnome-settings-daemon_41.0.bb deleted file mode 100644 index 9c437a7..0000000 --- a/meta-gnome/recipes-gnome/gnome-settings-daemon/gnome-settings-daemon_41.0.bb +++ /dev/null @@ -1,35 +0,0 @@ - -SUMMARY = "A set of daemons that manage and provide various parameters to applications" -HOMEPAGE = "https://wiki.gnome.org/Initiatives/Wayland/gnome-settings-daemon" -LICENSE = "GPL-2.0-only & LGPL-2.1-only" -LIC_FILES_CHKSUM = "file://COPYING;md5=59530bdf33659b29e73d4adb9f9f6552 \ - file://COPYING.LIB;md5=fbc093901857fcd118f065f900982c24" - -DEPENDS = "pango gnome-desktop xorgproto libnotify fontconfig libgudev libxext wayland glib-2.0 libxi libx11 libwacom libxtst gsettings-desktop-schemas intltool-native gtk+3 polkit upower lcms glib-2.0-native wayland colord geoclue libcanberra geocode-glib libgweather pulseaudio networkmanager" - -FILES:${PN} += "\ - ${systemd_user_unitdir} \ - ${libdir}/gnome-settings-daemon-41 \ -" - -FILES:${PN}-staticdev += "${libdir}/gnome-settings-daemon-3.0/libgsd.a" - - -GNOMEBASEBUILDCLASS = "meson" - -inherit gnomebase gobject-introspection gettext meson-exe-wrapper - -GIR_MESON_OPTION = "" - -SRC_URI[archive.sha256sum] = "e6ca6361fbd1deab2de1a1e390d4f14167cf47b1c547dbb8b65a5d89e9663884" -SRC_URI += "file://0001-disable-power-tests-and-sharing.patch" - -EXTRA_OEMESON += "\ - --buildtype=release \ - -Dcups=false \ - -Dsmartcard=false \ - -Dwwan=false \ - -Dusb-protection=false \ - -Dsystemd=true \ -" - diff --git a/meta-gnome/recipes-gnome/gnome-settings-daemon/gnome-settings-daemon_42.1.bb b/meta-gnome/recipes-gnome/gnome-settings-daemon/gnome-settings-daemon_42.1.bb new file mode 100644 index 0000000..671b0c4 --- /dev/null +++ b/meta-gnome/recipes-gnome/gnome-settings-daemon/gnome-settings-daemon_42.1.bb @@ -0,0 +1,53 @@ +SUMMARY = "Window navigation construction toolkit" +LICENSE = "LGPL-2.0-only" +LIC_FILES_CHKSUM = "file://COPYING;md5=59530bdf33659b29e73d4adb9f9f6552" + +GNOMEBASEBUILDCLASS = "meson" + +inherit gnomebase gsettings gobject-introspection gettext features_check upstream-version-is-even + +DEPENDS = " \ + colord \ + geocode-glib \ + gcr \ + gnome-desktop \ + libgweather4 \ + lcms \ + libcanberra \ + geoclue \ + libnotify \ + upower \ + libwacom \ + pulseaudio \ + virtual/libx11 \ +" + +# all these are mandatory +REQUIRED_DISTRO_FEATURES = "x11 polkit pulseaudio systemd gobject-introspection-data" +GIR_MESON_OPTION = "" + +SRC_URI[archive.sha256sum] = "ed65851ae54adcd58a24c86837d624fc6a14bd84ab22e94df40a3a4cfd19ffdb" +SRC_URI += "file://0001-disable-power-tests-and-sharing.patch" + +PACKAGECONFIG ??= " \ + nm \ + alsa gudev \ + ${@bb.utils.filter('DISTRO_FEATURES', 'wayland', d)} \ +" +PACKAGECONFIG[alsa] = "-Dalsa=true,-Dalsa=false,alsa-lib" +PACKAGECONFIG[cups] = "-Dcups=true,-Dcups=false,cups" +PACKAGECONFIG[gudev] = "-Dgudev=true,-Dgudev=false,libgudev" +PACKAGECONFIG[nm] = "-Dnetwork_manager=true,-Dnetwork_manager=false,networkmanager" +PACKAGECONFIG[smartcard] = "-Dsmartcard=true,-Dsmartcard=false,nss" +PACKAGECONFIG[wayland] = "-Dwayland=true,-Dwayland=false,wayland" + +FILES:${PN} += " \ + ${systemd_user_unitdir} \ + ${libdir}/gnome-settings-daemon-42/libgsd.so \ +" + +EXTRA_OEMESON += "\ + -Dwwan=false \ + -Dusb-protection=false \ + -Dsystemd=true \ +" diff --git a/meta-gnome/recipes-gnome/gnome-shell/gnome-shell_41.1.bb b/meta-gnome/recipes-gnome/gnome-shell/gnome-shell_42.1.bb similarity index 86% rename from meta-gnome/recipes-gnome/gnome-shell/gnome-shell_41.1.bb rename to meta-gnome/recipes-gnome/gnome-shell/gnome-shell_42.1.bb index aa01d54..99547df 100644 --- a/meta-gnome/recipes-gnome/gnome-shell/gnome-shell_41.1.bb +++ b/meta-gnome/recipes-gnome/gnome-shell/gnome-shell_42.1.bb @@ -4,18 +4,15 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263" REQUIRED_DISTRO_FEATURES = "x11 systemd pam" GIR_MESON_OPTION = "" +GTKIC_VERSION = "4" -SRCREV = "d85bd654a3c830a8c3982286c1876321c96faf7d" +SRCREV = "3f794cbe00f3947335a57c1139c8eb3fc617ffb7" EXTERNAL_TREE_VAR="CITADEL_GNOME_SHELL_PATH" -GIT_URI = "gitsm://github.com/brl/gnome-shell.git;branch=citadel;protocol=https" +GIT_URI = "gitsm://github.com/brl/gnome-shell.git;branch=citadel-42.1;protocol=https" GNOMEBASEBUILDCLASS = "meson" -inherit gnomebase gsettings gettext gobject-introspection gobject-introspection-data features_check bash-completion external-tree - - - DEPENDS = " \ libxml2-native \ sassc-native \ @@ -33,6 +30,8 @@ DEPENDS = " \ gsettings-desktop-schemas \ " +inherit gnomebase gsettings gettext gobject-introspection gtk-icon-cache features_check external-tree + RDEPENDS:${PN} = "gsettings-desktop-schemas librsvg-gtk" FILES:${PN} += "\ diff --git a/meta-gnome/recipes-gnome/gnome-system-monitor/gnome-system-monitor_41.0.bb b/meta-gnome/recipes-gnome/gnome-system-monitor/gnome-system-monitor_42.0.bb similarity index 72% rename from meta-gnome/recipes-gnome/gnome-system-monitor/gnome-system-monitor_41.0.bb rename to meta-gnome/recipes-gnome/gnome-system-monitor/gnome-system-monitor_42.0.bb index d0cf90b..219a069 100644 --- a/meta-gnome/recipes-gnome/gnome-system-monitor/gnome-system-monitor_41.0.bb +++ b/meta-gnome/recipes-gnome/gnome-system-monitor/gnome-system-monitor_42.0.bb @@ -9,20 +9,20 @@ DEPENDS = " \ gtkmm3 \ libgtop \ librsvg \ - libhandy \ polkit \ + libhandy \ " GNOMEBASEBUILDCLASS = "meson" -inherit gnomebase gsettings gnome-help itstool gtk-icon-cache features_check gettext upstream-version-is-even +inherit gnomebase gsettings gnome-help itstool gtk-icon-cache features_check gettext + +REQUIRED_DISTRO_FEATURES = "x11 polkit" def gnome_verdir(v): return oe.utils.trim_version(v, 1) -SRC_URI = "${GNOME_MIRROR}/${GNOMEBN}/${@gnome_verdir("${PV}")}/${GNOMEBN}-${PV}.tar.${GNOME_COMPRESS_TYPE};name=archive" - -SRC_URI[archive.sha256sum] = "c7fc44c61949b794b0289968ebbbcc0c15f8cfc3d9e45bfaa81ed45c12139e5f" +SRC_URI[archive.sha256sum] = "13239d22032201a22bd29833c575b684816700d2de168a1530223577c5c075dc" PACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES', 'systemd', d)}" PACKAGECONFIG[systemd] = "-Dsystemd=true, -Dsystemd=false, systemd" diff --git a/meta-gnome/recipes-gnome/gnome-terminal/gnome-terminal/0001-Add-W_EXITCODE-macro-for-non-glibc-systems.patch b/meta-gnome/recipes-gnome/gnome-terminal/gnome-terminal/0001-Add-W_EXITCODE-macro-for-non-glibc-systems.patch new file mode 100644 index 0000000..ef722a0 --- /dev/null +++ b/meta-gnome/recipes-gnome/gnome-terminal/gnome-terminal/0001-Add-W_EXITCODE-macro-for-non-glibc-systems.patch @@ -0,0 +1,34 @@ +From f231cecc151930fd5b6309da317a8c5bc6001f38 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Andreas=20M=C3=BCller?= +Date: Sat, 30 Oct 2021 15:10:28 +0200 +Subject: [PATCH] Add W_EXITCODE macro for non-glibc systems +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Upstream-Status: Pending + +Signed-off-by: Andreas Müller +--- + src/terminal.cc | 5 +++++ + 1 file changed, 5 insertions(+) + +diff --git a/src/terminal.cc b/src/terminal.cc +index 27ee91e..5f4d880 100644 +--- a/src/terminal.cc ++++ b/src/terminal.cc +@@ -47,6 +47,11 @@ + GS_DEFINE_CLEANUP_FUNCTION0(TerminalOptions*, gs_local_options_free, terminal_options_free) + #define gs_free_options __attribute__ ((cleanup(gs_local_options_free))) + ++/* fix for musl */ ++#ifndef W_EXITCODE ++#define W_EXITCODE(ret, sig) ((ret) << 8 | (sig)) ++#endif ++ + /* Wait-for-exit helper */ + + typedef struct { +-- +2.31.1 + diff --git a/meta-gnome/recipes-gnome/gnome-terminal/gnome-terminal/0001-build-Fix-for-newer-meson.patch b/meta-gnome/recipes-gnome/gnome-terminal/gnome-terminal/0001-build-Fix-for-newer-meson.patch new file mode 100644 index 0000000..12520b1 --- /dev/null +++ b/meta-gnome/recipes-gnome/gnome-terminal/gnome-terminal/0001-build-Fix-for-newer-meson.patch @@ -0,0 +1,46 @@ +From f88447850e162c8d514be367db574c6fa2fec2a5 Mon Sep 17 00:00:00 2001 +From: Christian Persch +Date: Fri, 14 Jan 2022 11:33:32 +0100 +Subject: [PATCH] build: Fix for newer meson + +Upstream-Status: Backport +Signed-off-by: Alexander Kanavin +--- + data/meson.build | 5 +---- + 1 file changed, 1 insertion(+), 4 deletions(-) + +diff --git a/data/meson.build b/data/meson.build +index 79d97e5..e0bcbb9 100644 +--- a/data/meson.build ++++ b/data/meson.build +@@ -18,7 +18,6 @@ + metainfodir = gt_datadir / 'metainfo' + + i18n.merge_file( +- gt_dns_name + '.metainfo.xml', + input: gt_dns_name + '.metainfo.xml.in', + output: '@BASENAME@', + po_dir: po_dir, +@@ -27,7 +26,6 @@ i18n.merge_file( + ) + + i18n.merge_file( +- gt_dns_name + '.Nautilus.metainfo.xml', + input: gt_dns_name + '.Nautilus.metainfo.xml.in', + output: '@BASENAME@', + po_dir: po_dir, +@@ -40,7 +38,6 @@ i18n.merge_file( + desktopdatadir = gt_datadir / 'applications' + + i18n.merge_file( +- gt_dns_name + '.desktop', + input: gt_dns_name + '.desktop.in', + output: '@BASENAME@', + type: 'desktop', +@@ -57,4 +54,4 @@ meson.add_install_script( + + # Subdirs + +-subdir('icons') +\ No newline at end of file ++subdir('icons') diff --git a/meta-gnome/recipes-gnome/gnome-terminal/gnome-terminal_3.42.1.bb b/meta-gnome/recipes-gnome/gnome-terminal/gnome-terminal_3.42.1.bb deleted file mode 100644 index d7bd0a3..0000000 --- a/meta-gnome/recipes-gnome/gnome-terminal/gnome-terminal_3.42.1.bb +++ /dev/null @@ -1,35 +0,0 @@ -SUMMARY = "GNOME terminal emulator" -HOMEPAGE = "https://wiki.gnome.org/Apps/Terminal" -LICENSE = "GPL-3.0-only" -LIC_FILES_CHKSUM = "file://COPYING;md5=f27defe1e96c2e1ecd4e0c9be8967949" - -DEPENDS = " \ - glib-2.0-native \ - intltool-native \ - yelp-tools-native \ - desktop-file-utils-native \ - gtk+3 \ - gsettings-desktop-schemas \ - vte \ - dconf \ - libpcre2 \ - docbook-xsl-stylesheets-native \ -" - -GNOMEBASEBUILDCLASS = "meson" -inherit gnomebase gsettings gnome-help gettext itstool upstream-version-is-even - -SRC_URI[archive.sha256sum] = "c319b1405501b8c7693e616f48eced41695d2e786148ca5f9e27bc7d98f4aeb1" - -EXTRA_OEMESON = "-Ddocs=false -Dnautilus_extension=false -Dsearch_provider=false" - -FILES:${PN} += "\ - ${systemd_user_unitdir} \ - ${datadir}/dbus-1/services \ - ${datadir}/glib-2.0/schemas \ - ${datadir}/metainfo \ -" - -FILES:${PN}-doc += "\ - ${datadir}/help \ -" diff --git a/meta-gnome/recipes-gnome/gnome-terminal/gnome-terminal_3.42.2.bb b/meta-gnome/recipes-gnome/gnome-terminal/gnome-terminal_3.42.2.bb new file mode 100644 index 0000000..061da27 --- /dev/null +++ b/meta-gnome/recipes-gnome/gnome-terminal/gnome-terminal_3.42.2.bb @@ -0,0 +1,40 @@ +SUMMARY = "GNOME terminal" +LICENSE = "GPL-3.0-only & GFDL-1.3" +LIC_FILES_CHKSUM = " \ + file://COPYING;md5=f27defe1e96c2e1ecd4e0c9be8967949 \ + file://COPYING.GFDL;md5=a22d0be1ce2284b67950a4d1673dd1b0 \ +" + +GNOMEBASEBUILDCLASS = "meson" + +inherit gnomebase gsettings gnome-help gettext itstool upstream-version-is-even + +DEPENDS = " \ + glib-2.0-native \ + intltool-native \ + yelp-tools-native \ + docbook-xsl-stylesheets-native libxslt-native \ + desktop-file-utils-native \ + gtk+3 \ + gsettings-desktop-schemas \ + vte \ + dconf \ + libpcre2 \ +" + +SRC_URI[archive.sha256sum] = "8a9c8e5ef7a3a73b246a947e1190bb08ec98935af860cf0b3aa2fbf4606817a0" +SRC_URI += "file://0001-Add-W_EXITCODE-macro-for-non-glibc-systems.patch" +SRC_URI += " file://0001-build-Fix-for-newer-meson.patch" + +EXTRA_OEMESON += " \ + -Dsearch_provider=false \ + -Dnautilus_extension=false \ +" + +FILES:${PN} += " \ + ${datadir}/metainfo \ + ${datadir}/dbus-1 \ + ${systemd_user_unitdir} \ +" + +RRECOMMENDS:${PN} += "vte-prompt gsettings-desktop-schemas" diff --git a/meta-gnome/recipes-gnome/gtk4/gtk4.inc b/meta-gnome/recipes-gnome/gtk4/gtk4.inc deleted file mode 100644 index 5795f31..0000000 --- a/meta-gnome/recipes-gnome/gtk4/gtk4.inc +++ /dev/null @@ -1,76 +0,0 @@ -SUMMARY = "Multi-platform toolkit for creating GUIs" -DESCRIPTION = "GTK+ is a multi-platform toolkit for creating graphical user interfaces. Offering a complete \ -set of widgets, GTK+ is suitable for projects ranging from small one-off projects to complete application suites." -HOMEPAGE = "http://www.gtk.org" -BUGTRACKER = "https://bugzilla.gnome.org/" -SECTION = "libs" - -DEPENDS = "glib-2.0 cairo pango atk jpeg libpng gdk-pixbuf libepoxy graphene libxcursor libxinerama libxi sassc-native \ - gdk-pixbuf-native wayland wayland-protocols libxkbcommon virtual/egl virtual/libgles2 wayland-native" - -LICENSE = "LGPL-2.0-only & LGPL-2.0-or-later & LGPL-2.1-or-later" - - -GNOMEBASEBUILDCLASS = "meson" -GIR_MESON_ENABLE_FLAG = "enabled" -GIR_MESON_DISABLE_FLAG = "disbled" -GTKDOC_MESON_OPTION = "gtk_doc" - -inherit gnomebase gettext pkgconfig gtk-doc update-alternatives gtk-immodules-cache gsettings features_check gobject-introspection - -# versions >= 3.90 are development versions, otherwise like upstream-version-is-even -UPSTREAM_CHECK_REGEX = "[^\d\.](?P3\.([1-8]?[02468])+(\.\d+)+)\.tar" - -ANY_OF_DISTRO_FEATURES = "${GTK3DISTROFEATURES}" - -# This should be in autotools.bbclass, but until something elses uses it putting -# it here avoids rebuilding everything. -export PKG_CONFIG_FOR_BUILD = "${STAGING_BINDIR_NATIVE}/pkg-config-native" - -do_configure:prepend() { - # Do this because the configure script is running ./libtool directly - rm -f libtool - ln -s ${TARGET_PREFIX}libtool libtool - #delete a file that will get confused with generated one in ${B} - rm -f ${S}/gtk/gtktypefuncs.c -} - -EXTRA_OEMESON += " \ - -Ddemos=false \ - -Dmedia-gstreamer=disabled \ -" - -do_compile:prepend() { - export GIR_EXTRA_LIBS_PATH="${B}/gdk/.libs" -} - -LIBV = "4.0.0" - - -FILES:${PN}:append = " ${datadir}/gtk-4.0/emoji " - -FILES:${PN}-dev += "\ - ${datadir}/gtk-4.0/valgrind \ - ${datadir}/gtk-4.0/gtk4builder.rng \ - ${datadir}/gettext/its \ -" - -RDEPENDS:${PN}-dev += "${@bb.utils.contains("PACKAGECONFIG", "wayland", "wayland-protocols", "", d)}" - - -python populate_packages:prepend () { - import os.path - - gtk_libdir = d.expand('${libdir}/gtk-4.0/${LIBV}') - immodules_root = os.path.join(gtk_libdir, 'immodules') - printmodules_root = os.path.join(gtk_libdir, 'printbackends'); - - immodules = do_split_packages(d, immodules_root, r'^im-(.*)\.so$', 'gtk4-immodule-%s', 'GTK input module for %s') - if immodules: - d.setVar("GTKIMMODULES_PACKAGES", " ".join(immodules)) - - do_split_packages(d, printmodules_root, r'^libprintbackend-(.*)\.so$', 'gtk4-printbackend-%s', 'GTK printbackend module for %s') - - if (d.getVar('DEBIAN_NAMES')): - d.setVar(d.expand('PKG_${PN}'), '${MLPREFIX}libgtk-4.0') -} diff --git a/meta-gnome/recipes-gnome/gtk4/gtk4/0001-Hardcoded-libtool.patch b/meta-gnome/recipes-gnome/gtk4/gtk4/0001-Hardcoded-libtool.patch deleted file mode 100644 index c210bbc..0000000 --- a/meta-gnome/recipes-gnome/gtk4/gtk4/0001-Hardcoded-libtool.patch +++ /dev/null @@ -1,47 +0,0 @@ -From 0ecaa5bab162abf0cb2057d77beeb7b89d5873b4 Mon Sep 17 00:00:00 2001 -From: Jussi Kukkonen -Date: Tue, 21 Jun 2016 14:53:56 +0300 -Subject: [PATCH 1/4] Hardcoded libtool - -Upstream-Status: Inappropriate [embedded specific] - -Signed-off-by: Marko Lindqvist -Signed-off-by: Jussi Kukkonen ---- - configure.ac | 6 +++--- - 1 file changed, 3 insertions(+), 3 deletions(-) - -diff --git a/configure.ac b/configure.ac -index 6628e21..f43ac09 100644 ---- a/configure.ac -+++ b/configure.ac -@@ -617,7 +617,7 @@ AC_MSG_CHECKING([whether to write dependencies into .pc files]) - case $enable_explicit_deps in - auto) - export SED -- deplibs_check_method=`(./libtool --config; echo 'eval echo \"$deplibs_check_method\"') | sh` -+ deplibs_check_method=`(./$host_alias-libtool --config; echo 'eval echo \"$deplibs_check_method\"') | sh` - if test "x$deplibs_check_method" != xpass_all || test "x$enable_static" = xyes ; then - enable_explicit_deps=yes - else -@@ -895,7 +895,7 @@ else - dnl Now we check to see if our libtool supports shared lib deps - dnl (in a rather ugly way even) - if $dynworks; then -- module_libtool_config="${CONFIG_SHELL-/bin/sh} ./libtool --config" -+ module_libtool_config="${CONFIG_SHELL-/bin/sh} ./$host_alias-libtool --config" - module_deplibs_check=`$module_libtool_config | \ - grep '^[[a-z_]]*check[[a-z_]]*_method=[['\''"]]' | \ - sed 's/.*[['\''"]]\(.*\)[['\''"]]$/\1/'` -@@ -1649,7 +1649,7 @@ AC_SUBST(GTK_PRINT_BACKENDS) - # We are using gmodule-no-export now, but I'm leaving the stripping - # code in place for now, since pango and atk still require gmodule. - export SED --export_dynamic=`(./libtool --config; echo eval echo \\$export_dynamic_flag_spec) | sh` -+export_dynamic=`(./$host_alias-libtool --config; echo eval echo \\$export_dynamic_flag_spec) | sh` - if test -n "$export_dynamic"; then - GDK_DEP_LIBS=`echo $GDK_DEP_LIBS | sed -e "s/$export_dynamic//"` - GTK_DEP_LIBS=`echo $GTK_DEP_LIBS | sed -e "s/$export_dynamic//"` --- -2.12.0 - diff --git a/meta-gnome/recipes-gnome/gtk4/gtk4/0002-Do-not-try-to-initialize-GL-without-libGL.patch b/meta-gnome/recipes-gnome/gtk4/gtk4/0002-Do-not-try-to-initialize-GL-without-libGL.patch deleted file mode 100644 index 80dc2d7..0000000 --- a/meta-gnome/recipes-gnome/gtk4/gtk4/0002-Do-not-try-to-initialize-GL-without-libGL.patch +++ /dev/null @@ -1,57 +0,0 @@ -From 6575ab0f0e8c1bba033ad1616511e37a2ec995ff Mon Sep 17 00:00:00 2001 -From: Jussi Kukkonen -Date: Fri, 16 Oct 2015 16:35:16 +0300 -Subject: [PATCH] Do not try to initialize GL without libGL - -_gdk_x11_screen_update_visuals_for_gl() will end up calling epoxys -GLX api which will exit() if libGL.so.1 is not present. We do not -want that to happen and we don't want every app to have to set -"GDK_GL=disabled" environment variable: so use #ifdef set based on -opengl distro feature. - -Upstream is not interested in the fix as it is: Either epoxy should be -fixed (to not exit) or GTK+ possibly could do some additional probing -before calling epoxy APIs. - -Upstream-Status: Denied -Signed-off-by: Jussi Kukkonen - ---- - configure.ac | 6 ++++++ - gdk/x11/gdkvisual-x11.c | 5 +++++ - 2 files changed, 11 insertions(+) - -diff --git a/configure.ac b/configure.ac -index e9f5583..bd651bb 100644 ---- a/configure.ac -+++ b/configure.ac -@@ -346,6 +346,12 @@ AC_ARG_ENABLE(cloudproviders, - [AS_HELP_STRING([--enable-cloudproviders], - [enable libcloudproviders integration])], - [cloudproviders_set=yes]) -+AC_ARG_ENABLE(glx, -+ [AS_HELP_STRING([--enable-glx], -+ [When enabled Gdk will try to initialize GLX])]) -+AS_IF([test "x$enable_glx" != "xno"], [ -+ AC_DEFINE([HAVE_GLX], [], [GLX will be available at runtime]) -+]) - - AC_ARG_ENABLE(profiler, - [AS_HELP_STRING([--enable-profiler], -diff --git a/gdk/x11/gdkvisual-x11.c b/gdk/x11/gdkvisual-x11.c -index 81479d8..3c8c5c0 100644 ---- a/gdk/x11/gdkvisual-x11.c -+++ b/gdk/x11/gdkvisual-x11.c -@@ -306,7 +306,12 @@ _gdk_x11_screen_init_visuals (GdkScreen *screen) - /* If GL is available we want to pick better default/rgba visuals, - as we care about glx details such as alpha/depth/stencil depth, - stereo and double buffering */ -+ /* update_visuals_for_gl() will end up calling epoxy GLX api which -+ will exit if libgl is not there: so only do this if we know GL -+ is available */ -+#ifdef HAVE_GLX - _gdk_x11_screen_update_visuals_for_gl (screen); -+#endif - } - - gint diff --git a/meta-gnome/recipes-gnome/gtk4/gtk4/0003-Add-disable-opengl-configure-option.patch b/meta-gnome/recipes-gnome/gtk4/gtk4/0003-Add-disable-opengl-configure-option.patch deleted file mode 100644 index 398c9bc..0000000 --- a/meta-gnome/recipes-gnome/gtk4/gtk4/0003-Add-disable-opengl-configure-option.patch +++ /dev/null @@ -1,872 +0,0 @@ -From f83fcf1991afad6d9c15546b2ccd775dad4e314c Mon Sep 17 00:00:00 2001 -From: Jussi Kukkonen -Date: Tue, 21 Jun 2016 15:11:39 +0300 -Subject: [PATCH] Add --disable-opengl configure option - ---disable-opengl will remove the dependency on libepoxy and on the -OpenGL APIs. This is useful for those who want to keep using gtk+3 -without the "opengl" distro feature. - -GtkGLArea is still part of the API (it just doesn't work) even when -OpenGL is disabled. GdkX11GLContext was removed from the Gtk API -completely: that object exposes GL API elements so it had to be at -the very least modified. - -The patch is _not_ great from a maintenance point of view and -modifying the library API is also a fairly nasty thing to do. -Next long term release (4.0) will require alternative solutions -as it actually will depend on OpenGL. - -Upstream-Status: Inappropriate [Evil eye expected from upstream] -Signed-off-by: Jussi Kukkonen - ---- - configure.ac | 13 ++++- - demos/gtk-demo/glarea.c | 14 ++++++ - docs/tools/Makefile.am | 9 +++- - docs/tools/widgets.c | 4 +- - gdk/Makefile.am | 8 ++- - gdk/gdkdisplay.c | 4 +- - gdk/gdkgl.c | 10 ++++ - gdk/gdkglcontext.c | 6 +++ - gdk/gdkwindow.c | 13 +++++ - gdk/x11/Makefile.am | 30 +++++++++-- - gdk/x11/gdkdisplay-x11.c | 6 ++- - gdk/x11/gdkscreen-x11.c | 5 ++ - gdk/x11/gdkwindow-x11.c | 4 ++ - gdk/x11/gdkx-autocleanups.h | 2 + - gdk/x11/{gdkx.h => gdkx-with-gl-context.h} | 1 - - gdk/x11/gdkx-without-gl-context.h | 58 ++++++++++++++++++++++ - gtk/Makefile.am | 2 +- - gtk/gtkglarea.c | 20 +++++++- - gtk/inspector/general.c | 6 +++ - tests/Makefile.am | 10 ++-- - testsuite/gtk/objects-finalize.c | 2 + - 21 files changed, 208 insertions(+), 19 deletions(-) - rename gdk/x11/{gdkx.h => gdkx-with-gl-context.h} (98%) - create mode 100644 gdk/x11/gdkx-without-gl-context.h - -diff --git a/configure.ac b/configure.ac -index bd651bb..b4c061f 100644 ---- a/configure.ac -+++ b/configure.ac -@@ -346,6 +346,15 @@ AC_ARG_ENABLE(cloudproviders, - [AS_HELP_STRING([--enable-cloudproviders], - [enable libcloudproviders integration])], - [cloudproviders_set=yes]) -+AC_ARG_ENABLE(opengl, -+ [AS_HELP_STRING([--enable-opengl], -+ [When enabled, Gtk+ will use libepoxy and exposes GtkGLArea widget ])]) -+AS_IF([test "x$enable_opengl" != "xno"], [ -+ AC_DEFINE([HAVE_OPENGL], [1], [libepoxy and opengl APIs are available at buildtime]) -+ EPOXY_PACKAGES="epoxy >= epoxy_required_version" -+]) -+AM_CONDITIONAL([HAVE_OPENGL],[test "x$enable_opengl" != "xno"]) -+ - AC_ARG_ENABLE(glx, - [AS_HELP_STRING([--enable-glx], - [When enabled Gdk will try to initialize GLX])]) -@@ -1345,7 +1354,7 @@ CFLAGS="$saved_cflags" - LDFLAGS="$saved_ldflags" - - GDK_PACKAGES="$PANGO_PACKAGES gdk-pixbuf-2.0 >= gdk_pixbuf_required_version cairo >= cairo_required_version cairo-gobject >= cairo_required_version" --GDK_PRIVATE_PACKAGES="$GDK_GIO_PACKAGE $X_PACKAGES $WAYLAND_PACKAGES $cairo_backends epoxy >= epoxy_required_version $CLOUDPROVIDER_PACKAGES $PROFILER_PACKAGES fribidi >= fribidi_required_version" -+GDK_PRIVATE_PACKAGES="$GDK_GIO_PACKAGE $X_PACKAGES $WAYLAND_PACKAGES $cairo_backends $EPOXY_PACKAGES $CLOUDPROVIDER_PACKAGES $PROFILER_PACKAGES fribidi >= fribidi_required_version" - - PKG_CHECK_MODULES(GDK_DEP, $GDK_PACKAGES $GDK_PRIVATE_PACKAGES) - GDK_DEP_LIBS="$GDK_EXTRA_LIBS $GDK_DEP_LIBS $MATH_LIB" -@@ -1379,7 +1388,7 @@ fi - PKG_CHECK_MODULES(ATK, $ATK_PACKAGES) - - GTK_PACKAGES="atk >= atk_required_version cairo >= cairo_required_version cairo-gobject >= cairo_required_version gdk-pixbuf-2.0 >= gdk_pixbuf_required_version gio-2.0 >= glib_required_version" --GTK_PRIVATE_PACKAGES="$ATK_PACKAGES $WAYLAND_PACKAGES epoxy >= epoxy_required_version fribidi >= fribidi_required_version" -+GTK_PRIVATE_PACKAGES="$ATK_PACKAGES $WAYLAND_PACKAGES $EPOXY_PACKAGES fribidi >= fribidi_required_version" - if test "x$enable_x11_backend" = xyes -o "x$enable_wayland_backend" = xyes; then - GTK_PRIVATE_PACKAGES="$GTK_PRIVATE_PACKAGES pangoft2" - fi -diff --git a/demos/gtk-demo/glarea.c b/demos/gtk-demo/glarea.c -index b51e4ae..82409c7 100644 ---- a/demos/gtk-demo/glarea.c -+++ b/demos/gtk-demo/glarea.c -@@ -3,9 +3,12 @@ - * GtkGLArea is a widget that allows custom drawing using OpenGL calls. - */ - -+#include "config.h" - #include - #include -+#if HAVE_OPENGL - #include -+#endif - - static GtkWidget *demo_window = NULL; - -@@ -23,6 +26,8 @@ enum { - /* Rotation angles on each axis */ - static float rotation_angles[N_AXIS] = { 0.0 }; - -+#ifdef HAVE_OPENGL -+ - /* The object we are drawing */ - static const GLfloat vertex_data[] = { - 0.f, 0.5f, 0.f, 1.f, -@@ -215,6 +220,7 @@ compute_mvp (float *res, - static GLuint position_buffer; - static GLuint program; - static GLuint mvp_location; -+#endif - - /* We need to set up our state when we realize the GtkGLArea widget */ - static void -@@ -241,8 +247,10 @@ realize (GtkWidget *widget) - fragment_path = "/glarea/glarea-gl.fs.glsl"; - } - -+#ifdef HAVE_OPENGL - init_buffers (&position_buffer, NULL); - init_shaders (vertex_path, fragment_path, &program, &mvp_location); -+#endif - } - - /* We should tear down the state when unrealizing */ -@@ -254,10 +262,13 @@ unrealize (GtkWidget *widget) - if (gtk_gl_area_get_error (GTK_GL_AREA (widget)) != NULL) - return; - -+#ifdef HAVE_OPENGL - glDeleteBuffers (1, &position_buffer); - glDeleteProgram (program); -+#endif - } - -+#ifdef HAVE_OPENGL - static void - draw_triangle (void) - { -@@ -290,6 +301,7 @@ draw_triangle (void) - glBindBuffer (GL_ARRAY_BUFFER, 0); - glUseProgram (0); - } -+#endif - - static gboolean - render (GtkGLArea *area, -@@ -298,6 +310,7 @@ render (GtkGLArea *area, - if (gtk_gl_area_get_error (area) != NULL) - return FALSE; - -+#ifdef HAVE_OPENGL - /* Clear the viewport */ - glClearColor (0.5, 0.5, 0.5, 1.0); - glClear (GL_COLOR_BUFFER_BIT); -@@ -307,6 +320,7 @@ render (GtkGLArea *area, - - /* Flush the contents of the pipeline */ - glFlush (); -+#endif - - return TRUE; - } -diff --git a/docs/tools/Makefile.am b/docs/tools/Makefile.am -index bec43e3..189e8fc 100644 ---- a/docs/tools/Makefile.am -+++ b/docs/tools/Makefile.am -@@ -9,13 +9,18 @@ AM_CPPFLAGS = \ - $(GTK_DEBUG_FLAGS) \ - $(GTK_DEP_CFLAGS) - -+if HAVE_OPENGL -+GEARS_LDADD = $(top_builddir)/tests/gtkgears.o -+endif -+ - DEPS = \ -- $(top_builddir)/gtk/libgtk-3.la -+ $(top_builddir)/gtk/libgtk-3.la \ -+ $(GEARS_LDADD) - - LDADDS = \ - $(top_builddir)/gtk/libgtk-3.la \ - $(top_builddir)/gdk/libgdk-3.la \ -- $(top_builddir)/tests/gtkgears.o \ -+ $(GEARS_LDADD) \ - $(GTK_DEP_LIBS) \ - $(GDK_DEP_LIBS) \ - -lm -diff --git a/docs/tools/widgets.c b/docs/tools/widgets.c -index 932daf1..54239d6 100644 ---- a/docs/tools/widgets.c -+++ b/docs/tools/widgets.c -@@ -1526,9 +1526,11 @@ create_gl_area (void) - widget = gtk_frame_new (NULL); - gtk_frame_set_shadow_type (GTK_FRAME (widget), GTK_SHADOW_IN); - -+#ifdef HAVE_OPENGL - gears = gtk_gears_new (); - gtk_container_add (GTK_CONTAINER (widget), gears); -- -+#endif -+ - info = new_widget_info ("glarea", widget, MEDIUM); - - return info; -diff --git a/gdk/Makefile.am b/gdk/Makefile.am -index 479d6a1..7edbee8 100644 ---- a/gdk/Makefile.am -+++ b/gdk/Makefile.am -@@ -274,7 +274,6 @@ x11_introspection_files = \ - x11/gdkeventsource.c \ - x11/gdkeventtranslator.c \ - x11/gdkgeometry-x11.c \ -- x11/gdkglcontext-x11.c \ - x11/gdkkeys-x11.c \ - x11/gdkmain-x11.c \ - x11/gdkmonitor-x11.c \ -@@ -300,7 +299,6 @@ x11_introspection_files = \ - x11/gdkx11display.h \ - x11/gdkx11displaymanager.h \ - x11/gdkx11dnd.h \ -- x11/gdkx11glcontext.h \ - x11/gdkx11keys.h \ - x11/gdkx11monitor.h \ - x11/gdkx11property.h \ -@@ -310,6 +308,12 @@ x11_introspection_files = \ - x11/gdkx11visual.h \ - x11/gdkx11window.h - -+if HAVE_OPENGL -+x11_introspection_files += \ -+ x11/gdkglcontext-x11.c \ -+ x11/gdkx11glcontext.h -+endif -+ - GdkX11-3.0.gir: libgdk-3.la Gdk-3.0.gir Makefile - GdkX11_3_0_gir_SCANNERFLAGS = \ - --identifier-prefix=Gdk \ -diff --git a/gdk/gdkdisplay.c b/gdk/gdkdisplay.c -index 240c99f..9eb49bf 100644 ---- a/gdk/gdkdisplay.c -+++ b/gdk/gdkdisplay.c -@@ -2419,7 +2419,9 @@ gboolean - gdk_display_make_gl_context_current (GdkDisplay *display, - GdkGLContext *context) - { -- return GDK_DISPLAY_GET_CLASS (display)->make_gl_context_current (display, context); -+ if (GDK_DISPLAY_GET_CLASS (display)->make_gl_context_current) -+ return GDK_DISPLAY_GET_CLASS (display)->make_gl_context_current (display, context); -+ return FALSE; - } - - GdkRenderingMode -diff --git a/gdk/gdkgl.c b/gdk/gdkgl.c -index 933e204..1767508 100644 ---- a/gdk/gdkgl.c -+++ b/gdk/gdkgl.c -@@ -26,7 +26,9 @@ - # include "win32/gdkwin32.h" - #endif - -+#ifdef HAVE_OPENGL - #include -+#endif - #include - #include - -@@ -40,6 +42,7 @@ gdk_cairo_surface_mark_as_direct (cairo_surface_t *surface, - g_object_ref (window), g_object_unref); - } - -+#ifdef HAVE_OPENGL - static const char * - get_vertex_type_name (int type) - { -@@ -212,6 +215,7 @@ use_texture_rect_program (GdkGLContextPaintData *paint_data) - glUseProgram (paint_data->current_program->program); - } - } -+#endif - - void - gdk_gl_texture_quads (GdkGLContext *paint_context, -@@ -220,6 +224,7 @@ gdk_gl_texture_quads (GdkGLContext *paint_context, - GdkTexturedQuad *quads, - gboolean flip_colors) - { -+#ifdef HAVE_OPENGL - GdkGLContextPaintData *paint_data = gdk_gl_context_get_paint_data (paint_context); - GdkGLContextProgram *program; - GdkWindow *window = gdk_gl_context_get_window (paint_context); -@@ -293,6 +298,7 @@ gdk_gl_texture_quads (GdkGLContext *paint_context, - - glDisableVertexAttribArray (program->position_location); - glDisableVertexAttribArray (program->uv_location); -+#endif - } - - /* x,y,width,height describes a rectangle in the gl render buffer -@@ -341,6 +347,7 @@ gdk_cairo_draw_from_gl (cairo_t *cr, - int width, - int height) - { -+#ifdef HAVE_OPENGL - GdkGLContext *paint_context; - cairo_surface_t *image; - cairo_matrix_t matrix; -@@ -718,6 +725,7 @@ out: - if (clip_region) - cairo_region_destroy (clip_region); - -+#endif - } - - /* This is always called with the paint context current */ -@@ -725,6 +733,7 @@ void - gdk_gl_texture_from_surface (cairo_surface_t *surface, - cairo_region_t *region) - { -+#ifdef HAVE_OPENGL - GdkGLContext *paint_context; - cairo_surface_t *image; - double device_x_offset, device_y_offset; -@@ -825,4 +834,5 @@ gdk_gl_texture_from_surface (cairo_surface_t *surface, - - glDisable (GL_SCISSOR_TEST); - glDeleteTextures (1, &texture_id); -+#endif - } -diff --git a/gdk/gdkglcontext.c b/gdk/gdkglcontext.c -index dfbed63..556f0a3 100644 ---- a/gdk/gdkglcontext.c -+++ b/gdk/gdkglcontext.c -@@ -85,7 +85,9 @@ - #include "gdkintl.h" - #include "gdk-private.h" - -+#ifdef HAVE_OPENGL - #include -+#endif - - typedef struct { - GdkDisplay *display; -@@ -243,6 +245,7 @@ gdk_gl_context_upload_texture (GdkGLContext *context, - int height, - guint texture_target) - { -+#ifdef HAVE_OPENGL - GdkGLContextPrivate *priv = gdk_gl_context_get_instance_private (context); - - g_return_if_fail (GDK_IS_GL_CONTEXT (context)); -@@ -286,6 +289,7 @@ gdk_gl_context_upload_texture (GdkGLContext *context, - glTexSubImage2D (texture_target, 0, 0, i, width, 1, GL_BGRA, GL_UNSIGNED_INT_8_8_8_8_REV, (unsigned char*) data + (i * stride)); - } - } -+#endif - } - - static gboolean -@@ -774,6 +778,7 @@ gdk_gl_context_realize (GdkGLContext *context, - static void - gdk_gl_context_check_extensions (GdkGLContext *context) - { -+#ifdef HAVE_OPENGL - GdkGLContextPrivate *priv = gdk_gl_context_get_instance_private (context); - gboolean has_npot, has_texture_rectangle; - -@@ -853,6 +858,7 @@ gdk_gl_context_check_extensions (GdkGLContext *context) - priv->use_texture_rectangle ? "yes" : "no")); - - priv->extensions_checked = TRUE; -+#endif - } - - /** -diff --git a/gdk/gdkwindow.c b/gdk/gdkwindow.c -index 6ae0f86..4e48a2a 100644 ---- a/gdk/gdkwindow.c -+++ b/gdk/gdkwindow.c -@@ -45,7 +45,9 @@ - - #include - -+#ifdef HAVE_OPENGL - #include -+#endif - - /* for the use of round() */ - #include "fallback-c89.c" -@@ -2844,6 +2846,13 @@ gdk_window_get_paint_gl_context (GdkWindow *window, - { - GError *internal_error = NULL; - -+#ifndef HAVE_OPENGL -+ g_set_error_literal (error, GDK_GL_ERROR, -+ GDK_GL_ERROR_NOT_AVAILABLE, -+ _("GL support disabled with --disable-opengl")); -+ return NULL; -+#endif -+ - if (_gdk_gl_flags & GDK_GL_DISABLE) - { - g_set_error_literal (error, GDK_GL_ERROR, -@@ -2979,6 +2988,7 @@ gdk_window_begin_paint_internal (GdkWindow *window, - } - else - { -+#ifdef HAVE_OPENGL - gdk_gl_context_make_current (context); - /* With gl we always need a surface to combine the gl - drawing with the native drawing. */ -@@ -2993,6 +3003,7 @@ gdk_window_begin_paint_internal (GdkWindow *window, - glBlendFunc (GL_ONE, GL_ONE_MINUS_SRC_ALPHA); - - glViewport (0, 0, ww, wh); -+#endif - } - } - -@@ -3056,6 +3067,7 @@ gdk_window_end_paint_internal (GdkWindow *window) - - gdk_gl_context_make_current (window->gl_paint_context); - -+#ifdef HAVE_OPENGL - if (!cairo_region_is_empty (opaque_region)) - gdk_gl_texture_from_surface (window->current_paint.surface, - opaque_region); -@@ -3066,6 +3078,7 @@ gdk_window_end_paint_internal (GdkWindow *window) - window->current_paint.need_blend_region); - glDisable(GL_BLEND); - } -+#endif - - cairo_region_destroy (opaque_region); - -diff --git a/gdk/x11/Makefile.am b/gdk/x11/Makefile.am -index 32b1f24..6352313 100644 ---- a/gdk/x11/Makefile.am -+++ b/gdk/x11/Makefile.am -@@ -40,8 +40,6 @@ libgdk_x11_la_SOURCES = \ - gdkeventtranslator.c \ - gdkeventtranslator.h \ - gdkgeometry-x11.c \ -- gdkglcontext-x11.c \ -- gdkglcontext-x11.h \ - gdkkeys-x11.c \ - gdkmain-x11.c \ - gdkmonitor-x11.c \ -@@ -56,14 +54,32 @@ libgdk_x11_la_SOURCES = \ - gdkwindow-x11.h \ - gdkxftdefaults.c \ - gdkxid.c \ -- gdkx.h \ - gdkprivate-x11.h \ - xsettings-client.h \ - xsettings-client.c - -+if HAVE_OPENGL -+libgdk_x11_la_SOURCES += \ -+ gdkglcontext-x11.c \ -+ gdkglcontext-x11.h -+endif -+ - libgdkinclude_HEADERS = \ - gdkx.h - -+if HAVE_OPENGL -+GDKX_HEADER = gdkx-with-gl-context.h -+else -+GDKX_HEADER = gdkx-without-gl-context.h -+endif -+ -+BUILT_SOURCES = gdkx.h -+ -+.PHONY: gdkx.h -+gdkx.h: -+ $(AM_V_GEN) cd $(srcdir) \ -+ && (cmp -s $(GDKX_HEADER) gdkx.h || cp $(GDKX_HEADER) gdkx.h ) -+ - libgdkx11include_HEADERS = \ - gdkx-autocleanups.h \ - gdkx11applaunchcontext.h \ -@@ -77,7 +93,6 @@ libgdkx11include_HEADERS = \ - gdkx11display.h \ - gdkx11displaymanager.h \ - gdkx11dnd.h \ -- gdkx11glcontext.h \ - gdkx11keys.h \ - gdkx11monitor.h \ - gdkx11property.h \ -@@ -87,10 +102,17 @@ libgdkx11include_HEADERS = \ - gdkx11visual.h \ - gdkx11window.h - -+if HAVE_OPENGL -+libgdkx11include_HEADERS += gdkx11glcontext.h -+endif -+ - # We need to include all these C files here since the conditionals - # don't seem to be correctly expanded for the dist files. - EXTRA_DIST += \ -+ gdkx.h \ - gdksettings.c \ - meson.build - -+MAINTAINERCLEANFILES = gdkx.h -+ - -include $(top_srcdir)/git.mk -diff --git a/gdk/x11/gdkdisplay-x11.c b/gdk/x11/gdkdisplay-x11.c -index 817944e..e7a2947 100644 ---- a/gdk/x11/gdkdisplay-x11.c -+++ b/gdk/x11/gdkdisplay-x11.c -@@ -37,7 +37,9 @@ - #include "gdkdisplay-x11.h" - #include "gdkprivate-x11.h" - #include "gdkscreen-x11.h" -+#ifdef HAVE_OPENGL - #include "gdkglcontext-x11.h" -+#endif - #include "gdk-private.h" - #include "gdkprofilerprivate.h" - -@@ -3188,7 +3190,9 @@ gdk_x11_display_class_init (GdkX11DisplayClass * class) - display_class->text_property_to_utf8_list = _gdk_x11_display_text_property_to_utf8_list; - display_class->utf8_to_string_target = _gdk_x11_display_utf8_to_string_target; - -- display_class->make_gl_context_current = gdk_x11_display_make_gl_context_current; -+#ifdef HAVE_OPENGL -+ display_class->make_gl_context_current = gdk_x11_display_make_gl_context_current; -+#endif - - display_class->get_default_seat = gdk_x11_display_get_default_seat; - -diff --git a/gdk/x11/gdkscreen-x11.c b/gdk/x11/gdkscreen-x11.c -index 8939ae9..931bff9 100644 ---- a/gdk/x11/gdkscreen-x11.c -+++ b/gdk/x11/gdkscreen-x11.c -@@ -1723,3 +1723,8 @@ gdk_x11_screen_get_current_desktop (GdkScreen *screen) - { - return get_netwm_cardinal_property (screen, "_NET_CURRENT_DESKTOP"); - } -+ -+#ifndef HAVE_OPENGL -+/* Function from in gdk/x11/gdkglcontext-x11.c */ -+void _gdk_x11_screen_update_visuals_for_gl (GdkScreen *screen) {} -+#endif -diff --git a/gdk/x11/gdkwindow-x11.c b/gdk/x11/gdkwindow-x11.c -index 1fe7b90..d23a347 100644 ---- a/gdk/x11/gdkwindow-x11.c -+++ b/gdk/x11/gdkwindow-x11.c -@@ -36,7 +36,9 @@ - #include "gdkasync.h" - #include "gdkeventsource.h" - #include "gdkdisplay-x11.h" -+#ifdef HAVE_OPENGL - #include "gdkglcontext-x11.h" -+#endif - #include "gdkprivate-x11.h" - #include "gdk-private.h" - -@@ -5861,7 +5863,9 @@ gdk_window_impl_x11_class_init (GdkWindowImplX11Class *klass) - impl_class->set_opaque_region = gdk_x11_window_set_opaque_region; - impl_class->set_shadow_width = gdk_x11_window_set_shadow_width; - impl_class->show_window_menu = gdk_x11_window_show_window_menu; -+#ifdef HAVE_OPENGL - impl_class->create_gl_context = gdk_x11_window_create_gl_context; - impl_class->invalidate_for_new_frame = gdk_x11_window_invalidate_for_new_frame; -+#endif - impl_class->get_unscaled_size = gdk_x11_window_get_unscaled_size; - } -diff --git a/gdk/x11/gdkx-autocleanups.h b/gdk/x11/gdkx-autocleanups.h -index edb0ea7..a317d61 100644 ---- a/gdk/x11/gdkx-autocleanups.h -+++ b/gdk/x11/gdkx-autocleanups.h -@@ -30,7 +30,9 @@ G_DEFINE_AUTOPTR_CLEANUP_FUNC(GdkX11DeviceXI2, g_object_unref) - G_DEFINE_AUTOPTR_CLEANUP_FUNC(GdkX11Display, g_object_unref) - G_DEFINE_AUTOPTR_CLEANUP_FUNC(GdkX11DisplayManager, g_object_unref) - G_DEFINE_AUTOPTR_CLEANUP_FUNC(GdkX11DragContext, g_object_unref) -+#ifdef HAVE_OPENGL - G_DEFINE_AUTOPTR_CLEANUP_FUNC(GdkX11GLContext, g_object_unref) -+#endif - G_DEFINE_AUTOPTR_CLEANUP_FUNC(GdkX11Keymap, g_object_unref) - G_DEFINE_AUTOPTR_CLEANUP_FUNC(GdkX11Screen, g_object_unref) - G_DEFINE_AUTOPTR_CLEANUP_FUNC(GdkX11Visual, g_object_unref) -diff --git a/gdk/x11/gdkx.h b/gdk/x11/gdkx-with-gl-context.h -similarity index 98% -rename from gdk/x11/gdkx.h -rename to gdk/x11/gdkx-with-gl-context.h -index 1f64bcc..ae05fa6 100644 ---- a/gdk/x11/gdkx.h -+++ b/gdk/x11/gdkx-with-gl-context.h -@@ -45,7 +45,6 @@ - #include - #include - #include --#include - #include - #include - #include -diff --git a/gdk/x11/gdkx-without-gl-context.h b/gdk/x11/gdkx-without-gl-context.h -new file mode 100644 -index 0000000..c9e2617 ---- /dev/null -+++ b/gdk/x11/gdkx-without-gl-context.h -@@ -0,0 +1,58 @@ -+/* GDK - The GIMP Drawing Kit -+ * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald -+ * -+ * This library is free software; you can redistribute it and/or -+ * modify it under the terms of the GNU Lesser General Public -+ * License as published by the Free Software Foundation; either -+ * version 2 of the License, or (at your option) any later version. -+ * -+ * This library is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ * Lesser General Public License for more details. -+ * -+ * You should have received a copy of the GNU Lesser General Public -+ * License along with this library. If not, see . -+ */ -+ -+/* -+ * Modified by the GTK+ Team and others 1997-2000. See the AUTHORS -+ * file for a list of people on the GTK+ Team. See the ChangeLog -+ * files for a list of changes. These files are distributed with -+ * GTK+ at ftp://ftp.gtk.org/pub/gtk/. -+ */ -+ -+#ifndef __GDK_X_H__ -+#define __GDK_X_H__ -+ -+#include -+ -+#include -+#include -+ -+#define __GDKX_H_INSIDE__ -+ -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+ -+#include -+ -+#undef __GDKX_H_INSIDE__ -+ -+#endif /* __GDK_X_H__ */ -diff --git a/gtk/Makefile.am b/gtk/Makefile.am -index eaca473..99352d1 100644 ---- a/gtk/Makefile.am -+++ b/gtk/Makefile.am -@@ -1449,7 +1449,7 @@ gtktypefuncs.inc: stamp-gtktypebuiltins.h stamp-gtkprivatetypebuiltins.h $(top_s - ${CPP} $(DEFS) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) xgen-gtfsrc.c | \ - $(GREP) -o '\bg[td]k_[a-zA-Z0-9_]*_get_type\b' | \ - sort | uniq | \ -- $(SED) '{ s/^/*tp++ = /; s/$$/();/; s/^.*\(gdk_x11\|gtk_plug_\|gtk_socket_\).*$$/#ifdef GDK_WINDOWING_X11\n&\n#endif/; }' >> xgen-gtf \ -+ $(SED) '{ s/^/*tp++ = /; s/$$/();/; s/^.*\(gdk_x11\|gtk_plug_\|gtk_socket_\).*$$/#ifdef GDK_WINDOWING_X11\n&\n#endif/; s/^.*gdk_x11_gl.*$$/#ifdef HAVE_OPENGL\n&\n#endif/; }' >> xgen-gtf \ - && cp xgen-gtf $@ && rm -f xgen-gtf - $(srcdir)/gtktestutils.c: gtktypefuncs.inc - -diff --git a/gtk/gtkglarea.c b/gtk/gtkglarea.c -index 9a56443..7de0db2 100644 ---- a/gtk/gtkglarea.c -+++ b/gtk/gtkglarea.c -@@ -29,7 +29,9 @@ - #include "gtkprivate.h" - #include "gtkrender.h" - -+#ifdef HAVE_OPENGL - #include -+#endif - - /** - * SECTION:gtkglarea -@@ -369,9 +371,12 @@ gtk_gl_area_real_create_context (GtkGLArea *area) - static void - gtk_gl_area_resize (GtkGLArea *area, int width, int height) - { -+#ifdef HAVE_OPENGL - glViewport (0, 0, width, height); -+#endif - } - -+#ifdef HAVE_OPENGL - /* - * Creates all the buffer objects needed for rendering the scene - */ -@@ -483,6 +488,7 @@ gtk_gl_area_allocate_buffers (GtkGLArea *area) - - priv->needs_render = TRUE; - } -+#endif - - /** - * gtk_gl_area_attach_buffers: -@@ -501,6 +507,7 @@ gtk_gl_area_allocate_buffers (GtkGLArea *area) - void - gtk_gl_area_attach_buffers (GtkGLArea *area) - { -+#ifdef HAVE_OPENGL - GtkGLAreaPrivate *priv = gtk_gl_area_get_instance_private (area); - - g_return_if_fail (GTK_IS_GL_AREA (area)); -@@ -533,11 +540,13 @@ gtk_gl_area_attach_buffers (GtkGLArea *area) - glFramebufferRenderbufferEXT (GL_FRAMEBUFFER_EXT, GL_STENCIL_ATTACHMENT_EXT, - GL_RENDERBUFFER_EXT, priv->depth_stencil_buffer); - } -+#endif - } - - static void - gtk_gl_area_delete_buffers (GtkGLArea *area) - { -+#ifdef HAVE_OPENGL - GtkGLAreaPrivate *priv = gtk_gl_area_get_instance_private (area); - - if (priv->context == NULL) -@@ -569,6 +578,7 @@ gtk_gl_area_delete_buffers (GtkGLArea *area) - glDeleteFramebuffersEXT (1, &priv->frame_buffer); - priv->frame_buffer = 0; - } -+#endif - } - - static void -@@ -679,6 +689,7 @@ gtk_gl_area_draw (GtkWidget *widget, - GtkGLArea *area = GTK_GL_AREA (widget); - GtkGLAreaPrivate *priv = gtk_gl_area_get_instance_private (area); - gboolean unused; -+#ifdef HAVE_OPENGL - int w, h, scale; - GLenum status; - -@@ -690,7 +701,6 @@ gtk_gl_area_draw (GtkWidget *widget, - gtk_widget_get_allocated_height (widget)); - return FALSE; - } -- - if (priv->context == NULL) - return FALSE; - -@@ -736,6 +746,14 @@ gtk_gl_area_draw (GtkWidget *widget, - } - - return TRUE; -+#else -+ if (priv->error != NULL) -+ gtk_gl_area_draw_error_screen (area, -+ cr, -+ gtk_widget_get_allocated_width (widget), -+ gtk_widget_get_allocated_height (widget)); -+ return FALSE; -+#endif - } - - static gboolean -diff --git a/gtk/inspector/general.c b/gtk/inspector/general.c -index c241ec8..24576dd 100644 ---- a/gtk/inspector/general.c -+++ b/gtk/inspector/general.c -@@ -33,8 +33,10 @@ - - #ifdef GDK_WINDOWING_X11 - #include "x11/gdkx.h" -+#ifdef HAVE_OPENGL - #include - #endif -+#endif - - #ifdef GDK_WINDOWING_WIN32 - #include "win32/gdkwin32.h" -@@ -196,6 +198,7 @@ add_label_row (GtkInspectorGeneral *gen, - gtk_size_group_add_widget (GTK_SIZE_GROUP (gen->priv->labels), label); - } - -+#ifdef HAVE_OPENGL - #ifdef GDK_WINDOWING_X11 - static void - append_glx_extension_row (GtkInspectorGeneral *gen, -@@ -205,6 +208,7 @@ append_glx_extension_row (GtkInspectorGeneral *gen, - add_check_row (gen, GTK_LIST_BOX (gen->priv->gl_box), ext, epoxy_has_glx_extension (dpy, 0, ext), 0); - } - #endif -+#endif - - #ifdef GDK_WINDOWING_WAYLAND - static void -@@ -254,6 +258,7 @@ wayland_get_display (struct wl_display *wl_display) - static void - init_gl (GtkInspectorGeneral *gen) - { -+#ifdef HAVE_OPENGL - #ifdef GDK_WINDOWING_X11 - if (GDK_IS_X11_DISPLAY (gdk_display_get_default ())) - { -@@ -280,6 +285,7 @@ init_gl (GtkInspectorGeneral *gen) - } - else - #endif -+#endif - #ifdef GDK_WINDOWING_WAYLAND - if (GDK_IS_WAYLAND_DISPLAY (gdk_display_get_default ())) - { -diff --git a/tests/Makefile.am b/tests/Makefile.am -index ee1e8b5..e6c6502 100644 ---- a/tests/Makefile.am -+++ b/tests/Makefile.am -@@ -80,8 +80,6 @@ noinst_PROGRAMS = $(TEST_PROGS) \ - testfullscreen \ - testgeometry \ - testgiconpixbuf \ -- testglarea \ -- testglblending \ - testgrid \ - testgtk \ - testheaderbar \ -@@ -172,12 +170,18 @@ noinst_PROGRAMS = $(TEST_PROGS) \ - testactionbar \ - testwindowsize \ - testpopover \ -- gdkgears \ - listmodel \ - testpopup \ - testpopupat \ - $(NULL) - -+if HAVE_OPENGL -+noinst_PROGRAMS += -+ testglarea \ -+ testglblending \ -+ gdkgears -+endif -+ - if USE_WAYLAND - noinst_PROGRAMS += testforeign - endif -diff --git a/testsuite/gtk/objects-finalize.c b/testsuite/gtk/objects-finalize.c -index 24540e3..e0f863a 100644 ---- a/testsuite/gtk/objects-finalize.c -+++ b/testsuite/gtk/objects-finalize.c -@@ -116,7 +116,9 @@ main (int argc, char **argv) - all_types[i] != GDK_TYPE_X11_DEVICE_MANAGER_CORE && - all_types[i] != GDK_TYPE_X11_DEVICE_MANAGER_XI2 && - all_types[i] != GDK_TYPE_X11_DISPLAY_MANAGER && -+#ifdef HAVE_OPENGL - all_types[i] != GDK_TYPE_X11_GL_CONTEXT && -+#endif - #endif - /* Not allowed to finalize a GdkPixbufLoader without calling gdk_pixbuf_loader_close() */ - all_types[i] != GDK_TYPE_PIXBUF_LOADER && diff --git a/meta-gnome/recipes-gnome/gtk4/gtk4/link_fribidi.patch b/meta-gnome/recipes-gnome/gtk4/gtk4/link_fribidi.patch deleted file mode 100644 index e4bbd79..0000000 --- a/meta-gnome/recipes-gnome/gtk4/gtk4/link_fribidi.patch +++ /dev/null @@ -1,19 +0,0 @@ -Link with libfribidi, this is to avoid under linking where these functions are -used but the library is not linked in, and they are marked undefined by BFD linker -but gold linker refuses to link - -| ./.libs/libgdk-3.so: error: undefined reference to 'fribidi_get_bidi_type' - -Signed-off-by: Khem Raj -Upstream-Status: Pending - ---- a/gdk/Makefile.am -+++ b/gdk/Makefile.am -@@ -55,6 +55,7 @@ LDADD = \ - -version-info $(LT_VERSION_INFO) \ - -export-dynamic \ - -rpath $(libdir) \ -+ -lfribidi \ - $(no_undefined) - - # diff --git a/meta-gnome/recipes-gnome/gtk4/gtk4/sort-resources.patch b/meta-gnome/recipes-gnome/gtk4/gtk4/sort-resources.patch deleted file mode 100644 index 7f87372..0000000 --- a/meta-gnome/recipes-gnome/gtk4/gtk4/sort-resources.patch +++ /dev/null @@ -1,19 +0,0 @@ -If the resources file isn't sorted in some way then libgdk.so will differ -depending on the inode order of the resource files. - -Upstream-Status: Pending -Signed-off-by: Ross Burton - -diff --git a/gdk/Makefile.am b/gdk/Makefile.am -index e25b57ba50..26f2d57c6e 100644 ---- a/gdk/Makefile.am -+++ b/gdk/Makefile.am -@@ -465,7 +465,7 @@ stamp-gc-h: $(top_builddir)/config.status - # Resources - # - --glsl_sources := $(wildcard $(srcdir)/resources/glsl/*.glsl) -+glsl_sources := $(sort $(wildcard $(srcdir)/resources/glsl/*.glsl)) - - gdk.gresource.xml: Makefile.am - $(AM_V_GEN) echo "" > $@; \ diff --git a/meta-gnome/recipes-gnome/gtk4/gtk4_4.4.1.bb b/meta-gnome/recipes-gnome/gtk4/gtk4_4.4.1.bb deleted file mode 100644 index b076b24..0000000 --- a/meta-gnome/recipes-gnome/gtk4/gtk4_4.4.1.bb +++ /dev/null @@ -1,15 +0,0 @@ -require gtk4.inc - -MAJ_VER = "${@oe.utils.trim_version("${PV}", 2)}" - -SRC_URI = "http://ftp.gnome.org/pub/gnome/sources/gtk/${MAJ_VER}/gtk-${PV}.tar.xz \ - " - -SRC_URI[sha256sum] = "0faada983dc6b0bc409cb34c1713c1f3267e67c093f86b1e3b17db6100a3ddf4" - -S = "${WORKDIR}/gtk-${PV}" - -LIC_FILES_CHKSUM = "file://COPYING;md5=5f30f0716dfdd0d91eb439ebec522ec2 \ - file://gtk/gtk.h;endline=25;md5=1d8dc0fccdbfa26287a271dce88af737 \ - file://gdk/gdk.h;endline=25;md5=c920ce39dc88c6f06d3e7c50e08086f2 \ - file://tests/testgtk.c;endline=25;md5=49d06770681b8322466b52ed19d29fb2" diff --git a/meta-gnome/recipes-gnome/gtk4/gtk4_4.6.4.bb b/meta-gnome/recipes-gnome/gtk4/gtk4_4.6.4.bb new file mode 100644 index 0000000..9f47371 --- /dev/null +++ b/meta-gnome/recipes-gnome/gtk4/gtk4_4.6.4.bb @@ -0,0 +1,142 @@ +SUMMARY = "Multi-platform toolkit for creating GUIs" +DESCRIPTION = "GTK is a multi-platform toolkit for creating graphical user interfaces. Offering a complete \ +set of widgets, GTK is suitable for projects ranging from small one-off projects to complete application suites." +HOMEPAGE = "http://www.gtk.org" +BUGTRACKER = "https://bugzilla.gnome.org/" +SECTION = "libs" + +DEPENDS = " \ + sassc-native \ + glib-2.0 \ + libepoxy \ + graphene \ + cairo \ + pango \ + atk \ + jpeg \ + libpng \ + librsvg \ + tiff \ + gdk-pixbuf-native gdk-pixbuf \ +" + +LICENSE = "LGPL-2.0-only & LGPL-2.0-or-later & LGPL-2.1-or-later" +LIC_FILES_CHKSUM = " \ + file://COPYING;md5=5f30f0716dfdd0d91eb439ebec522ec2 \ + file://gtk/gtk.h;endline=25;md5=1d8dc0fccdbfa26287a271dce88af737 \ + file://gdk/gdk.h;endline=25;md5=c920ce39dc88c6f06d3e7c50e08086f2 \ + file://tests/testgtk.c;endline=25;md5=49d06770681b8322466b52ed19d29fb2 \ +" + +MAJ_VER = "${@oe.utils.trim_version("${PV}", 2)}" + +UPSTREAM_CHECK_REGEX = "gtk-(?P\d+\.(\d*[02468])+(\.\d+)+)\.tar.xz" + +SRC_URI = "http://ftp.gnome.org/pub/gnome/sources/gtk/${MAJ_VER}/gtk-${PV}.tar.xz" +SRC_URI[sha256sum] = "a79a2bbcc7931b703fc4fa1fcbe1b906e229a1522d854d522801766a79bcac9f" + +S = "${WORKDIR}/gtk-${PV}" + +inherit meson gettext pkgconfig gtk-doc update-alternatives gsettings features_check gobject-introspection + +# TBD: nativesdk +# gobject-introspection.bbclass pins introspection off for nativesk. As long as +# we do not remove this wisdom or hack gtk4, it is not possible to build +# nativesdk-gtk4 +BBCLASSEXTEND = "native" + +GSETTINGS_PACKAGE:class-native = "" + +ANY_OF_DISTRO_FEATURES = "${GTK3DISTROFEATURES}" +REQUIRED_DISTRO_FEATURES = "opengl" + +GIR_MESON_ENABLE_FLAG = 'enabled' +GIR_MESON_DISABLE_FLAG = 'disabled' +GTKDOC_MESON_OPTION = 'gtk_doc' + +EXTRA_OEMESON = " -Dbuild-tests=false" + +PACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES', 'wayland x11', d)}" +PACKAGECONFIG:class-native = "${@bb.utils.filter('DISTRO_FEATURES', 'x11', d)}" +PACKAGECONFIG:class-nativesdk = "${@bb.utils.filter('DISTRO_FEATURES', 'x11', d)}" + +PACKAGECONFIG[x11] = "-Dx11-backend=true,-Dx11-backend=false,at-spi2-atk fontconfig libx11 libxext libxcursor libxi libxdamage libxrandr libxrender libxcomposite libxfixes xinerama" +PACKAGECONFIG[wayland] = "-Dwayland-backend=true,-Dwayland-backend=false,wayland wayland-protocols libxkbcommon virtual/egl virtual/libgles2 wayland-native" +PACKAGECONFIG[cups] = "-Dprint-cups=enabled,-Dprint-cups=disabled,cups" +PACKAGECONFIG[colord] = "-Dcolord=enabled,-Dcolord=disabled,colord" +# gtk4 wants gstreamer-player-1.0 -> gstreamer1.0-plugins-bad +PACKAGECONFIG[gstreamer] = "-Dmedia-gstreamer=enabled,-Dmedia-gstreamer=disabled,gstreamer1.0-plugins-bad" +PACKAGECONFIG[tracker] = "-Dtracker=enabled,-Dtracker=disabled,tracker" + + +do_compile:prepend() { + export GIR_EXTRA_LIBS_PATH="${B}/gdk/.libs" +} + + +PACKAGES =+ "${PN}-demo" +LIBV = "4.0.0" + +FILES:${PN}-demo = " \ + ${datadir}/applications/org.gtk.Demo4.desktop \ + ${datadir}/applications/org.gtk.IconBrowser4.desktop \ + ${datadir}/applications/org.gtk.WidgetFactory4.desktop \ + ${datadir}/icons/hicolor/*/apps/org.gtk.Demo4*.* \ + ${datadir}/icons/hicolor/*/apps/org.gtk.IconBrowser4*.* \ + ${datadir}/icons/hicolor/*/apps/org.gtk.WidgetFactory4*.* \ + ${bindir}/gtk4-demo \ + ${bindir}/gtk4-demo-application \ + ${bindir}/gtk4-icon-browser \ + ${bindir}/gtk4-widget-factory \ +" + +FILES:${PN}:append = " \ + ${datadir}/glib-2.0/schemas/ \ + ${datadir}/gtk-4.0/emoji/ \ + ${datadir}/metainfo/ \ + ${datadir}/icons/hicolor/*/apps/org.gtk.PrintEditor4*.* \ + ${libdir}/gtk-4.0/${LIBV}/printbackends \ + ${bindir}/gtk4-update-icon-cache \ + ${bindir}/gtk4-launch \ +" + +FILES:${PN}-dev += " \ + ${datadir}/gtk-4.0/gtk4builder.rng \ + ${datadir}/gtk-4.0/include \ + ${datadir}/gtk-4.0/valgrind \ + ${datadir}/gettext/its \ + ${bindir}/gtk4-builder-tool \ + ${bindir}/gtk4-encode-symbolic-svg \ + ${bindir}/gtk4-query-settings \ +" + +GTKBASE_RRECOMMENDS ?= " \ + liberation-fonts \ + gdk-pixbuf-loader-png \ + gdk-pixbuf-loader-jpeg \ + gdk-pixbuf-loader-gif \ + gdk-pixbuf-loader-xpm \ + shared-mime-info \ + adwaita-icon-theme-symbolic \ +" + +GTKBASE_RRECOMMENDS:class-native ?= "" + +GTKGLIBC_RRECOMMENDS ?= "${GTKBASE_RRECOMMENDS} glibc-gconv-iso8859-1" + +RRECOMMENDS:${PN} = "${GTKBASE_RRECOMMENDS}" +RRECOMMENDS:${PN}:libc-glibc = "${GTKGLIBC_RRECOMMENDS}" +RDEPENDS:${PN}-dev += "${@bb.utils.contains("PACKAGECONFIG", "wayland", "wayland-protocols", "", d)}" + +PACKAGES_DYNAMIC += "^gtk4-printbackend-.*" +python populate_packages:prepend () { + import os.path + + gtk_libdir = d.expand('${libdir}/gtk-3.0/${LIBV}') + printmodules_root = os.path.join(gtk_libdir, 'printbackends'); + + do_split_packages(d, printmodules_root, r'^libprintbackend-(.*)\.so$', 'gtk4-printbackend-%s', 'GTK printbackend module for %s') + + if (d.getVar('DEBIAN_NAMES')): + d.setVar(d.expand('PKG:${PN}'), '${MLPREFIX}libgtk-4.0') +} diff --git a/meta-gnome/recipes-gnome/gvfs/gvfs_1.48.1.bb b/meta-gnome/recipes-gnome/gvfs/gvfs_1.48.1.bb deleted file mode 100644 index abd4956..0000000 --- a/meta-gnome/recipes-gnome/gvfs/gvfs_1.48.1.bb +++ /dev/null @@ -1,72 +0,0 @@ -DESCRIPTION = "gvfs is a userspace virtual filesystem" -LICENSE = "LGPL-2.0-only" -LIC_FILES_CHKSUM = "file://COPYING;md5=05df38dd77c35ec8431f212410a3329e" - -GNOMEBASEBUILDCLASS = "meson" -inherit gnomebase gtk-icon-cache gconf mime bash-completion gettext upstream-version-is-even - -DEPENDS += "libsecret glib-2.0 gconf libgudev udisks2 polkit shadow-native libusb1 gsettings-desktop-schemas" - -SRC_URI = "https://download.gnome.org/sources/${BPN}/${@gnome_verdir("${PV}")}/${BPN}-${PV}.tar.xz;name=archive" - -SRC_URI[archive.sha256sum] = "b2ea4f271aad2711f16b43c03151e2ec5a9874ff1a21142ef6d6406486a19dc2" - -EXTRA_OEMESON = " \ - -Dadmin=false \ - -Dafc=false \ - -Dafp=false \ - -Darchive=false \ - -Dcdda=false \ - -Ddnssd=false \ - -Dgoa=false \ - -Dgoogle=false \ - -Dgphoto2=false \ - -Dhttp=false \ - -Dmtp=false \ - -Dhttp=false \ - -Dnfs=false \ - -Dsftp=false \ - -Dsmb=false \ - -Dbluray=false \ - -Dgcr=false \ - -Dkeyring=false \ - -Dudisks2=true \ -" - -FILES:${PN} += " \ - ${datadir}/glib-2.0 \ - ${datadir}/GConf \ - ${datadir}/dbus-1/services \ - ${libdir}/gio/modules/*.so \ - ${libdir}/tmpfiles.d \ - ${systemd_user_unitdir} \ -" - -RDEPENDS:${PN} = "udisks2" - -FILES:${PN}-dbg += "${libdir}/gio/modules/.debug/*" -FILES:${PN}-dev += "${libdir}/gio/modules/*.la" - -PACKAGECONFIG[systemd] = "-Dsystemduserunitdir=${systemd_user_unitdir} -Dtmpfilesdir=${libdir}/tmpfiles.d, -Dsystemduserunitdir=no -Dtmpfilesdir=no, systemd" - -# needs meta-filesystems -PACKAGECONFIG[fuse] = "-Dfuse=true, -Dfuse=false, fuse" - -do_install:append() { - - # After rebuilds (not from scracth) it can happen that the executables in - # libexec ar missing executable permission flag. Not sure but it came up - # during transition to meson. Looked into build files and logs but could - # not find suspicious - for exe in `find ${D}/${libexec}`; do - chmod +x $exe - done - - # Something sets user services executable - looks a bit as if meson - # transition has room for enhancements... - # Systemd warns with messages as: - # Apr 07 01:00:33 raspberrypi3 systemd[348]: Configuration file /usr/lib/systemd/user/gvfs-mtp-volume-monitor.service is marked executable. Please remove executable permissio> - for service in `find ${D}/${systemd_user_unitdir}`; do - chmod -x $service - done -} diff --git a/meta-gnome/recipes-gnome/gvfs/gvfs_1.50.0.bb b/meta-gnome/recipes-gnome/gvfs/gvfs_1.50.0.bb new file mode 100644 index 0000000..93f7f57 --- /dev/null +++ b/meta-gnome/recipes-gnome/gvfs/gvfs_1.50.0.bb @@ -0,0 +1,89 @@ +DESCRIPTION = "gvfs is a userspace virtual filesystem" +LICENSE = "LGPL-2.0-only" +LIC_FILES_CHKSUM = "file://COPYING;md5=05df38dd77c35ec8431f212410a3329e" + +GNOMEBASEBUILDCLASS = "meson" +inherit gnomebase gsettings bash-completion gettext upstream-version-is-even features_check useradd + +DEPENDS += "libsecret glib-2.0 glib-2.0-native libgudev shadow-native \ + gsettings-desktop-schemas dbus" + +RDEPENDS:${PN} += "gsettings-desktop-schemas" + +SRC_URI = "https://download.gnome.org/sources/${BPN}/${@gnome_verdir("${PV}")}/${BPN}-${PV}.tar.xz;name=archive" + +SRC_URI[archive.sha256sum] = "cbc2f564d2e9f00c760673f42d6803bce3e081ab7ffb4456deffffba9339b4dd" + +# depends on gsettings-desktop-schemas->gcr->gtk+3-> x11 +REQUIRED_DISTRO_FEATURES = "x11" + +EXTRA_OEMESON = " \ + -Dbluray=false \ + -Dgoa=false \ + -Dgoogle=false \ + -Dnfs=false \ +" + +PACKAGES =+ "gvfsd-ftp gvfsd-sftp gvfsd-trash" + +FILES:${PN} += " \ + ${datadir}/glib-2.0 \ + ${datadir}/GConf \ + ${datadir}/dbus-1/services \ + ${libdir}/gio/modules/*.so \ + ${libdir}/tmpfiles.d \ + ${systemd_user_unitdir} \ +" + +FILES:${PN}-dbg += "${libdir}/gio/modules/.debug/*" +FILES:${PN}-dev += "${libdir}/gio/modules/*.la" + +FILES:gvfsd-ftp = "${libexecdir}/gvfsd-ftp ${datadir}/gvfs/mounts/ftp.mount" +FILES:gvfsd-sftp = "${libexecdir}/gvfsd-sftp ${datadir}/gvfs/mounts/sftp.mount" +FILES:gvfsd-trash = "${libexecdir}/gvfsd-trash ${datadir}/gvfs/mounts/trash.mount" + +RRECOMMENDS:gvfsd-ftp += "openssh-sftp openssh-ssh" + +PACKAGECONFIG ?= "libgphoto2 \ + ${@bb.utils.filter('DISTRO_FEATURES', 'systemd', d)} \ + ${@bb.utils.contains('DISTRO_FEATURES','polkit','udisks2','',d)} \ + ${@bb.utils.contains('DISTRO_FEATURES','polkit','admin','',d)} \ + " + +PACKAGECONFIG[udisks2] = "-Dudisks2=true, -Dudisks2=false, udisks2, udisks2" +PACKAGECONFIG[admin] = "-Dadmin=true, -Dadmin=false, libcap polkit" +PACKAGECONFIG[afc] = "-Dafc=true, -Dafc=false, libimobiledevice libplist" +PACKAGECONFIG[archive] = "-Darchive=true, -Darchive=false, libarchive" +PACKAGECONFIG[dnssd] = "-Ddnssd=true, -Ddnssd=false, avahi" +PACKAGECONFIG[gcr] = "-Dgcr=true, -Dgcr=false, gcr" +PACKAGECONFIG[http] = "-Dhttp=true, -Dhttp=false, libsoup-2.4" +PACKAGECONFIG[libmtp] = "-Dmtp=true, -Dmtp=false, libmtp" +PACKAGECONFIG[logind] = "-Dlogind=true, -Dlogind=false, systemd" +PACKAGECONFIG[libgphoto2] = "-Dgphoto2=true, -Dgphoto2=false, libgphoto2" +PACKAGECONFIG[samba] = "-Dsmb=true, -Dsmb=false, samba" +PACKAGECONFIG[systemd] = "-Dsystemduserunitdir=${systemd_user_unitdir} -Dtmpfilesdir=${libdir}/tmpfiles.d, -Dsystemduserunitdir=no -Dtmpfilesdir=no, systemd" + +# needs meta-filesystems +PACKAGECONFIG[fuse] = "-Dfuse=true, -Dfuse=false, fuse3" + +# libcdio-paranoia recipe doesn't exist yet +PACKAGECONFIG[cdda] = "-Dcdda=true, -Dcdda=false, libcdio-paranoia" + +USERADD_PACKAGES = "${PN}" +USERADD_PARAM:${PN} = "--system --no-create-home --user-group --home-dir ${sysconfdir}/${BPN}-1 polkitd" + +do_install:append() { + if ${@bb.utils.contains('DISTRO_FEATURES', 'polkit', 'true', 'false', d)}; then + # Fix up permissions on polkit rules.d to work with rpm4 constraints + chmod 700 ${D}/${datadir}/polkit-1/rules.d + chown polkitd:root ${D}/${datadir}/polkit-1/rules.d + fi + + # After rebuilds (not from scracth) it can happen that the executables in + # libexec ar missing executable permission flag. Not sure but it came up + # during transition to meson. Looked into build files and logs but could + # not find suspicious + for exe in `find ${D}/${libexecdir}`; do + chmod +x $exe + done +} diff --git a/meta-gnome/recipes-gnome/libadwaita/libadwaita_1.1.1.bb b/meta-gnome/recipes-gnome/libadwaita/libadwaita_1.1.1.bb new file mode 100644 index 0000000..8ca3be3 --- /dev/null +++ b/meta-gnome/recipes-gnome/libadwaita/libadwaita_1.1.1.bb @@ -0,0 +1,25 @@ +SUMMARY = "Building blocks for modern GNOME applications" +LICENSE="LGPL-2.1-or-later" +LIC_FILES_CHKSUM = "file://COPYING;md5=4fbd65380cdd255951079008b364516c" + +GNOMEBASEBUILDCLASS = "meson" + +DEPENDS = " \ + sassc-native \ + gtk4 \ +" + +inherit gnomebase gobject-introspection gtk-doc vala features_check + +SRC_URI[archive.sha256sum] = "491169d4f6a11765328996bc088272d05c7235453bc0ee73c20dfd4bd67b401c" + +ANY_OF_DISTRO_FEATURES = "${GTK3DISTROFEATURES}" +REQUIRED_DISTRO_FEATURES = "opengl" + +GIR_MESON_ENABLE_FLAG = 'enabled' +GIR_MESON_DISABLE_FLAG = 'disabled' +GTKDOC_MESON_OPTION = 'gtk_doc' + +PACKAGECONFIG[examples] = "-Dexamples=true,-Dexamples=false" + +FILES:${PN} += "${datadir}/metainfo" diff --git a/meta-gnome/recipes-gnome/libgweather/libgweather4/0001-Allow-building-gir-in-cross-environments.patch b/meta-gnome/recipes-gnome/libgweather/libgweather4/0001-Allow-building-gir-in-cross-environments.patch new file mode 100644 index 0000000..6c6a643 --- /dev/null +++ b/meta-gnome/recipes-gnome/libgweather/libgweather4/0001-Allow-building-gir-in-cross-environments.patch @@ -0,0 +1,33 @@ +From 179102310e9a3729fb5b00f2a7bf24b12f4a7a83 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Andreas=20M=C3=BCller?= +Date: Sat, 16 Apr 2022 20:04:14 +0200 +Subject: [PATCH] Allow building gir in cross environments +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +For us this works perfectly fine + +Upstream-Status: Inappropriate [OE-specific] + +Signed-off-by: Andreas Müller +--- + libgweather/meson.build | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/libgweather/meson.build b/libgweather/meson.build +index 08311af..ef554f2 100644 +--- a/libgweather/meson.build ++++ b/libgweather/meson.build +@@ -208,7 +208,7 @@ lib_libgweather = library('gweather-4', + ) + + g_ir_scanner = find_program('g-ir-scanner', required: get_option('introspection')) +-build_gir = get_option('introspection') and g_ir_scanner.found() and not meson.is_cross_build() ++build_gir = get_option('introspection') and g_ir_scanner.found() + + enable_vala = get_option('enable_vala') + vapigen = find_program('vapigen', required: enable_vala == 'true') +-- +2.34.1 + diff --git a/meta-gnome/recipes-gnome/libgweather/libgweather4_4.0.0.bb b/meta-gnome/recipes-gnome/libgweather/libgweather4_4.0.0.bb new file mode 100644 index 0000000..708d27a --- /dev/null +++ b/meta-gnome/recipes-gnome/libgweather/libgweather4_4.0.0.bb @@ -0,0 +1,28 @@ +SUMMARY = "A library to access weather information from online services" + +LICENSE = "GPL-2.0-only" +LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263" + +GNOMEBASEBUILDCLASS = "meson" +GNOMEBN = "libgweather" +S = "${WORKDIR}/${GNOMEBN}-${PV}" + +inherit gnomebase gsettings gobject-introspection gettext gtk-doc vala + +SRC_URI += "file://0001-Allow-building-gir-in-cross-environments.patch" +SRC_URI[archive.sha256sum] = "440d44801b6f72b48c676e5e37f9109cfee1394fd74cc92725e1b1ba4fae834c" + +GTKDOC_MESON_OPTION = "gtk_doc" + +DEPENDS = " \ + geocode-glib \ + gtk+3 \ + json-glib \ + libsoup-2.4 \ + python3-pygobject-native \ +" + +FILES:${PN} += " \ + ${datadir}/libgweather-4 \ + ${libdir}/libgweather-4 \ +" diff --git a/meta-gnome/recipes-gnome/libgweather/libgweather_40.0.bb b/meta-gnome/recipes-gnome/libgweather/libgweather_40.0.bb deleted file mode 100644 index d67dff8..0000000 --- a/meta-gnome/recipes-gnome/libgweather/libgweather_40.0.bb +++ /dev/null @@ -1,43 +0,0 @@ -SUMMARY = "Location and timezone database and weather lookup library" -HOMEPAGE = "https://wiki.gnome.org/Projects/LibGWeather" -LICENSE = "GPL-2.0-only" -LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263" - -GNOMEBASEBUILDCLASS = "meson" - -inherit gnomebase meson pkgconfig gobject-introspection gettext features_check - -SRC_URI[archive.sha256sum] = "ca4e8f2a4baaa9fc6d75d8856adb57056ef1cd6e55c775ba878ae141b6276ee6" - -DEPENDS = "gtk+3 libxml2 libsoup-2.4 glib-2.0 python3-pygobject-native itstool-native geocode-glib glib-2.0-native" - -# gobject-introspection is mandatory and cannot be configured -REQUIRED_DISTRO_FEATURES = "gobject-introspection-data" -GIR_MESON_OPTION = "" - -GTKDOC_MESON_OPTION = "gtk_doc" - -FILES:${PN} += "${datadir}/glib-2.0/schemas" - - -SECTION ?= "x11/gnome" - -FILES:${PN} += "${datadir}/application-registry \ - ${datadir}/mime-info \ - ${datadir}/mime/packages \ - ${datadir}/mime/application \ - ${datadir}/gnome-2.0 \ - ${datadir}/polkit* \ - ${datadir}/GConf \ - ${datadir}/glib-2.0/schemas \ - ${datadir}/appdata \ - ${datadir}/icons \ -" - -FILES:${PN}-doc += "${datadir}/devhelp" - -do_install:append() { - rm -rf ${D}${localstatedir}/lib/scrollkeeper/* - rm -rf ${D}${localstatedir}/scrollkeeper/* - rm -f ${D}${datadir}/applications/*.cache -} diff --git a/meta-gnome/recipes-gnome/mutter/mutter_41.1.bb b/meta-gnome/recipes-gnome/mutter/mutter_42.1.bb similarity index 93% rename from meta-gnome/recipes-gnome/mutter/mutter_41.1.bb rename to meta-gnome/recipes-gnome/mutter/mutter_42.1.bb index 84a7682..7cded5b 100644 --- a/meta-gnome/recipes-gnome/mutter/mutter_41.1.bb +++ b/meta-gnome/recipes-gnome/mutter/mutter_42.1.bb @@ -37,10 +37,10 @@ DEPENDS = " \ RDEPENDS:${PN} += " xwayland zenity" -SRCREV = "7cab502754edef977215bdfc9f8dfa0849a426f3" +SRCREV = "56e7b774e9a2ea215d02cb1ac88a8cfa74b5a4a6" EXTERNAL_TREE_VAR="CITADEL_MUTTER_PATH" -GIT_URI = "git://github.com/brl/mutter.git;branch=citadel;protocol=https" +GIT_URI = "git://github.com/brl/mutter.git;branch=citadel-42.1;protocol=https" GNOMEBASEBUILDCLASS = "meson" @@ -65,7 +65,7 @@ EXTRA_OEMESON += " \ -Dgles2_libname=libGLESv2.so.2 \ " -MUTTER_API_NAME = "mutter-9" +MUTTER_API_NAME = "mutter-10" do_install:append() { # Add gir links in standard paths. That makes dependents life much easier diff --git a/meta-gnome/recipes-gnome/network-manager-applet/network-manager-applet_1.18.0.bb b/meta-gnome/recipes-gnome/network-manager-applet/network-manager-applet_1.26.0.bb similarity index 83% rename from meta-gnome/recipes-gnome/network-manager-applet/network-manager-applet_1.18.0.bb rename to meta-gnome/recipes-gnome/network-manager-applet/network-manager-applet_1.26.0.bb index 760c514..8046b13 100644 --- a/meta-gnome/recipes-gnome/network-manager-applet/network-manager-applet_1.18.0.bb +++ b/meta-gnome/recipes-gnome/network-manager-applet/network-manager-applet_1.26.0.bb @@ -9,14 +9,14 @@ inherit features_check gnomebase gsettings gtk-icon-cache gettext REQUIRED_DISTRO_FEATURES = "x11" -SRC_URI[archive.sha256sum] = "ddbb400ace804b59cc513611ce9701f7ef3f00de151dbbfb96284c8c1ef2b18b" +SRC_URI[archive.sha256sum] = "69611b29064adbd57395fe3e51a9ebde1ea794615f776900453a2bbe3d8cddfd" # We don't not have ubuntu's appindicator (yet?) EXTRA_OEMESON = "-Dappindicator=no" # We currently don't build NetworkManager with libteamdctl support EXTRA_OEMESON += "-Dteam=false" -PACKAGECONFIG ??= "" +PACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES', 'selinux', d)}" PACKAGECONFIG[modemmanager] = "-Dwwan=true, -Dwwan=false, modemmanager" PACKAGECONFIG[selinux] = "-Dselinux=true, -Dselinux=false, libselinux" diff --git a/meta-gnome/recipes-gnome/yelp/yelp-tools_3.32.2.bb b/meta-gnome/recipes-gnome/yelp/yelp-tools_42.0.bb similarity index 65% rename from meta-gnome/recipes-gnome/yelp/yelp-tools_3.32.2.bb rename to meta-gnome/recipes-gnome/yelp/yelp-tools_42.0.bb index 9b4e083..a5da859 100644 --- a/meta-gnome/recipes-gnome/yelp/yelp-tools_3.32.2.bb +++ b/meta-gnome/recipes-gnome/yelp/yelp-tools_42.0.bb @@ -5,17 +5,19 @@ LIC_FILES_CHKSUM = " \ file://COPYING.GPL;md5=eb723b61539feef013de476e68b5c50a \ " +GNOMEBASEBUILDCLASS = "meson" + inherit gnomebase itstool DEPENDS += " \ libxslt-native \ libxml2-native \ + python3-lxml-native \ yelp-xsl \ " -SRC_URI[archive.md5sum] = "7856f9ad0492aaf9adf097f5058bfc2e" -SRC_URI[archive.sha256sum] = "183856b5ed0b0bb2c05dd1204af023946ed436943e35e789afb0295e5e71e8f9" +SRC_URI[archive.sha256sum] = "2cd43063ffa7262df15dd8d379aa3ea3999d42661f07563f4802daa1149f7df4" -RDEPENDS:${PN} += "yelp-xsl" +RDEPENDS:${PN} += "python3-core yelp-xsl" BBCLASSEXTEND = "native" diff --git a/meta-gnome/recipes-gnome/yelp/yelp-xsl_3.36.0.bb b/meta-gnome/recipes-gnome/yelp/yelp-xsl_42.0.bb similarity index 64% rename from meta-gnome/recipes-gnome/yelp/yelp-xsl_3.36.0.bb rename to meta-gnome/recipes-gnome/yelp/yelp-xsl_42.0.bb index bf60129..54a6aa6 100644 --- a/meta-gnome/recipes-gnome/yelp/yelp-xsl_3.36.0.bb +++ b/meta-gnome/recipes-gnome/yelp/yelp-xsl_42.0.bb @@ -1,7 +1,7 @@ SUMMARY = "XSL stylesheets for the yelp help browser" -LICENSE = "LGPL-2.1-only & GPL-2.0-only" +LICENSE = "LGPL-2.1-only & GPL-2.0-only & BSD-3-Clause" LIC_FILES_CHKSUM = " \ - file://COPYING;md5=3e2bad3c5e3990988f9fa1bc5785b147 \ + file://COPYING;md5=8ca13a5a6972ac1620a1e42a3dacd774 \ file://COPYING.GPL;md5=eb723b61539feef013de476e68b5c50a \ file://COPYING.LGPL;md5=a6f89e2100d9b6cdffcea4f398e37343 \ " @@ -10,8 +10,7 @@ inherit gnomebase gettext itstool DEPENDS += "libxml2" -SRC_URI[archive.md5sum] = "7d71af68fff4a92bcb2b8989f126be6c" -SRC_URI[archive.sha256sum] = "4fe51c0233b79a4c204c68498d45f09b342c30ed02c4e418506c0e35f0904ec3" +SRC_URI[archive.sha256sum] = "29b273cc0bd16efb6e983443803f1e9fdc03511e5c4ff6348fd30a604d4dc846" RDEPENDS:${PN}:append:class-target = " libxml2 itstool" diff --git a/meta-gnome/recipes-gnome/yelp/yelp_3.36.0.bb b/meta-gnome/recipes-gnome/yelp/yelp_42.1.bb similarity index 73% rename from meta-gnome/recipes-gnome/yelp/yelp_3.36.0.bb rename to meta-gnome/recipes-gnome/yelp/yelp_42.1.bb index cc826cc..ab8b9c3 100644 --- a/meta-gnome/recipes-gnome/yelp/yelp_3.36.0.bb +++ b/meta-gnome/recipes-gnome/yelp/yelp_42.1.bb @@ -9,8 +9,7 @@ inherit gnomebase itstool autotools-brokensep gsettings gettext gtk-doc features # for webkitgtk REQUIRED_DISTRO_FEATURES = "x11" -SRC_URI[archive.md5sum] = "32f879293f79b4042edc46aa13d82c71" -SRC_URI[archive.sha256sum] = "fd4b3e23d31ad2bebe42ac8f80242b2d9bef51418bf62b59acdf2440bd94ed24" +SRC_URI[archive.sha256sum] = "25b1146ab8549888a5a8da067f63b470b0f0f800b6ae889cacd114d01d713b41" DEPENDS += " \ libxml2-native \ @@ -19,9 +18,14 @@ DEPENDS += " \ appstream-glib \ libxslt \ sqlite3 \ + libhandy \ webkitgtk \ yelp-xsl \ " +PACKAGECONFIG ?= "" + +# Enable if soup3 is enabled in webkit recipe +PACKAGECONFIG[soup3] = ",--with-webkit2gtk-4-0," do_configure:prepend() { export ITSTOOL=${STAGING_BINDIR_NATIVE}/itstool diff --git a/meta-gnome/recipes-gnome/zenity/zenity/0001-Don-t-build-help.patch b/meta-gnome/recipes-gnome/zenity/zenity/0001-Don-t-build-help.patch deleted file mode 100644 index 93b9cee..0000000 --- a/meta-gnome/recipes-gnome/zenity/zenity/0001-Don-t-build-help.patch +++ /dev/null @@ -1,26 +0,0 @@ -From badb3369dbaaa3a14a7e4415077de3c3c13f4581 Mon Sep 17 00:00:00 2001 -From: brl -Date: Tue, 12 Dec 2017 19:18:11 -0500 -Subject: [PATCH] Don't build help - ---- - Makefile.am | 3 +-- - 1 file changed, 1 insertion(+), 2 deletions(-) - -diff --git a/Makefile.am b/Makefile.am -index df84b81..c948125 100644 ---- a/Makefile.am -+++ b/Makefile.am -@@ -4,8 +4,7 @@ INCLUDES = src - SUBDIRS = \ - src \ - po \ -- data \ -- help -+ data - - EXTRA_DIST = \ - autogen.sh \ --- -2.14.3 - diff --git a/meta-gnome/recipes-gnome/zenity/zenity/0001-Harcode-shebang-to-avoid-pointing-to-build-system-s-.patch b/meta-gnome/recipes-gnome/zenity/zenity/0001-Harcode-shebang-to-avoid-pointing-to-build-system-s-.patch new file mode 100644 index 0000000..e054ff7 --- /dev/null +++ b/meta-gnome/recipes-gnome/zenity/zenity/0001-Harcode-shebang-to-avoid-pointing-to-build-system-s-.patch @@ -0,0 +1,28 @@ +From c8be0d5e7d17930d819635df6570fa5331a5dedd Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Andreas=20M=C3=BCller?= +Date: Mon, 10 Jan 2022 20:18:00 +0100 +Subject: [PATCH] Harcode shebang to avoid pointing to build system's perl +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Upstream-Status: Pending + +Signed-off-by: Andreas Müller +--- + src/gdialog.in | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/gdialog.in b/src/gdialog.in +index 2fc4633..f891861 100755 +--- a/src/gdialog.in ++++ b/src/gdialog.in +@@ -1,4 +1,4 @@ +-#!@PERL@ ++#!/usr/bin/env perl + + # gdialog -> zenity conversion wrapper + # +-- +2.31.1 + diff --git a/meta-gnome/recipes-gnome/zenity/zenity/0002-Don-t-include-gdialog.patch b/meta-gnome/recipes-gnome/zenity/zenity/0002-Don-t-include-gdialog.patch deleted file mode 100644 index 8a958d3..0000000 --- a/meta-gnome/recipes-gnome/zenity/zenity/0002-Don-t-include-gdialog.patch +++ /dev/null @@ -1,36 +0,0 @@ -From 34427159313638292e6f06b18137c7de4de65ea3 Mon Sep 17 00:00:00 2001 -From: brl -Date: Tue, 12 Dec 2017 20:13:06 -0500 -Subject: [PATCH] Don't include gdialog - ---- - src/Makefile.am | 9 +-------- - 1 file changed, 1 insertion(+), 8 deletions(-) - -diff --git a/src/Makefile.am b/src/Makefile.am -index bcdd205..ff70892 100644 ---- a/src/Makefile.am -+++ b/src/Makefile.am -@@ -1,7 +1,5 @@ - bin_PROGRAMS = zenity - --bin_SCRIPTS = gdialog -- - zenity_SOURCES = \ - about.c \ - calendar.c \ -@@ -48,10 +46,5 @@ uidir = $(datadir)/zenity - ui_DATA = \ - zenity.ui - --DISTCLEANFILES= \ -- gdialog -- - EXTRA_DIST = \ -- $(ui_DATA) \ -- gdialog \ -- gdialog.in -+ $(ui_DATA) --- -2.14.3 - diff --git a/meta-gnome/recipes-gnome/zenity/zenity_3.30.0.bb b/meta-gnome/recipes-gnome/zenity/zenity_3.30.0.bb deleted file mode 100644 index 4fceb06..0000000 --- a/meta-gnome/recipes-gnome/zenity/zenity_3.30.0.bb +++ /dev/null @@ -1,16 +0,0 @@ -SUMMARY = "GNOME port of Dialog to display dialog boxes from shell scripts" -LICENSE = "LGPL-2.0-only" -LIC_FILES_CHKSUM = "file://COPYING;md5=3bf50002aefd002f49e7bb854063f7e7" - -inherit gnomebase gtk-icon-cache gconf mime perlnative gettext - -SRC_URI[archive.md5sum] = "b2180f4ef4fcb2ee90da8c65bd5241af" -SRC_URI[archive.sha256sum] = "995ef696616492c40be6da99919851d41faed6643a97c9d24743b46bc8b537f2" - -SRC_URI += "file://0001-Don-t-build-help.patch \ - file://0002-Don-t-include-gdialog.patch \ - " -DEPENDS = "libx11 libnotify glib-2.0 gtk+3 gnome-common autoconf-archive" - -EXTRA_OECONF = "" -BBCLASSEXTEND = "native" diff --git a/meta-gnome/recipes-gnome/zenity/zenity_3.42.1.bb b/meta-gnome/recipes-gnome/zenity/zenity_3.42.1.bb new file mode 100644 index 0000000..d48eb82 --- /dev/null +++ b/meta-gnome/recipes-gnome/zenity/zenity_3.42.1.bb @@ -0,0 +1,25 @@ +SUMMARY = "Display dialog boxes from the command line and shell scripts" +SECTION = "x11/gnome" +LICENSE = "LGPL-2.1-or-later" +LIC_FILES_CHKSUM = "file://COPYING;md5=4fbd65380cdd255951079008b364516c" + +GNOMEBASEBUILDCLASS = "meson" + +inherit gnomebase pkgconfig itstool gnome-help features_check gettext + +DEPENDS = " \ + yelp-tools-native \ + gtk+3 \ +" + +REQUIRED_DISTRO_FEATURES = "x11" + +SRC_URI[archive.sha256sum] = "a08e0c8e626615ee2c23ff74628eba6f8b486875dd54371ca7e2d7605b72a87c" +SRC_URI += "file://0001-Harcode-shebang-to-avoid-pointing-to-build-system-s-.patch" + +PACKAGECONFIG[libnotify] = "-Dlibnotify=true,-Dlibnotify=false,libnotify" +PACKAGECONFIG[webkitgtk] = "-Dwebkitgtk=true,-Dwebkitgtk=false,webkitgtk" + +PACKAGES =+ "${PN}-gdialog" +FILES:${PN}-gdialog = "${bindir}/gdialog" +RDEPENDS:${PN}-gdialog += "perl" diff --git a/meta-gnome/recipes-support/duktape/duktape_2.7.0.bb b/meta-gnome/recipes-support/duktape/duktape_2.7.0.bb new file mode 100644 index 0000000..7674785 --- /dev/null +++ b/meta-gnome/recipes-support/duktape/duktape_2.7.0.bb @@ -0,0 +1,20 @@ +SUMMARY = "Duktape embeddable Javascript engine" +DESCRIPTION = "Duktape is an embeddable Javascript engine, with a focus on portability and compact footprint." +HOMEPAGE = "https://duktape.org" +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=3b7825df97b52f926fc71300f7880408" + +SRC_URI = "https://duktape.org/duktape-${PV}.tar.xz" +SRC_URI[sha256sum] = "90f8d2fa8b5567c6899830ddef2c03f3c27960b11aca222fa17aa7ac613c2890" + +EXTRA_OEMAKE = "INSTALL_PREFIX='${prefix}' DESTDIR='${D}' LIBDIR='/${baselib}'" + +do_compile () { + oe_runmake -f Makefile.sharedlibrary INSTALL_PREFIX="${prefix}" DESTDIR="${D}" +} + +do_install () { + oe_runmake -f Makefile.sharedlibrary INSTALL_PREFIX="${prefix}" DESTDIR="${D}" install + # libduktaped is identical to libduktape but has an hard-coded -g build flags, remove it + rm -f ${D}${libdir}/libduktaped.so* +} diff --git a/meta-gnome/recipes-support/ell/ell/0001-pem.c-do-not-use-rawmemchr.patch b/meta-gnome/recipes-support/ell/ell/0001-pem.c-do-not-use-rawmemchr.patch deleted file mode 100644 index f0ce6f1..0000000 --- a/meta-gnome/recipes-support/ell/ell/0001-pem.c-do-not-use-rawmemchr.patch +++ /dev/null @@ -1,27 +0,0 @@ -From 277e1eca67fcc23cb31be7b826d83a19d9b89bd2 Mon Sep 17 00:00:00 2001 -From: Alexander Kanavin -Date: Tue, 22 Dec 2020 10:30:54 +0000 -Subject: [PATCH] pem.c: do not use rawmemchr() - -This is a glibc-only function, and causes build failures with -alternative libc implementations such as musl. - -Upstream-Status: Pending -Signed-off-by: Alexander Kanavin ---- - ell/pem.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/ell/pem.c b/ell/pem.c -index 790f2c2..237ae02 100644 ---- a/ell/pem.c -+++ b/ell/pem.c -@@ -224,7 +224,7 @@ static uint8_t *pem_load_buffer(const void *buf, size_t buf_len, - - /* Check that each header line has a key and a colon */ - while (start < end) { -- const char *lf = rawmemchr(start, '\n'); -+ const char *lf = memchr(start, '\n', end - start); - const char *colon = memchr(start, ':', lf - start); - - if (!colon) diff --git a/meta-gnome/recipes-support/ell/ell_0.44.bb b/meta-gnome/recipes-support/ell/ell_0.50.bb similarity index 84% rename from meta-gnome/recipes-support/ell/ell_0.44.bb rename to meta-gnome/recipes-support/ell/ell_0.50.bb index 21406ad..243ac01 100644 --- a/meta-gnome/recipes-support/ell/ell_0.44.bb +++ b/meta-gnome/recipes-support/ell/ell_0.50.bb @@ -15,9 +15,8 @@ DEPENDS = "dbus" inherit autotools pkgconfig SRC_URI = "https://mirrors.edge.kernel.org/pub/linux/libs/${BPN}/${BPN}-${PV}.tar.xz \ - file://0001-pem.c-do-not-use-rawmemchr.patch \ " -SRC_URI[sha256sum] = "41a6f8fa4d285b52cb7a5a87bda3e7370ecaac02d94aaa7ec1a23f0480b8bc3f" +SRC_URI[sha256sum] = "0fe51d51c6eddc2a2784092f1dfdd1143a5ef27f15c274ecfbadd680d3a72fd9" do_configure:prepend () { mkdir -p ${S}/build-aux diff --git a/meta-gnome/recipes-support/libnma/libnma_1.8.30.bb b/meta-gnome/recipes-support/libnma/libnma_1.8.38.bb similarity index 82% rename from meta-gnome/recipes-support/libnma/libnma_1.8.30.bb rename to meta-gnome/recipes-support/libnma/libnma_1.8.38.bb index 96e16f6..75c704b 100644 --- a/meta-gnome/recipes-support/libnma/libnma_1.8.30.bb +++ b/meta-gnome/recipes-support/libnma/libnma_1.8.38.bb @@ -2,7 +2,7 @@ SUMMARY = "NetworkManager GUI library" LICENSE = "GPL-2.0-only" LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263" -DEPENDS = "glib-2.0 gtk+3 networkmanager" +DEPENDS = "glib-2.0 gtk+3 gtk4 networkmanager" GNOMEBASEBUILDCLASS = "meson" inherit gnomebase gobject-introspection gtk-doc gettext vala features_check @@ -10,14 +10,16 @@ inherit gnomebase gobject-introspection gtk-doc gettext vala features_check REQUIRED_DISTRO_FEATURES = "${@bb.utils.contains('PACKAGECONFIG','gcr','x11','',d)}" ANY_OF_DISTRO_FEATURES = "${GTK3DISTROFEATURES}" -SRC_URI[archive.md5sum] = "e1ccac96405861ecab195be5524baae6" -SRC_URI[archive.sha256sum] = "da33e72a49e07d855d97a52aa9a8962a4c96f52b9168c4e0027117ad8ffdafb4" +SRC_URI[archive.sha256sum] = "5ed93eae18456ff5a8a4f408178c1ee198dc8d3a46c65f9075b101916e64e8b4" PACKAGECONFIG ?= "gcr iso_codes mobile_broadband_provider_info" PACKAGECONFIG[gcr] = "-Dgcr=true,-Dgcr=false,gcr" PACKAGECONFIG[iso_codes] = "-Diso_codes=true,-Diso_codes=false,iso-codes,iso-codes" PACKAGECONFIG[mobile_broadband_provider_info] = "-Dmobile_broadband_provider_info=true,-Dmobile_broadband_provider_info=false,mobile-broadband-provider-info,mobile-broadband-provider-info" +# for gnome-control-center >= 42 +EXTRA_OEMESON = "-Dlibnma_gtk4=true" + # go introspection is not supported for mipsn32/riscv32, but vapi needs it # EXTRA_OEMESON:append:mipsarchn32 = " -Dvapi=false" diff --git a/meta-gnome/recipes-support/mm/pangomm_2.42.1.bb b/meta-gnome/recipes-support/mm/pangomm_2.42.1.bb deleted file mode 100644 index 829c0b4..0000000 --- a/meta-gnome/recipes-support/mm/pangomm_2.42.1.bb +++ /dev/null @@ -1,23 +0,0 @@ -SUMMARY = "C++ bindings for the pango library" -SECTION = "libs" -LICENSE = "LGPL-2.1-only & GPL-2.0-only" -LIC_FILES_CHKSUM = "file://COPYING;md5=d8045f3b8f929c1cb29a1e3fd737b499 \ - file://COPYING.tools;md5=751419260aa954499f7abaabaa882bbe" - -DEPENDS = "mm-common cairomm glibmm pango" - -SHRT_VER = "${@d.getVar('PV').split('.')[0]}.${@d.getVar('PV').split('.')[1]}" - -SRC_URI = "http://ftp.gnome.org/pub/GNOME/sources/pangomm/${SHRT_VER}/pangomm-${PV}.tar.xz" -SRC_URI[md5sum] = "339c48dd92ebd3a9911b231708f7a819" -SRC_URI[sha256sum] = "14bf04939930870d5cfa96860ed953ad2ce07c3fd8713add4a1bfe585589f40f" - -inherit features_check autotools pkgconfig - -REQUIRED_DISTRO_FEATURES = "x11" - -EXTRA_OECONF = " --disable-documentation " - -FILES:${PN} = "${libdir}/lib*.so.*" -FILES:${PN}-dev += "${libdir}/*/include/ ${libdir}/pangomm-*/" - diff --git a/meta-gnome/recipes-support/mm/pangomm_2.46.2.bb b/meta-gnome/recipes-support/mm/pangomm_2.46.2.bb new file mode 100644 index 0000000..42074c1 --- /dev/null +++ b/meta-gnome/recipes-support/mm/pangomm_2.46.2.bb @@ -0,0 +1,19 @@ +SUMMARY = "C++ bindings for the pango library" +SECTION = "libs" +LICENSE = "LGPL-2.1-only & GPL-2.0-only" +LIC_FILES_CHKSUM = "file://COPYING;md5=d8045f3b8f929c1cb29a1e3fd737b499 \ + file://COPYING.tools;md5=751419260aa954499f7abaabaa882bbe" + +DEPENDS = "mm-common cairomm glibmm pango" + +GNOMEBASEBUILDCLASS = "meson" + +inherit gnomebase features_check + +ANY_OF_DISTRO_FEATURES = "${GTK3DISTROFEATURES}" + +SRC_URI[archive.sha256sum] = "57442ab4dc043877bfe3839915731ab2d693fc6634a71614422fb530c9eaa6f4" + +FILES:${PN} = "${libdir}/lib*.so.*" +FILES:${PN}-dev += "${libdir}/*/include/ ${libdir}/pangomm-*/" +