diff mbox series

[SRU,E/Unstable] UBUNTU: [Debian] Fix warnings when checking for modules signatures

Message ID 20191125143451.230139-1-seth.forshee@canonical.com
State New
Headers show
Series [SRU,E/Unstable] UBUNTU: [Debian] Fix warnings when checking for modules signatures | expand

Commit Message

Seth Forshee Nov. 25, 2019, 2:34 p.m. UTC
BugLink: https://bugs.launchpad.net/bugs/1853843

When detecting module signatures, the current approach causes
this warning for modules lacking a signature:

 /bin/bash: line 5: warning: command substitution: ignored null byte in input

My original approach used read, which works well, but for unknown
reasons causes an error from bash when by itself as the first
line in the if clause. Putting it in a no-op while loop prevents
the error, but it has the advantage of working without flooding
the build logs with warnings.

Signed-off-by: Seth Forshee <seth.forshee@canonical.com>
---

This is the same approach as in the first patch I sent for this. The
no-op while loop is strange, but without it the read genearates an error
that no one has been able to explain. However, so far this is the only
approach I've found that works in both bionic and eoan without spamming
the build log.

 debian/rules.d/2-binary-arch.mk | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

Comments

Kleber Sacilotto de Souza Nov. 26, 2019, 8:54 a.m. UTC | #1
On 25.11.19 15:34, Seth Forshee wrote:
> BugLink: https://bugs.launchpad.net/bugs/1853843
> 
> When detecting module signatures, the current approach causes
> this warning for modules lacking a signature:
> 
>  /bin/bash: line 5: warning: command substitution: ignored null byte in input
> 
> My original approach used read, which works well, but for unknown
> reasons causes an error from bash when by itself as the first
> line in the if clause. Putting it in a no-op while loop prevents
> the error, but it has the advantage of working without flooding
> the build logs with warnings.
> 
> Signed-off-by: Seth Forshee <seth.forshee@canonical.com>

Thanks for fixing it.

Acked-by: Kleber Sacilotto de Souza <kleber.souza@canonical.com>

> ---
> 
> This is the same approach as in the first patch I sent for this. The
> no-op while loop is strange, but without it the read genearates an error
> that no one has been able to explain. However, so far this is the only
> approach I've found that works in both bionic and eoan without spamming
> the build log.
> 
>  debian/rules.d/2-binary-arch.mk | 6 ++++--
>  1 file changed, 4 insertions(+), 2 deletions(-)
> 
> diff --git a/debian/rules.d/2-binary-arch.mk b/debian/rules.d/2-binary-arch.mk
> index 070478e010f7..2aea5e857f79 100644
> --- a/debian/rules.d/2-binary-arch.mk
> +++ b/debian/rules.d/2-binary-arch.mk
> @@ -413,12 +413,14 @@ ifneq ($(skipdbg),true)
>  	  -name '*.ko' | while read path_module ; do \
>  		module="/lib/modules/$${path_module#*/lib/modules/}"; \
>  		if [[ -f "$(dbgpkgdir)/usr/lib/debug/$$module" ]] ; then \
> -			signature=$$(tail -c 28 "$$path_module"); \
> +			while IFS= read -r -d '' signature < <(tail -c 28 "$$path_module"); do \
> +				break; \
> +			done; \
>  			$(CROSS_COMPILE)objcopy \
>  				--add-gnu-debuglink=$(dbgpkgdir)/usr/lib/debug/$$module \
>  				$$path_module; \
>  			if grep -q CONFIG_MODULE_SIG=y $(builddir)/build-$*/.config && \
> -			   [ "$$signature" = "~Module signature appended~" ]; then \
> +			   [ "$$signature" = $$'~Module signature appended~\n' ]; then \
>  				$(builddir)/build-$*/scripts/sign-file $(MODHASHALGO) \
>  					$(MODSECKEY) \
>  					$(MODPUBKEY) \
>
Stefan Bader Nov. 28, 2019, 4:08 p.m. UTC | #2
On 25.11.19 15:34, Seth Forshee wrote:
> BugLink: https://bugs.launchpad.net/bugs/1853843
> 
> When detecting module signatures, the current approach causes
> this warning for modules lacking a signature:
> 
>  /bin/bash: line 5: warning: command substitution: ignored null byte in input
> 
> My original approach used read, which works well, but for unknown
> reasons causes an error from bash when by itself as the first
> line in the if clause. Putting it in a no-op while loop prevents
> the error, but it has the advantage of working without flooding
> the build logs with warnings.
> 
> Signed-off-by: Seth Forshee <seth.forshee@canonical.com>
Acked-by: Stefan Bader <stefan.bader@canonical.com>
> ---
> 
> This is the same approach as in the first patch I sent for this. The
> no-op while loop is strange, but without it the read genearates an error
> that no one has been able to explain. However, so far this is the only
> approach I've found that works in both bionic and eoan without spamming
> the build log.
> 
>  debian/rules.d/2-binary-arch.mk | 6 ++++--
>  1 file changed, 4 insertions(+), 2 deletions(-)
> 
> diff --git a/debian/rules.d/2-binary-arch.mk b/debian/rules.d/2-binary-arch.mk
> index 070478e010f7..2aea5e857f79 100644
> --- a/debian/rules.d/2-binary-arch.mk
> +++ b/debian/rules.d/2-binary-arch.mk
> @@ -413,12 +413,14 @@ ifneq ($(skipdbg),true)
>  	  -name '*.ko' | while read path_module ; do \
>  		module="/lib/modules/$${path_module#*/lib/modules/}"; \
>  		if [[ -f "$(dbgpkgdir)/usr/lib/debug/$$module" ]] ; then \
> -			signature=$$(tail -c 28 "$$path_module"); \
> +			while IFS= read -r -d '' signature < <(tail -c 28 "$$path_module"); do \
> +				break; \
> +			done; \
>  			$(CROSS_COMPILE)objcopy \
>  				--add-gnu-debuglink=$(dbgpkgdir)/usr/lib/debug/$$module \
>  				$$path_module; \
>  			if grep -q CONFIG_MODULE_SIG=y $(builddir)/build-$*/.config && \
> -			   [ "$$signature" = "~Module signature appended~" ]; then \
> +			   [ "$$signature" = $$'~Module signature appended~\n' ]; then \
>  				$(builddir)/build-$*/scripts/sign-file $(MODHASHALGO) \
>  					$(MODSECKEY) \
>  					$(MODPUBKEY) \
>
Kleber Sacilotto de Souza Dec. 2, 2019, 10:57 a.m. UTC | #3
On 2019-11-25 15:34, Seth Forshee wrote:
> BugLink: https://bugs.launchpad.net/bugs/1853843
> 
> When detecting module signatures, the current approach causes
> this warning for modules lacking a signature:
> 
>  /bin/bash: line 5: warning: command substitution: ignored null byte in input
> 
> My original approach used read, which works well, but for unknown
> reasons causes an error from bash when by itself as the first
> line in the if clause. Putting it in a no-op while loop prevents
> the error, but it has the advantage of working without flooding
> the build logs with warnings.
> 
> Signed-off-by: Seth Forshee <seth.forshee@canonical.com>

