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,