diff --git a/helpers/DATA/linux-hwe-6.14/udeb/000-d-i.patch b/helpers/DATA/linux-hwe-6.14/udeb/000-d-i.patch deleted file mode 100644 index 15cb970..0000000 --- a/helpers/DATA/linux-hwe-6.14/udeb/000-d-i.patch +++ /dev/null @@ -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)-$* \ diff --git a/helpers/DATA/linux-hwe-6.14/udeb/002-fix_variable_usage_control-create.patch b/helpers/DATA/linux-hwe-6.14/udeb/002-fix_variable_usage_control-create.patch new file mode 100644 index 0000000..e58783a --- /dev/null +++ b/helpers/DATA/linux-hwe-6.14/udeb/002-fix_variable_usage_control-create.patch @@ -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" \ diff --git a/helpers/DATA/linux-hwe-6.14/udeb/5-udebs.mk b/helpers/DATA/linux-hwe-6.14/udeb/5-udebs.mk index c95299c..902c0d0 100644 --- a/helpers/DATA/linux-hwe-6.14/udeb/5-udebs.mk +++ b/helpers/DATA/linux-hwe-6.14/udeb/5-udebs.mk @@ -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 diff --git a/helpers/DATA/linux-hwe-6.14/udeb/d-i/modules/crc-modules b/helpers/DATA/linux-hwe-6.14/udeb/d-i/modules/crc-modules index 349f0af..9ed0717 100644 --- a/helpers/DATA/linux-hwe-6.14/udeb/d-i/modules/crc-modules +++ b/helpers/DATA/linux-hwe-6.14/udeb/d-i/modules/crc-modules @@ -1,5 +1,4 @@ crc-ccitt -libcrc32c crc32_generic crc32c_generic crc-itu-t diff --git a/helpers/DATA/linux-hwe-6.14/udeb/d-i/modules/nic-shared-modules b/helpers/DATA/linux-hwe-6.14/udeb/d-i/modules/nic-shared-modules index c2ef43f..ea6f53c 100644 --- a/helpers/DATA/linux-hwe-6.14/udeb/d-i/modules/nic-shared-modules +++ b/helpers/DATA/linux-hwe-6.14/udeb/d-i/modules/nic-shared-modules @@ -5,7 +5,6 @@ mii ? # CRC modules crc-ccitt ? crc-itu-t ? -libcrc32c ? # mac80211 stuff mac80211 ? diff --git a/helpers/DATA/linux-hwe-6.14/udeb/trisquel-gen-udeb-control.sh b/helpers/DATA/linux-hwe-6.14/udeb/trisquel-gen-udeb-control.sh new file mode 100755 index 0000000..00fff9c --- /dev/null +++ b/helpers/DATA/linux-hwe-6.14/udeb/trisquel-gen-udeb-control.sh @@ -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 " + 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." diff --git a/helpers/make-linux-hwe-6.14 b/helpers/make-linux-hwe-6.14 index c41210e..06ba01a 100644 --- a/helpers/make-linux-hwe-6.14 +++ b/helpers/make-linux-hwe-6.14 @@ -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: @@ -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: 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)