[PATCH 1/4][SRU][H] UBUNTU: [Packaging] Add support for ODM drivers
AceLan Kao
acelan.kao at canonical.com
Fri Jun 11 10:01:24 UTC 2021
From: Stefan Bader <stefan.bader at canonical.com>
BugLink: https://bugs.launchpad.net/bugs/1912789
We want to be able to selectively turn on ODM driver support for those
kernels/arches we have to but otherwise not inherit this to other
derivatives. This is done by a new config option which we will have to
depend on in the new drivers config options. Support is toggled by
changing a makefile rule variable. The new config option will be hidden
as long as not at least one of the arches supported turns on the rule
variable.
Signed-off-by: Stefan Bader <stefan.bader at canonical.com>
Acked-by: Marcelo Henrique Cerri <marcelo.cerri at canonical.com>
Acked-by: Andy Whitcroft <apw at canonical.com>
Signed-off-by: Kelsey Skunberg <kelsey.skunberg at canonical.com>
(cherry picked from commit 4aeffc246531a666c1fad1925ebf1a6e68a704e4
focal)
Signed-off-by: Chia-Lin Kao (AceLan) <acelan.kao at canonical.com>
---
debian/rules.d/0-common-vars.mk | 4 ++++
debian/rules.d/1-maintainer.mk | 1 +
debian/rules.d/2-binary-arch.mk | 3 +++
debian/scripts/misc/arch-has-odm-enabled.sh | 21 +++++++++++++++++++++
debian/scripts/misc/kernelconfig | 2 +-
ubuntu/Kconfig | 6 ++++++
6 files changed, 36 insertions(+), 1 deletion(-)
create mode 100755 debian/scripts/misc/arch-has-odm-enabled.sh
diff --git a/debian/rules.d/0-common-vars.mk b/debian/rules.d/0-common-vars.mk
index f642cda1a185..ad1c39b97bb3 100644
--- a/debian/rules.d/0-common-vars.mk
+++ b/debian/rules.d/0-common-vars.mk
@@ -187,6 +187,10 @@ do_common_headers_indep=true
# add a 'full source' mode
do_full_source=false
+# Add an option to enable special drivers which should only be build when
+# explicitly enabled.
+do_odm_drivers=false
+
# build tools
ifneq ($(wildcard $(CURDIR)/tools),)
ifeq ($(do_tools),)
diff --git a/debian/rules.d/1-maintainer.mk b/debian/rules.d/1-maintainer.mk
index a266b411ab50..48eb1441db15 100644
--- a/debian/rules.d/1-maintainer.mk
+++ b/debian/rules.d/1-maintainer.mk
@@ -86,6 +86,7 @@ printenv:
@echo "do_flavour_header_package = $(do_flavour_header_package)"
@echo "do_common_headers_indep = $(do_common_headers_indep)"
@echo "do_full_source = $(do_full_source)"
+ @echo "do_odm_drivers = $(do_odm_drivers)"
@echo "do_tools = $(do_tools)"
@echo "do_any_tools = $(do_any_tools)"
@echo "do_linux_tools = $(do_linux_tools)"
diff --git a/debian/rules.d/2-binary-arch.mk b/debian/rules.d/2-binary-arch.mk
index 5ae9a989207c..453788fdba6b 100644
--- a/debian/rules.d/2-binary-arch.mk
+++ b/debian/rules.d/2-binary-arch.mk
@@ -31,6 +31,9 @@ $(stampdir)/stamp-prepare-tree-%: $(commonconfdir)/config.common.$(family) $(arc
[ "$(do_full_source)" != 'true' ] && true || \
rsync -a --exclude debian --exclude debian.master --exclude $(DEBIAN) * $(builddir)/build-$*
cat $(wordlist 1,3,$^) | sed -e 's/.*CONFIG_VERSION_SIGNATURE.*/CONFIG_VERSION_SIGNATURE="Ubuntu $(release)-$(revision)-$* $(raw_kernelversion)"/' > $(builddir)/build-$*/.config
+ [ "$(do_odm_drivers)" = 'true' ] && true || \
+ sed -ie 's/.*CONFIG_UBUNTU_ODM_DRIVERS.*/# CONFIG_UBUNTU_ODM_DRIVERS is not set/' \
+ $(builddir)/build-$*/.config
find $(builddir)/build-$* -name "*.ko" | xargs rm -f
$(build_cd) $(kmake) $(build_O) -j1 syncconfig prepare scripts
touch $@
diff --git a/debian/scripts/misc/arch-has-odm-enabled.sh b/debian/scripts/misc/arch-has-odm-enabled.sh
new file mode 100755
index 000000000000..7bc8a5db0db0
--- /dev/null
+++ b/debian/scripts/misc/arch-has-odm-enabled.sh
@@ -0,0 +1,21 @@
+#!/bin/sh
+# Evaluate whether arch ($1) will be built with do_odm_drivers set to true.
+set -e
+
+if [ "$1" = "" ]; then
+ return 1
+fi
+
+TOPDIR=$(dirname $0)/../../..
+. $TOPDIR/debian/debian.env
+RULESDIR=$TOPDIR/$DEBIAN/rules.d
+
+do_odm_drivers=false
+for f in $1.mk hooks.mk; do
+ eval $(cat $RULESDIR/$f | sed -n -e '/do_odm_drivers/s/ \+//gp')
+done
+if [ "$do_odm_drivers" != "true" ]; then
+ return 1
+fi
+
+return 0
diff --git a/debian/scripts/misc/kernelconfig b/debian/scripts/misc/kernelconfig
index 888cc892d936..f95396e28f28 100755
--- a/debian/scripts/misc/kernelconfig
+++ b/debian/scripts/misc/kernelconfig
@@ -68,7 +68,7 @@ for arch in $archs; do
# for i386 since it is no longer supported after 19.04, however
# we maintain the configs for hwe.
modify_config=true
- env="ARCH=$kernarch"
+ env="ARCH=$kernarch DEB_ARCH=$arch"
compiler_path=$(which "${cross_compile}gcc" || true)
if [ "$compiler_path" != '' ]; then
env="$env CROSS_COMPILE=$cross_compile"
diff --git a/ubuntu/Kconfig b/ubuntu/Kconfig
index 5056671223bb..5575ce574577 100644
--- a/ubuntu/Kconfig
+++ b/ubuntu/Kconfig
@@ -1,5 +1,11 @@
menu "Ubuntu Supplied Third-Party Device Drivers"
+
+config UBUNTU_ODM_DRIVERS
+ def_bool $(success,$(srctree)/debian/scripts/misc/arch-has-odm-enabled.sh $(DEB_ARCH))
+ ---help---
+ Turn on support for Ubuntu ODM supplied drivers
+
#
# NOTE: to allow drivers to be added and removed without causing merge
# collisions you should add new entries in the middle of the six lines
--
2.25.1
More information about the kernel-team
mailing list