linux-hwe-6.14: restore udebs on 6.14 branch

This commit is contained in:
Luis Guzmán 2026-02-19 18:11:31 -06:00
parent 29b3357597
commit aae253a2b9
7 changed files with 184 additions and 118 deletions

View file

@ -1,67 +0,0 @@
diff --git a/debian/rules b/debian/rules
index a625a4c5..35f2aa25 100755
--- a/debian/rules
+++ b/debian/rules
@@ -176,6 +176,9 @@ debian/control: debian/canonical-revoked-certs.pem $(DEBIAN)/changelog FORCE
-e 's|\(^Maintainer:.*\)|\1\nXSC-Ubuntu-Compatible-Signing: $(UBUNTU_COMPATIBLE_SIGNING)|g' \
-e 's/\(^Build-Depends:$$\)/\1\n$(GCC_BUILD_DEPENDS)/g' \
$@
+ KW_DEFCONFIG_DIR=$(DEBIAN)/d-i KW_CONFIG_DIR=$(DEBIAN)/d-i \
+ LANG=C kernel-wedge gen-control $(DEB_VERSION_UPSTREAM)-$(abinum) | \
+ grep-dctrl -FArchitecture $(arch) >> $@
debian/canonical-certs.pem: $(wildcard debian/certs/*.pem $(DEBIAN)/certs/*.pem)
for cert in $(sort $(notdir $^)); \
diff --git a/debian/rules b/debian/rules_
index a625a4c5..1d9b5834 100755
--- a/debian/rules
+++ b/debian/rules_
@@ -129,10 +129,10 @@ do_any_tools=$(sort $(filter-out false,$(do_linux_tools) $(do_cloud_tools)))
# Debian Build System targets
.PHONY: binary
-binary: binary-indep binary-arch
+binary: debian/control binary-indep binary-arch
.PHONY: build
-build: build-arch build-indep
+build: debian/control build-arch build-indep
.PHONY: clean
clean: debian/control debian/canonical-certs.pem debian/canonical-revoked-certs.pem
@@ -140,6 +140,11 @@ clean: debian/control debian/canonical-certs.pem debian/canonical-revoked-certs.
dh_testroot
dh_clean
+ # d-i stuff
+ rm -rf $(DEBIAN)/d-i-$(arch)
+ # Generated on the fly.
+ rm -f $(DEBIAN)/d-i/firmware/$(arch)/kernel-image
+
# normal build junk
rm -rf $(DEBIAN)/abi
rm -rf $(builddir) $(stampdir)
diff --git a/debian/rules.d/2-binary-arch.mk b/debian/rules.d/2-binary-arch.mk
index 41985338..3943d0da 100644
--- a/debian/rules.d/2-binary-arch.mk
+++ b/debian/rules.d/2-binary-arch.mk
@@ -181,10 +181,14 @@ endif
install -m600 $(build_dir)/System.map \
$(pkgdir)/boot/System.map-$(abi_release)-$*
-ifeq ($(do_dtbs),true)
- $(kmake) O=$(build_dir) $(conc_level) dtbs_install \
- INSTALL_DTBS_PATH=$(pkgdir)/lib/firmware/$(abi_release)-$*/device-tree
-endif
+ if [ "$(filter true,$(do_dtbs))" ]; then \
+ $(kmake) O=$(build_dir) $(conc_level) dtbs_install \
+ INSTALL_DTBS_PATH=$(pkgdir)/lib/firmware/$(abi_release)-$*/device-tree; \
+ ( cd $(pkgdir)/lib/firmware/$(abi_release)-$*/ && find device-tree -print ) | \
+ while read dtb_file; do \
+ echo "$$dtb_file ?" >> $(DEBIAN)/d-i/firmware/$(arch)/kernel-image; \
+ done; \
+ fi
ifeq ($(no_dumpfile),)
makedumpfile -g $(pkgdir)/boot/vmcoreinfo-$(abi_release)-$* \

View file

@ -0,0 +1,34 @@
diff --git a/debian/scripts/control-create b/debian/scripts/control-create
index 887f2863..faacf67f 100644
--- a/debian/scripts/control-create
+++ b/debian/scripts/control-create
@@ -70,23 +70,12 @@ gen_per_flavour () {
-e "s/TARGET/${target}/g"
)
- if [ "${#signed_arch[@]}" != 0 ]; then
- sed "${sed_common_patterns[@]}" \
- -e "s/ARCH/${signed_arch[*]}/g" \
- -e "s/=SIGN-ME-PKG=/-unsigned/g" \
- -e "s/=SIGN-ME-TXT=/ unsigned/g" \
- -e "s/=SIGN-PEER-PKG=//g" \
- "${DEBIAN}/control.d/flavour-signed-control.stub"
- fi
-
- if [ "${#unsigned_arch[@]}" != 0 ]; then
- sed "${sed_common_patterns[@]}" \
- -e "s/ARCH/${unsigned_arch[*]}/g" \
- -e "s/=SIGN-ME-PKG=//g" \
- -e "s/=SIGN-ME-TXT=//g" \
- -e "s/=SIGN-PEER-PKG=/-unsigned/g" \
- "${DEBIAN}/control.d/flavour-signed-control.stub"
- fi
+ sed "${sed_common_patterns[@]}" \
+ -e "s/ARCH/${arch}/g" \
+ -e "s/=SIGN-ME-PKG=//g" \
+ -e "s/=SIGN-ME-TXT=//g" \
+ -e "s/=SIGN-PEER-PKG=//g" \
+ "${DEBIAN}/control.d/flavour-signed-control.stub"
sed "${sed_common_patterns[@]}" \
-e "s/ARCH/${arch}/g" \

View file

@ -6,8 +6,12 @@ ifeq ($(disable_d_i),)
do-binary-udebs do-binary-udebs
endif endif
do-binary-udebs: linux_udeb_name=$(shell if echo $(src_pkg_name)|egrep -q '(linux-lts|linux-hwe|linux-[0-9]+\.[0-9]+)'; then echo $(src_pkg_name); else echo linux; fi) # Hook into Ubuntu's architecture build process seamlessly
do-binary-udebs: debian/control binary-arch: binary-udebs
# Prefer DEB_SOURCE when available; fallback to src_pkg_name; otherwise "linux"
do-binary-udebs: linux_udeb_name=$(if $(DEB_SOURCE),$(DEB_SOURCE),$(if $(src_pkg_name),$(src_pkg_name),linux))
do-binary-udebs: debian/control extract-dtbs-for-udebs
@echo Debug: $@ @echo Debug: $@
dh_testdir dh_testdir
dh_testroot dh_testroot
@ -15,18 +19,39 @@ do-binary-udebs: debian/control
# unpack the kernels into a temporary directory # unpack the kernels into a temporary directory
mkdir -p debian/d-i-${arch} mkdir -p debian/d-i-${arch}
outdir="$${DPKG_BUILDPACKAGE_OUTPUT_DIR:-..}" && \
imagelist=$$(cat $(CURDIR)/$(DEBIAN)/d-i/kernel-versions | grep ^${arch} | gawk '{print $$3}') && \ imagelist=$$(cat $(CURDIR)/$(DEBIAN)/d-i/kernel-versions | grep ^${arch} | gawk '{print $$3}') && \
for f in $$imagelist; do \ for flavour in $$imagelist; do \
i=$(release)-$(abinum)-$$f; \ i=$(DEB_VERSION_UPSTREAM)-$(abinum)-$$flavour; \
for f in \ found=0; \
../linux-image-$$i\_$(release)-$(revision)_${arch}.deb \ for deb in \
../linux-image-unsigned-$$i\_$(release)-$(revision)_${arch}.deb \ "$$outdir"/linux-image-$$i\_*_${arch}.deb \
../linux-modules-$$i\_$(release)-$(revision)_${arch}.deb \ "$$outdir"/linux-image-unsigned-$$i\_*_${arch}.deb \
../linux-modules-extra-$$i\_$(release)-$(revision)_${arch}.deb; \ "$$outdir"/linux-modules-$$i\_*_${arch}.deb \
"$$outdir"/linux-modules-extra-$$i\_*_${arch}.deb; \
do \ do \
[ -f $$f ] && dpkg -x $$f debian/d-i-${arch}; \ if [ -f "$$deb" ]; then \
found=1; \
dpkg -x "$$deb" debian/d-i-${arch}; \
fi; \
done; \ done; \
/sbin/depmod -b debian/d-i-${arch} $$i; \ if [ "$$found" = 0 ]; then \
ls -1 "$$outdir"/linux-image-$$i\_*_${arch}.deb \
"$$outdir"/linux-image-unsigned-$$i\_*_${arch}.deb \
"$$outdir"/linux-modules-$$i\_*_${arch}.deb \
"$$outdir"/linux-modules-extra-$$i\_*_${arch}.deb 2>/dev/null >&2 || true; \
exit 1; \
fi; \
rm -rf debian/d-i-${arch}/DEBIAN; \
if [ ! -e debian/d-i-${arch}/lib/modules ] && [ -d debian/d-i-${arch}/usr/lib/modules ]; then \
mkdir -p debian/d-i-${arch}/lib; \
ln -s ../usr/lib/modules debian/d-i-${arch}/lib/modules; \
fi; \
if [ ! -d debian/d-i-${arch}/lib/modules/$$i ]; then \
find debian/d-i-${arch} -maxdepth 6 -type d -name modules -print >&2 || true; \
exit 1; \
fi; \
/sbin/depmod -b debian/d-i-${arch} -- $$i; \
done done
# kernel-wedge will error if no modules unless this is touched # kernel-wedge will error if no modules unless this is touched
@ -36,44 +61,60 @@ do-binary-udebs: debian/control
export KW_DEFCONFIG_DIR=$(CURDIR)/$(DEBIAN)/d-i && \ export KW_DEFCONFIG_DIR=$(CURDIR)/$(DEBIAN)/d-i && \
export KW_CONFIG_DIR=$(CURDIR)/$(DEBIAN)/d-i && \ export KW_CONFIG_DIR=$(CURDIR)/$(DEBIAN)/d-i && \
export SOURCEDIR=$(CURDIR)/debian/d-i-${arch} && \ export SOURCEDIR=$(CURDIR)/debian/d-i-${arch} && \
kernel-wedge install-files $(release)-$(abinum) && \ kernel-wedge install-files $(DEB_VERSION_UPSTREAM)-$(abinum) && \
kernel-wedge check kernel-wedge check
# Build just the udebs # Build just the udebs
dilist=$$(dh_listpackages -s | grep "\-di$$") && \ dilist=$$(dh_listpackages -a | grep "\-di$$") && \
[ -z "$dilist" ] || \ [ -z "$$dilist" ] || \
for i in $$dilist; do \ for i in $$dilist; do \
dh_fixperms -p$$i; \ dh_fixperms -p$$i; \
$(lockme) dh_gencontrol -p$$i; \ $(lockme) dh_gencontrol -p$$i; \
dh_builddeb -p$$i; \ dh_builddeb -p$$i; \
done done
# Generate the meta-udeb dependancy lists. # Generate the meta-udeb dependancy lists.
@gawk ' \ mkdir -p $(builddir)
/^Package:/ { \ touch $(builddir)/udeb-meta-packages.list
package=$$2; flavour=""; parch="" } \ @gawk ' \
(/Package-Type: udeb/ && package !~ /^$(linux_udeb_name)-udebs-/) { \ /^Package:/ { \
match(package, "'$(release)'-'$(abinum)'-(.*)-di", bits); \ package=$$2; flavour=""; match_arch=0 } \
flavour = bits[1]; \ (/Package-Type: udeb/ && package !~ /^$(linux_udeb_name)-udebs-/) { \
} \ match(package, "$(DEB_VERSION_UPSTREAM)-$(abinum)-(.*)-di", bits); \
(/^Architecture:/ && $$0 " " ~ / '$(arch)'/) { \ flavour = bits[1]; \
parch=$$0; \ } \
} \ /^Architecture:/ { \
(flavour != "" && parch != "") { \ match_arch=0; \
udebs[flavour] = udebs[flavour] package ", "; \ for (i=2; i<=NF; i++) if ($$i=="$(arch)") match_arch=1; \
flavour=""; parch=""; \ } \
} \ (flavour != "" && match_arch) { \
END { \ udebs[flavour] = udebs[flavour] package ", "; \
for (flavour in udebs) { \ flavour=""; match_arch=0; \
package="$(linux_udeb_name)-udebs-" flavour; \ } \
file="debian/" package ".substvars"; \ END { \
print("udeb:Depends=" udebs[flavour]) > file; \ for (flavour in udebs) { \
metas="'$(builddir)'/udeb-meta-packages"; \ package="$(linux_udeb_name)-udebs-" flavour; \
print(package) >metas \ file="debian/" package ".substvars"; \
} \ print("udeb:Depends=" udebs[flavour]) > file; \
} \ metas="$(builddir)/udeb-meta-packages.list"; \
print(package) >>metas \
} \
} \
' <$(CURDIR)/debian/control ' <$(CURDIR)/debian/control
@while read i; do \ @while read i; do \
$(lockme) dh_gencontrol -p$$i; \ if [ -n "$$i" ]; then \
dh_builddeb -p$$i; \ $(lockme) dh_gencontrol -p$$i; \
done <$(builddir)/udeb-meta-packages dh_builddeb -p$$i; \
fi; \
done <$(builddir)/udeb-meta-packages.list
# Split dtbs logic to prevent patching 2-binary-arch.mk
.PHONY: extract-dtbs-for-udebs
extract-dtbs-for-udebs:
@if [ "$(filter true,$(do_dtbs))" ]; then \
echo ">> Extracting dtbs for d-i..."; \
( cd $(pkgdir)/lib/firmware/$(abi_release)-$*/ && find device-tree -print 2>/dev/null || true ) | \
while read dtb_file; do \
echo "$$dtb_file ?" >> $(CURDIR)/$(DEBIAN)/d-i/firmware/$(arch)/kernel-image; \
done; \
fi

View file

@ -1,5 +1,4 @@
crc-ccitt crc-ccitt
libcrc32c
crc32_generic crc32_generic
crc32c_generic crc32c_generic
crc-itu-t crc-itu-t

View file

@ -5,7 +5,6 @@ mii ?
# CRC modules # CRC modules
crc-ccitt ? crc-ccitt ?
crc-itu-t ? crc-itu-t ?
libcrc32c ?
# mac80211 stuff # mac80211 stuff
mac80211 ? mac80211 ?

View file

@ -0,0 +1,43 @@
#!/bin/bash
# trisquel-gen-udeb-control.sh
# Generates the udeb stanzas for debian/control using kernel-wedge.
set -e
ARCH=$1
DEBIAN=$2
VERSION=$3
ABINUM=$4
CONTROL_FILE=$5
if [ -z "$ARCH" ] || [ -z "$DEBIAN" ] || [ -z "$VERSION" ] || [ -z "$ABINUM" ] || [ -z "$CONTROL_FILE" ]; then
echo "Usage: $0 <arch> <debian_dir> <upstream_version> <abinum> <control_file>"
exit 1
fi
# Prevent duplicate udeb stanzas if the script is called multiple times
if grep -q '^Package-Type: udeb' "$CONTROL_FILE"; then
echo ">> Trisquel: Udeb packages already present in $CONTROL_FILE. Skipping generation."
exit 0
fi
echo ">> Trisquel: Generating udeb control stanzas for $ARCH..."
# Create an isolated environment for kernel-wedge
KWTMP="debian/build/kw-d-i-$ARCH"
rm -rf "$KWTMP"
mkdir -p "$KWTMP"
# Copy the static d-i configuration for processing
cp -a "$DEBIAN/d-i/." "$KWTMP/"
# Filter kernel-versions to process only the current architecture
grep -E "^$ARCH[[:space:]]" "$KWTMP/kernel-versions" > "$KWTMP/kernel-versions.new"
mv -f "$KWTMP/kernel-versions.new" "$KWTMP/kernel-versions"
# Generate control data and append to the main control file
KW_DEFCONFIG_DIR="$KWTMP" KW_CONFIG_DIR="$KWTMP" LANG=C \
kernel-wedge gen-control "$VERSION-$ABINUM" | \
grep-dctrl -FArchitecture "$ARCH" >> "$CONTROL_FILE"
echo ">> Trisquel: Udeb control generation completed."

View file

@ -19,9 +19,9 @@
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
# #
VERSION=37 VERSION=38
HWEKR=6.14 HWEKR=6.14
DI_ENABLED=0 DI_ENABLED=1
HWE_ENABLED=1 HWE_ENABLED=1
SEARCH_MISSING_CASES=0 SEARCH_MISSING_CASES=0
@ -72,6 +72,7 @@ for DIR in $PRESERVEDIRS; do
cp $DIR $TMPDIR --parents -a cp $DIR $TMPDIR --parents -a
done done
deblob_kernel() {
sh $DATA/deblob-$HWEKR sh $DATA/deblob-$HWEKR
echo "Reverting deblobbing for files patched by 000-silent-accept-firmware" echo "Reverting deblobbing for files patched by 000-silent-accept-firmware"
@ -81,6 +82,8 @@ rm -rf $TMPDIR
for PATCH in $DATA/*.patch ; do for PATCH in $DATA/*.patch ; do
patch_p1 $PATCH patch_p1 $PATCH
done done
}
[ "$DEBLOB" = 1 ] && deblob_kernel
## Simple test for finding missing cases of silent_accept_firmware method ## Simple test for finding missing cases of silent_accept_firmware method
search_for_missing_cases_silent_patch() { search_for_missing_cases_silent_patch() {
@ -100,8 +103,19 @@ for PATCH in $DATA/udeb/*.patch ; do
done done
cp $DATA/udeb/5-udebs.mk debian/rules.d cp $DATA/udeb/5-udebs.mk debian/rules.d
mkdir -p debian/scripts
cp $DATA/udeb/trisquel-gen-udeb-control.sh debian/scripts/
cp -a $DATA/udeb/d-i $DEBIAN_PATH cp -a $DATA/udeb/d-i $DEBIAN_PATH
{
echo ""
echo "# Rules for building Trisquel's udebs"
echo "include debian/rules.d/5-udebs.mk"
} >> debian/rules
# Clean d-i on clean target
sed -i '/dh_clean/a \ # Trisquel d-i cleanup\n rm -rf $(DEBIAN)/d-i-$(arch)\n rm -f $(DEBIAN)/d-i/firmware/$(arch)/kernel-image' debian/rules
cat << EOF >> debian/control cat << EOF >> debian/control
Package: $CONTROL_PACKAGE-udebs-generic Package: $CONTROL_PACKAGE-udebs-generic
Build-Profiles: <!stage1> <!noudeb> <!cross> <!autopkgtest> Build-Profiles: <!stage1> <!noudeb> <!cross> <!autopkgtest>
@ -134,20 +148,23 @@ Description: Metapackage depending on kernel udebs
for easier version and migration tracking. for easier version and migration tracking.
EOF EOF
cat << EOF >> $DEBIAN_PATH/control.d/flavour-control.stub cat << 'EOF' >> $DEBIAN_PATH/control.d/flavour-control.stub
Package: SRCPKGNAME-udebs-FLAVOUR Package: SRCPKGNAME-udebs-FLAVOUR
Build-Profiles: <!stage1> <!noudeb> <!cross> <!autopkgtest> Build-Profiles: <!stage1> <!noudeb> <!cross> <!autopkgtest>
XC-Package-Type: udeb XC-Package-Type: udeb
Section: debian-installer Section: debian-installer
Architecture: ARCH Architecture: ARCH
Depends: \${udeb:Depends} Depends: ${udeb:Depends}
Description: Metapackage depending on kernel udebs Description: Metapackage depending on kernel udebs
This package depends on the all udebs that the kernel build generated, This package depends on the all udebs that the kernel build generated,
for easier version and migration tracking. for easier version and migration tracking.
EOF EOF
sed '/include.*2-binary-arch.mk/a\\n# Rules for building the udebs ($(DEBIAN)-installer)\ninclude debian/rules.d/5-udebs.mk' -i debian/rules # Hook to generate debian/control
sed 's/+= binary-debs/+= binary-udebs/' -i debian/rules.d/2-binary-arch.mk sed -i '/^[[:space:]]*\$@$/a \
@if [ -z "$(disable_d_i)" ] && ! echo " $(DEB_BUILD_PROFILES) " | grep -q " noudeb " ; then \\\
bash debian/scripts/trisquel-gen-udeb-control.sh $(arch) $(DEBIAN) $(DEB_VERSION_UPSTREAM) $(abinum) $@; \\\
fi' debian/rules
for i in dctrl-tools kernel-wedge for i in dctrl-tools kernel-wedge
do do
@ -245,7 +262,7 @@ echo 'skipretpoline = true' | tee -a $DEBIAN_PATH/rules.d/0-common-vars.mk \
# Do not label packages as unsigned # Do not label packages as unsigned
sed '/bin_pkg_name_unsigned/s/linux-image-unsigned/linux-image/' -i debian/rules.d/0-common-vars.mk sed '/bin_pkg_name_unsigned/s/linux-image-unsigned/linux-image/' -i debian/rules.d/0-common-vars.mk
sed 's/.unsigned//' -i debian/scripts/control-create # (RIFO: change applied via patch)
sed '/Package:/s/.unsigned//;/This package /s/.unsigned//' -i debian/control sed '/Package:/s/.unsigned//;/This package /s/.unsigned//' -i debian/control
line=$(grep -n ')-Ubuntu' debian/rules.d/0-common-vars.mk|cut -d: -f1) line=$(grep -n ')-Ubuntu' debian/rules.d/0-common-vars.mk|cut -d: -f1)