Skip to contentSkip to conversation

dependencies.sh: improve the missing perl modules detection

PATCH Superseded Vicente Olivert Riera 2 participants 3 messages Sep 25, 2015 – Sep 29, 2015

v6 of 7 Superseded Latest is v7 →

lore
Share & tools
lore
#0 lore raw

PATCH v6 1/1 dependencies.sh: improve the missing perl modules detection

---
Changes v5 -> v6:
- Remove the check for perl itself, as is already done at line #161.

Changes v4 -> v5:
- Use the string concatenation operator (+=) to assing the values to the required_perl_modules. That way the comments about why each module is needed can be in the same line where the module is added to the variable.
Use also += for the missing_perl_modules variable.

Changes v3 -> v4:
- Thread::Queue module is actually needed because host-automake uses it. Comment modified accordingly. (Highlighted by Thomas Petazzoni)

Changes v2 -> v3:
- Add comments about why each module is needed. (Suggested by Baruch Siach)

Changes v1 -> v2:
- Check first for perl itself, and then the modules. Also keep the comment which says that perl is needed to build host-autoconf. (Suggested by Baruch Siach)

 support/dependencies/dependencies.sh |   27 ++++++++++++++++++++++-----
 1 files changed, 22 insertions(+), 5 deletions(-)
support/dependencies/dependencies.sh +22 -5
index 01ad828..8ff667c 100755
@@ -236,10 +236,27 @@ if grep -q ^BR2_HOSTARCH_NEEDS_IA32_COMPILER=y $BR2_CONFIG ; then
 	fi
 fi
 
-# Check that the Perl installation is complete enough to build
-# host-autoconf.
-if ! perl  -e "require Data::Dumper" > /dev/null 2>&1 ; then
-	echo "Your Perl installation is not complete enough, at least Data::Dumper is missing."
-	echo "On Debian/Ubuntu distributions, install the 'perl' package."
+# Check that the Perl installation is complete enough for Buildroot.
+# Here is the space-separated list of the required modules.
+required_perl_modules="Data::Dumper" # Needed to build host-autoconf
+required_perl_modules+=" Thread:Queue" # Used by host-automake
+
+# This variable will keep the modules that are missing in your system.
+missing_perl_modules=""
+
+for pm in $required_perl_modules ; do
+	if ! perl  -e "require $pm" > /dev/null 2>&1 ; then
+		missing_perl_modules+=" $pm"
+	fi
+done
+
+if [ -n "$missing_perl_modules" ] ; then
+	echo "Your Perl installation is not complete enough; at least the following"
+	echo "modules are missing:"
+	echo ""
+	for pm in $missing_perl_modules ; do
+		echo -e "\t $pm"
+	done
+	echo ""
 	exit 1
 fi
Signature · 1 line
1.7.1
#1 lore raw

PATCH v6 1/1 dependencies.sh: improve the missing perl modules detection

Vicente,

I think the patch is great, but there are some implementation issues, see below.

support/dependencies/dependencies.sh if grep -q ^BR2_HOSTARCH_NEEDS_IA32_COMPILER=y $BR2_CONFIG ; then · line 240

Quoted 7 lines · Vicente Olivert Riera
support/dependencies/dependencies.sh +2 -5
-# Check that the Perl installation is complete enough to build
-# host-autoconf.
-if ! perl  -e "require Data::Dumper" > /dev/null 2>&1 ; then
-	echo "Your Perl installation is not complete enough, at least Data::Dumper is missing."
-	echo "On Debian/Ubuntu distributions, install the 'perl' package."
+# Check that the Perl installation is complete enough for Buildroot.
+# Here is the space-separated list of the required modules.

The space-separated comment doesn't make much sense IMO.

support/dependencies/dependencies.sh if grep -q ^BR2_HOSTARCH_NEEDS_IA32_COMPILER=y $BR2_CONFIG ; then · line 242

Quoted 2 lines
support/dependencies/dependencies.sh +2 -0
+required_perl_modules="Data::Dumper" # Needed to build host-autoconf
+required_perl_modules+=" Thread:Queue" # Used by host-automake

The += operator is bash specific, and not POSIX compliant. Since this dependencies.sh script specifies #!/bin/sh, you're not guaranteed to be executed with bash.

support/dependencies/dependencies.sh if grep -q ^BR2_HOSTARCH_NEEDS_IA32_COMPILER=y $BR2_CONFIG ; then · line 249

Quoted 7 lines
support/dependencies/dependencies.sh +7 -0
+
+# This variable will keep the modules that are missing in your system.
+missing_perl_modules=""
+
+for pm in $required_perl_modules ; do
+	if ! perl  -e "require $pm" > /dev/null 2>&1 ; then
+		missing_perl_modules+=" $pm"

