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
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)
do-binary-udebs: debian/control
# Hook into Ubuntu's architecture build process seamlessly
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: $@
dh_testdir
dh_testroot
@ -15,18 +19,39 @@ do-binary-udebs: debian/control
# unpack the kernels into a temporary directory
mkdir -p debian/d-i-${arch}
outdir="$${DPKG_BUILDPACKAGE_OUTPUT_DIR:-..}" && \
imagelist=$$(cat $(CURDIR)/$(DEBIAN)/d-i/kernel-versions | grep ^${arch} | gawk '{print $$3}') && \
for f in $$imagelist; do \
i=$(release)-$(abinum)-$$f; \
for f in \
../linux-image-$$i\_$(release)-$(revision)_${arch}.deb \
../linux-image-unsigned-$$i\_$(release)-$(revision)_${arch}.deb \
../linux-modules-$$i\_$(release)-$(revision)_${arch}.deb \
../linux-modules-extra-$$i\_$(release)-$(revision)_${arch}.deb; \
for flavour in $$imagelist; do \
i=$(DEB_VERSION_UPSTREAM)-$(abinum)-$$flavour; \
found=0; \
for deb in \
"$$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; \
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; \
/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
# 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_CONFIG_DIR=$(CURDIR)/$(DEBIAN)/d-i && \
export SOURCEDIR=$(CURDIR)/debian/d-i-${arch} && \
kernel-wedge install-files $(release)-$(abinum) && \
kernel-wedge install-files $(DEB_VERSION_UPSTREAM)-$(abinum) && \
kernel-wedge check
# Build just the udebs
dilist=$$(dh_listpackages -s | grep "\-di$$") && \
[ -z "$dilist" ] || \
# Build just the udebs
dilist=$$(dh_listpackages -a | grep "\-di$$") && \
[ -z "$$dilist" ] || \
for i in $$dilist; do \
dh_fixperms -p$$i; \
$(lockme) dh_gencontrol -p$$i; \
dh_builddeb -p$$i; \
done
# Generate the meta-udeb dependancy lists.
@gawk ' \
/^Package:/ { \
package=$$2; flavour=""; parch="" } \
(/Package-Type: udeb/ && package !~ /^$(linux_udeb_name)-udebs-/) { \
match(package, "'$(release)'-'$(abinum)'-(.*)-di", bits); \
flavour = bits[1]; \
} \
(/^Architecture:/ && $$0 " " ~ / '$(arch)'/) { \
parch=$$0; \
} \
(flavour != "" && parch != "") { \
udebs[flavour] = udebs[flavour] package ", "; \
flavour=""; parch=""; \
} \
END { \
for (flavour in udebs) { \
package="$(linux_udeb_name)-udebs-" flavour; \
file="debian/" package ".substvars"; \
print("udeb:Depends=" udebs[flavour]) > file; \
metas="'$(builddir)'/udeb-meta-packages"; \
print(package) >metas \
} \
} \
mkdir -p $(builddir)
touch $(builddir)/udeb-meta-packages.list
@gawk ' \
/^Package:/ { \
package=$$2; flavour=""; match_arch=0 } \
(/Package-Type: udeb/ && package !~ /^$(linux_udeb_name)-udebs-/) { \
match(package, "$(DEB_VERSION_UPSTREAM)-$(abinum)-(.*)-di", bits); \
flavour = bits[1]; \
} \
/^Architecture:/ { \
match_arch=0; \
for (i=2; i<=NF; i++) if ($$i=="$(arch)") match_arch=1; \
} \
(flavour != "" && match_arch) { \
udebs[flavour] = udebs[flavour] package ", "; \
flavour=""; match_arch=0; \
} \
END { \
for (flavour in udebs) { \
package="$(linux_udeb_name)-udebs-" flavour; \
file="debian/" package ".substvars"; \
print("udeb:Depends=" udebs[flavour]) > file; \
metas="$(builddir)/udeb-meta-packages.list"; \
print(package) >>metas \
} \
} \
' <$(CURDIR)/debian/control
@while read i; do \
$(lockme) dh_gencontrol -p$$i; \
dh_builddeb -p$$i; \
done <$(builddir)/udeb-meta-packages
if [ -n "$$i" ]; then \
$(lockme) dh_gencontrol -p$$i; \
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
libcrc32c
crc32_generic
crc32c_generic
crc-itu-t

View file

@ -5,7 +5,6 @@ mii ?
# CRC modules
crc-ccitt ?
crc-itu-t ?
libcrc32c ?
# mac80211 stuff
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
#
VERSION=37
VERSION=38
HWEKR=6.14
DI_ENABLED=0
DI_ENABLED=1
HWE_ENABLED=1
SEARCH_MISSING_CASES=0
@ -72,6 +72,7 @@ for DIR in $PRESERVEDIRS; do
cp $DIR $TMPDIR --parents -a
done
deblob_kernel() {
sh $DATA/deblob-$HWEKR
echo "Reverting deblobbing for files patched by 000-silent-accept-firmware"
@ -81,6 +82,8 @@ rm -rf $TMPDIR
for PATCH in $DATA/*.patch ; do
patch_p1 $PATCH
done
}
[ "$DEBLOB" = 1 ] && deblob_kernel
## Simple test for finding missing cases of silent_accept_firmware method
search_for_missing_cases_silent_patch() {
@ -100,8 +103,19 @@ for PATCH in $DATA/udeb/*.patch ; do
done
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
{
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
Package: $CONTROL_PACKAGE-udebs-generic
Build-Profiles: <!stage1> <!noudeb> <!cross> <!autopkgtest>
@ -134,20 +148,23 @@ Description: Metapackage depending on kernel udebs
for easier version and migration tracking.
EOF
cat << EOF >> $DEBIAN_PATH/control.d/flavour-control.stub
cat << 'EOF' >> $DEBIAN_PATH/control.d/flavour-control.stub
Package: SRCPKGNAME-udebs-FLAVOUR
Build-Profiles: <!stage1> <!noudeb> <!cross> <!autopkgtest>
XC-Package-Type: udeb
Section: debian-installer
Architecture: ARCH
Depends: \${udeb:Depends}
Depends: ${udeb:Depends}
Description: Metapackage depending on kernel udebs
This package depends on the all udebs that the kernel build generated,
for easier version and migration tracking.
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
sed 's/+= binary-debs/+= binary-udebs/' -i debian/rules.d/2-binary-arch.mk
# Hook to generate debian/control
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
do
@ -245,7 +262,7 @@ echo 'skipretpoline = true' | tee -a $DEBIAN_PATH/rules.d/0-common-vars.mk \
# 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 's/.unsigned//' -i debian/scripts/control-create
# (RIFO: change applied via patch)
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)