diff --git a/debian/bin/gencontrol.py b/debian/bin/gencontrol.py index a8fd590..79866c8 100755 --- a/debian/bin/gencontrol.py +++ b/debian/bin/gencontrol.py @@ -221,27 +221,17 @@ class Gencontrol(Base): do_meta = config.packages.meta relation_compiler = PackageRelationEntry(cast(str, config.build.compiler)) + relation_compiler_host = PackageRelationEntry( + relation_compiler, + name=f'{relation_compiler.name}-for-host', + ) - relation_compiler_header = PackageRelationGroup([relation_compiler]) - - # Generate compiler build-depends for native: - # gcc-N [arm64] <!cross !pkg.linux.nokernel> + # Generate compiler build-depends: self.bundle.source.build_depends_arch.merge([ PackageRelationEntry( - relation_compiler, + relation_compiler_host, arches={arch}, - restrictions='<!cross !pkg.linux.nokernel>', - ) - ]) - - # Generate compiler build-depends for cross: - # gcc-N-aarch64-linux-gnu [arm64] <cross !pkg.linux.nokernel> - self.bundle.source.build_depends_arch.merge([ - PackageRelationEntry( - relation_compiler, - name=f'{relation_compiler.name}-{config.defs_debianarch.gnutype_package}', - arches={arch}, - restrictions='<cross !pkg.linux.nokernel>', + restrictions='<!pkg.linux.nokernel>', ) ]) @@ -307,7 +297,7 @@ class Gencontrol(Base): desc.append(config.description.long[part]) desc.append_short(config.description.short[part]) - packages_headers[0].depends.merge(relation_compiler_header) + packages_headers[0].depends.merge([relation_compiler_host]) packages_own.extend(packages_image) packages_own.extend(packages_headers) diff --git a/debian/lib/python/debian_linux/debian.py b/debian/lib/python/debian_linux/debian.py index 4a72853..9ba06f1 100644 --- a/debian/lib/python/debian_linux/debian.py +++ b/debian/lib/python/debian_linux/debian.py @@ -457,6 +457,8 @@ class PackageBuildprofileEntry: ret.neg.add(i[1:]) else: ret.pos.add(i) + if ret.pos & ret.neg: + raise ValueError return ret def __eq__(self, other: object, /) -> bool: @@ -487,7 +489,7 @@ class PackageBuildprofileEntry: return self.pos <= other.pos and self.neg >= other.neg __ge__ = issuperset - def update(self, other: Self, /) -> None: + def update(self, other: Self, /) -> Self: ''' Update the build profiles, adding entries from other, merging if possible. @@ -495,11 +497,30 @@ class PackageBuildprofileEntry: All others remain if they are used on both sides. ''' diff = (self.pos & other.neg) | (self.neg & other.pos) - self.pos &= other.pos - diff - self.neg &= other.neg - diff + self.pos &= other.pos + self.neg &= other.neg + self.pos -= diff + self.neg -= diff + return self __ior__ = update + def intersection_update(self, other: Self, /) -> Self: + ''' + Update the build profiles, creating an intersection of both. + + Negating entries (profile vs !profile) are completely removed. + All others remain. + ''' + diff = (self.pos & other.neg) | (self.neg & other.pos) + self.pos |= other.pos + self.neg |= other.neg + self.pos -= diff + self.neg -= diff + return self + __iand__ = intersection_update + def __len__(self) -> int: + return len(self.pos) + len(self.neg) def __str__(self) -> str: @@ -522,7 +543,7 @@ class PackageBuildprofile(list[PackageBuildprofileEntry]): ret.append(PackageBuildprofileEntry.parse(match.group('entry'))) return ret - def update(self, v: Self, /) -> None: + def update(self, v: Self, /) -> Self: for i in v: for j in self: if not j.isdisjoint(i): @@ -530,8 +551,21 @@ class PackageBuildprofile(list[PackageBuildprofileEntry]): break else: self.append(i) + return self __ior__ = update + def intersection_update(self, v: Self, /) -> Self: + if len(v) > 1: + raise ValueError + for i in v: + if self: + for j in self: + j.intersection_update(i) + else: + self.append(i) + return self + __iand__ = intersection_update + def __str__(self) -> str: return ' '.join(f'<{str(i)}>' for i in self if i) diff --git a/debian/lib/python/debian_linux/gencontrol.py b/debian/lib/python/debian_linux/gencontrol.py index 386d4e2..709146e 100644 --- a/debian/lib/python/debian_linux/gencontrol.py +++ b/debian/lib/python/debian_linux/gencontrol.py @@ -346,8 +346,7 @@ class PackagesBundle: for item in group: if package.architecture != arch_all and not item.arches: item.arches = package.architecture - if package.build_profiles and not item.restrictions: - item.restrictions = package.build_profiles + item.restrictions &= package.build_profiles build_dep.merge(group) def write(self) -> None: diff --git a/debian/patches/bugfix/all/ALSA-hda-realtek-Fix-built-in-mic-on-another-ASUS-Vi.patch b/debian/patches/bugfix/all/ALSA-hda-realtek-Fix-built-in-mic-on-another-ASUS-Vi.patch new file mode 100644 index 0000000..d6a1d60 --- /dev/null +++ b/debian/patches/bugfix/all/ALSA-hda-realtek-Fix-built-in-mic-on-another-ASUS-Vi.patch @@ -0,0 +1,34 @@ +From: Takashi Iwai <tiwai@suse.de> +Date: Wed, 2 Apr 2025 09:42:07 +0200 +Subject: ALSA: hda/realtek: Fix built-in mic on another ASUS VivoBook model +Origin: https://git.kernel.org/linus/8983dc1b66c0e1928a263b8af0bb06f6cb9229c4 +Bug-Debian: https://bugs.debian.org/1100928 + +There is another VivoBook model which built-in mic got broken recently +by the fix of the pin sort. Apply the correct quirk +ALC256_FIXUP_ASUS_MIC_NO_PRESENCE to this model for addressing the +regression, too. + +Fixes: 3b4309546b48 ("ALSA: hda: Fix headset detection failure due to unstable sort") +Closes: https://lore.kernel.org/Z95s5T6OXFPjRnKf@eldamar.lan +Link: https://patch.msgid.link/20250402074208.7347-1-tiwai@suse.de +Signed-off-by: Takashi Iwai <tiwai@suse.de> +--- + sound/pci/hda/patch_realtek.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c +index eec3ea1a7e08..79004bc8107b 100644 +--- a/sound/pci/hda/patch_realtek.c ++++ b/sound/pci/hda/patch_realtek.c +@@ -10889,6 +10889,7 @@ static const struct hda_quirk alc269_fixup_tbl[] = { + SND_PCI_QUIRK(0x1043, 0x1c43, "ASUS UX8406MA", ALC245_FIXUP_CS35L41_SPI_2), + SND_PCI_QUIRK(0x1043, 0x1c62, "ASUS GU603", ALC289_FIXUP_ASUS_GA401), + SND_PCI_QUIRK(0x1043, 0x1c63, "ASUS GU605M", ALC285_FIXUP_ASUS_GU605_SPI_SPEAKER2_TO_DAC1), ++ SND_PCI_QUIRK(0x1043, 0x1c80, "ASUS VivoBook TP401", ALC256_FIXUP_ASUS_MIC_NO_PRESENCE), + SND_PCI_QUIRK(0x1043, 0x1c92, "ASUS ROG Strix G15", ALC285_FIXUP_ASUS_G533Z_PINS), + SND_PCI_QUIRK(0x1043, 0x1c9f, "ASUS G614JU/JV/JI", ALC285_FIXUP_ASUS_HEADSET_MIC), + SND_PCI_QUIRK(0x1043, 0x1caf, "ASUS G634JY/JZ/JI/JG", ALC285_FIXUP_ASUS_SPI_REAR_SPEAKERS), +-- +2.49.0 + diff --git a/debian/patches/series b/debian/patches/series index 8cfaa85..5e5d9fa 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -69,6 +69,7 @@ features/x86/x86-make-x32-syscall-support-conditional.patch bugfix/all/disable-some-marvell-phys.patch bugfix/all/fs-add-module_softdep-declarations-for-hard-coded-cr.patch bugfix/all/documentation-use-relative-source-paths-in-abi-documentation.patch +bugfix/all/ALSA-hda-realtek-Fix-built-in-mic-on-another-ASUS-Vi.patch # Miscellaneous features diff --git a/debian/templates/tools-unversioned.control.in b/debian/templates/tools-unversioned.control.in index 5d25e92..168f696 100644 --- a/debian/templates/tools-unversioned.control.in +++ b/debian/templates/tools-unversioned.control.in @@ -4,7 +4,7 @@ Build-Profiles: <!pkg.linux.notools !pkg.linux.mintools> Section: devel Architecture: linux-any Build-Depends: - python3-docutils <!pkg.linux.notools>, + python3-docutils, binutils-dev [hppa], libelf-dev, zlib1g-dev, @@ -64,7 +64,7 @@ Build-Profiles: <!pkg.linux.notools !pkg.linux.mintools !nopython> Section: devel Architecture: alpha amd64 arm64 armel armhf hppa i386 loong64 mips mips64 mips64el mipsel mipsn32 mipsn32el mipsr6 mipsr6el mipsn32r6 mipsn32r6el mips64r6 mips64r6el powerpc ppc64 ppc64el riscv64 s390 s390x sh4 sparc sparc64 Build-Depends: - asciidoctor <!pkg.linux.notools !nopython>, + asciidoctor, gcc-multilib [amd64 mips64 mips64el mips64r6 mips64r6el ppc64 s390x sparc64] <!cross>, g++-multilib [amd64 mips64 mips64el mips64r6 mips64r6el ppc64 s390x sparc64] <!cross>, libaudit-dev,