Ditto.

support/dependencies/dependencies.sh if grep -q ^BR2_HOSTARCH_NEEDS_IA32_COMPILER=y $BR2_CONFIG ; then · line 256

Quoted 7 lines
support/dependencies/dependencies.sh +7 -0
+	fi
+done
+
+if [ -n "$missing_perl_modules" ] ; then
+	echo "Your Perl installation is not complete enough; at least the following"
+	echo "modules are missing:"
+	echo ""

Quotes not needed here, just "echo" is sufficient.

support/dependencies/dependencies.sh if grep -q ^BR2_HOSTARCH_NEEDS_IA32_COMPILER=y $BR2_CONFIG ; then · line 260

Quoted 4 lines
support/dependencies/dependencies.sh +4 -0
+	for pm in $missing_perl_modules ; do
+		echo -e "\t $pm"
+	done
+	echo ""

Ditto.

Thomas

Signature · 3 lines
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com
#2 lore raw

PATCH v6 1/1 dependencies.sh: improve the missing perl modules detection

Hi Thomas,

thanks a lot for your review. See comments below, please.

Quoted 7 lines · Thomas Petazzoni

Vicente,

I think the patch is great, but there are some implementation issues, see below.

On Fri, 25 Sep 2015 11:06:25 +0100, Vicente Olivert Riera wrote:

Quoted 9 lines

support/dependencies/dependencies.sh if grep -q ^BR2_HOSTARCH_NEEDS_IA32_COMPILER=y $BR2_CONFIG ; then · line 240

Quoted 7 lines
support/dependencies/dependencies.sh +2 -5
-# Check that the Perl installation is complete enough to build
-# host-autoconf.
-if ! perl  -e "require Data::Dumper" > /dev/null 2>&1 ; then
-	echo "Your Perl installation is not complete enough, at least Data::Dumper is missing."
-	echo "On Debian/Ubuntu distributions, install the 'perl' package."
+# Check that the Perl installation is complete enough for Buildroot.
+# Here is the space-separated list of the required modules.

The space-separated comment doesn't make much sense IMO.

Uhm..., ok. I think having two examples (Data::Dumper and Thread:Queue) is enough to understand how to add more modules to the list. I will remove the comment.

Quoted 6 lines

support/dependencies/dependencies.sh if grep -q ^BR2_HOSTARCH_NEEDS_IA32_COMPILER=y $BR2_CONFIG ; then · line 242

Quoted 2 lines
support/dependencies/dependencies.sh +2 -0
+required_perl_modules="Data::Dumper" # Needed to build host-autoconf
+required_perl_modules+=" Thread:Queue" # Used by host-automake

The += operator is bash specific, and not POSIX compliant. Since this dependencies.sh script specifies #!/bin/sh, you're not guaranteed to be executed with bash.

Totally true, I will fix that. Thanks!

Quoted 9 lines

support/dependencies/dependencies.sh if grep -q ^BR2_HOSTARCH_NEEDS_IA32_COMPILER=y $BR2_CONFIG ; then · line 249

Quoted 7 lines
support/dependencies/dependencies.sh +7 -0
+
+# This variable will keep the modules that are missing in your system.
+missing_perl_modules=""
+
+for pm in $required_perl_modules ; do
+	if ! perl  -e "require $pm" > /dev/null 2>&1 ; then
+		missing_perl_modules+=" $pm"

Ditto.

Noted.

Quoted 9 lines

support/dependencies/dependencies.sh if grep -q ^BR2_HOSTARCH_NEEDS_IA32_COMPILER=y $BR2_CONFIG ; then · line 256

Quoted 7 lines
support/dependencies/dependencies.sh +7 -0
+	fi
+done
+
+if [ -n "$missing_perl_modules" ] ; then
+	echo "Your Perl installation is not complete enough; at least the following"
+	echo "modules are missing:"
+	echo ""

Quotes not needed here, just "echo" is sufficient.

Yeah, that's right.

Quoted 6 lines

support/dependencies/dependencies.sh if grep -q ^BR2_HOSTARCH_NEEDS_IA32_COMPILER=y $BR2_CONFIG ; then · line 260

Quoted 4 lines
support/dependencies/dependencies.sh +4 -0
+	for pm in $missing_perl_modules ; do
+		echo -e "\t $pm"
+	done
+	echo ""

Ditto.

Noted.

I will send a new version today.

Regards,

Vincent.

Quoted 2 lines

Thomas