From: Benjamin Poirier <bpoir...@redhat.com>

redhat/configs: Change script interpreter to /bin/bash

Upstream-status: RHEL-only
Bugzilla: 2343226

When running `make dist-configs` on a system where /bin/sh is dash (rather
than bash), the command fails with:

[...]
Building .../redhat/configs/kernel-riscv64-rt-debug-fedora.config ...
Building .../redhat/configs/kernel-riscv64-rt-debug-fedora.config complete
./generate_all_configs.sh: 26: Bad substitution
./generate_all_configs.sh: 26: Bad substitution
./generate_all_configs.sh: 26: Bad substitution
./generate_all_configs.sh: 26: Bad substitution
./generate_all_configs.sh: 26: Bad substitution
./generate_all_configs.sh: 26: Bad substitution
./generate_all_configs.sh: 26: Bad substitution
./generate_all_configs.sh: 26: Bad substitution
./generate_all_configs.sh: 26: Bad substitution
./generate_all_configs.sh: 26: Bad substitution
./generate_all_configs.sh: 26: Bad substitution
./generate_all_configs.sh: 26: Bad substitution
./generate_all_configs.sh: 26: Bad substitution
./generate_all_configs.sh: 26: Bad substitution
./generate_all_configs.sh: 26: Bad substitution
./generate_all_configs.sh: 26: Bad substitution
./generate_all_configs.sh: 26: Bad substitution
./generate_all_configs.sh: 26: Bad substitution
./generate_all_configs.sh: 26: Bad substitution
head: cannot open '.../redhat/configs/kernel-6.14.0*.config' for reading: No 
such file or directory
cat: '.../redhat/configs/kernel-6.14.0*.config': No such file or directory
Processing .../redhat/configs/kernel-6.14.0*.config ...
.../Makefile:750: arch//Makefile: No such file or directory
make[3]: *** No rule to make target 'arch//Makefile'.  Stop.
make[2]: *** [Makefile:263: __sub-make] Error 2
make[1]: *** [Makefile:564: dist-configs] Error 1
make[1]: Leaving directory '.../redhat'
make: *** [makefile:12: dist-configs] Error 2

The problem is due to the following substitution:
${i:$specpackage_name_len}

If we remove the shellcheck ignore, shellcheck explains:
SC3057 (warning): In POSIX sh, string indexing is undefined.

Since there are already many other scripts under redhat/ which use
/bin/bash as their interpreter, fix this problem by changing the
interpreter for this script to use bash as well.

We can then remove the shellcheck ignore but this results in another
message:
SC2001 (style): See if you can use ${variable//search/replace} instead.

The code is restructured as suggested.

Signed-off-by: Benjamin Poirier <bpoir...@redhat.com>

diff --git a/redhat/configs/generate_all_configs.sh 
b/redhat/configs/generate_all_configs.sh
index blahblah..blahblah 100755
--- a/redhat/configs/generate_all_configs.sh
+++ b/redhat/configs/generate_all_configs.sh
@@ -1,4 +1,4 @@
-#!/bin/sh
+#!/bin/bash
 
 # Adjusts the configuration options to build the variants correctly
 
@@ -22,9 +22,9 @@ fi
 # The +1 is to remove the - at the end of the SPECPACKAGE_NAME string
 specpackage_name_len=$((${#SPECPACKAGE_NAME} + 1))
 for i in "${SPECPACKAGE_NAME}"*-"$FLAVOR".config; do
-       # shellcheck disable=SC3057
-       NEW=${SPECPACKAGE_NAME}-"$SPECRPMVERSION"-$(echo 
"${i:$specpackage_name_len}" | sed s/-"$FLAVOR"//)
-       mv "$i" "$NEW"
+       variant=${i:$specpackage_name_len}
+       variant=${variant/-$FLAVOR}
+       mv "$i" "$SPECPACKAGE_NAME-$SPECRPMVERSION-$variant"
 done
 
 rm -f kernel-*-"$SECONDARY".config

--
https://gitlab.com/cki-project/kernel-ark/-/merge_requests/3668

-- 
_______________________________________________
kernel mailing list -- kernel@lists.fedoraproject.org
To unsubscribe send an email to kernel-le...@lists.fedoraproject.org
Fedora Code of Conduct: 
https://docs.fedoraproject.org/en-US/project/code-of-conduct/
List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines
List Archives: 
https://lists.fedoraproject.org/archives/list/kernel@lists.fedoraproject.org
Do not reply to spam, report it: 
https://pagure.io/fedora-infrastructure/new_issue

Reply via email to