Applied to eoan/master-next branch.

Thanks,
Kleber

> ---
> 
> This is the same approach as in the first patch I sent for this. The
> no-op while loop is strange, but without it the read genearates an error
> that no one has been able to explain. However, so far this is the only
> approach I've found that works in both bionic and eoan without spamming
> the build log.
> 
>  debian/rules.d/2-binary-arch.mk | 6 ++++--
>  1 file changed, 4 insertions(+), 2 deletions(-)
> 
> diff --git a/debian/rules.d/2-binary-arch.mk b/debian/rules.d/2-binary-arch.mk
> index 070478e010f7..2aea5e857f79 100644
> --- a/debian/rules.d/2-binary-arch.mk
> +++ b/debian/rules.d/2-binary-arch.mk
> @@ -413,12 +413,14 @@ ifneq ($(skipdbg),true)
>  	  -name '*.ko' | while read path_module ; do \
>  		module="/lib/modules/$${path_module#*/lib/modules/}"; \
>  		if [[ -f "$(dbgpkgdir)/usr/lib/debug/$$module" ]] ; then \
> -			signature=$$(tail -c 28 "$$path_module"); \
> +			while IFS= read -r -d '' signature < <(tail -c 28 "$$path_module"); do \
> +				break; \
> +			done; \
>  			$(CROSS_COMPILE)objcopy \
>  				--add-gnu-debuglink=$(dbgpkgdir)/usr/lib/debug/$$module \
>  				$$path_module; \
>  			if grep -q CONFIG_MODULE_SIG=y $(builddir)/build-$*/.config && \
> -			   [ "$$signature" = "~Module signature appended~" ]; then \
> +			   [ "$$signature" = $$'~Module signature appended~\n' ]; then \
>  				$(builddir)/build-$*/scripts/sign-file $(MODHASHALGO) \
>  					$(MODSECKEY) \
>  					$(MODPUBKEY) \
>
Seth Forshee Dec. 6, 2019, 4:36 a.m. UTC | #4
On Mon, Nov 25, 2019 at 08:34:51AM -0600, Seth Forshee wrote:
> BugLink: https://bugs.launchpad.net/bugs/1853843
> 
> When detecting module signatures, the current approach causes
> this warning for modules lacking a signature:
> 
>  /bin/bash: line 5: warning: command substitution: ignored null byte in input
> 
> My original approach used read, which works well, but for unknown
> reasons causes an error from bash when by itself as the first
> line in the if clause. Putting it in a no-op while loop prevents
> the error, but it has the advantage of working without flooding
> the build logs with warnings.
> 
> Signed-off-by: Seth Forshee <seth.forshee@canonical.com>

Applied to unstable/master.
diff mbox series

Patch

diff --git a/debian/rules.d/2-binary-arch.mk b/debian/rules.d/2-binary-arch.mk
index 070478e010f7..2aea5e857f79 100644
--- a/debian/rules.d/2-binary-arch.mk
+++ b/debian/rules.d/2-binary-arch.mk
@@ -413,12 +413,14 @@  ifneq ($(skipdbg),true)
 	  -name '*.ko' | while read path_module ; do \
 		module="/lib/modules/$${path_module#*/lib/modules/}"; \
 		if [[ -f "$(dbgpkgdir)/usr/lib/debug/$$module" ]] ; then \
-			signature=$$(tail -c 28 "$$path_module"); \
+			while IFS= read -r -d '' signature < <(tail -c 28 "$$path_module"); do \
+				break; \
+			done; \
 			$(CROSS_COMPILE)objcopy \
 				--add-gnu-debuglink=$(dbgpkgdir)/usr/lib/debug/$$module \
 				$$path_module; \
 			if grep -q CONFIG_MODULE_SIG=y $(builddir)/build-$*/.config && \
-			   [ "$$signature" = "~Module signature appended~" ]; then \
+			   [ "$$signature" = $$'~Module signature appended~\n' ]; then \
 				$(builddir)/build-$*/scripts/sign-file $(MODHASHALGO) \
 					$(MODSECKEY) \
 					$(MODPUBKEY) \