Skip to content

Commit c32eeb3

Browse files
committed
autogen: add sanity checks for git submodules
Signed-off-by: Jeff Squyres <[email protected]>
1 parent 3f11c8e commit c32eeb3

File tree

1 file changed

+49
-1
lines changed

1 file changed

+49
-1
lines changed

autogen.pl

Lines changed: 49 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
#!/usr/bin/env perl
22
#
3-
# Copyright (c) 2009-2017 Cisco Systems, Inc. All rights reserved
3+
# Copyright (c) 2009-2019 Cisco Systems, Inc. All rights reserved
44
# Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
55
# Copyright (c) 2013 Mellanox Technologies, Inc.
66
# All rights reserved.
@@ -1231,6 +1231,54 @@ sub in_tarball {
12311231

12321232
#---------------------------------------------------------------------------
12331233

1234+
++$step;
1235+
verbose "\n$step. Checking for git submodules\n\n";
1236+
1237+
# Make sure we got a submodule-full clone. If not, abort and let a
1238+
# human figure it out.
1239+
if (-f ".gitmodules") {
1240+
open(IN, "git submodule status|")
1241+
|| die "Can't run \"git submodule status\"";
1242+
while (<IN>) {
1243+
chomp;
1244+
$_ =~ m/^(.)(.{40}) ([^ ]+) *\(*([^\(\)]*)\)*$/;
1245+
my $status = $1;
1246+
my $local_hash = $2;
1247+
my $path = $3;
1248+
my $extra = $4;
1249+
1250+
print("=== Submodule: $path\n");
1251+
1252+
# Make sure the submodule is there
1253+
if ($status eq "-") {
1254+
print(" ==> ERROR: Missing
1255+
1256+
The submodule \"$path\" is missing.
1257+
1258+
Perhaps you forgot to \"git clone --recursive ...\", or you need to
1259+
\"git submodule update --init --recursive\"...?\n\n");
1260+
exit(1);
1261+
}
1262+
1263+
# See if the submodule is at the expected git hash
1264+
# (it may be ok if it's not -- just warn the user)
1265+
$extra =~ m/-g(.+)/;
1266+
my $remote_hash = $1;
1267+
if ($remote_hash) {
1268+
my $abbrev_local_hash = substr($local_hash, 0, length($remote_hash));
1269+
if ($remote_hash ne $abbrev_local_hash) {
1270+
print(" ==> WARNING: Submodule hash is different than upstream.
1271+
If this is not intentional, you may want to run:
1272+
\"git submodule update --init --recursive\"\n");
1273+
} else {
1274+
print(" Local hash == remote hash (good!)\n");
1275+
}
1276+
}
1277+
}
1278+
}
1279+
1280+
#---------------------------------------------------------------------------
1281+
12341282
# Save the platform file in the m4
12351283
$m4 .= "dnl Platform file\n";
12361284

0 commit comments

Comments
 (0)