Perl / perl5

🐪 The Perl programming language
https://dev.perl.org/perl5/
Other
1.98k stars 560 forks source link

Incorrect detection of compiler when Intel compiler is chosen #18624

Closed ikitayama closed 1 year ago

ikitayama commented 3 years ago

Module:

Description

Steps to Reproduce

$ spack install perl %intel
==> Warning: Intel's compilers may or may not optimize to the same degree for non-Intel microprocessors for optimizations that are not unique to Intel microprocessors
[+] /p/project/cjzam11/kitayama1/projects/spack/opt/spack/linux-centos8-zen2/intel-19.1.2.254/berkeley-db-18.1.40-jjy7j5nzxuu7nm5pevxjgi3utkccauh7
[+] /p/project/cjzam11/kitayama1/projects/spack/opt/spack/linux-centos8-zen2/intel-19.1.2.254/pkgconf-1.7.3-dxsv5ekbdk4wqqehkhzo43ed5yoiukjz
[+] /p/project/cjzam11/kitayama1/projects/spack/opt/spack/linux-centos8-zen2/intel-19.1.2.254/ncurses-6.2-wjsinr65xfahdxiexluhqridjaakseih
[+] /p/project/cjzam11/kitayama1/projects/spack/opt/spack/linux-centos8-zen2/intel-19.1.2.254/readline-8.0-oprtsz6d7jkdyhpdv3fdeypn4fnai42a
[+] /p/project/cjzam11/kitayama1/projects/spack/opt/spack/linux-centos8-zen2/intel-19.1.2.254/gdbm-1.18.1-7w6f6zullwijmkvsl77gzcejv3t2ifpl
==> Installing perl-5.32.1-wg4hv7bbqtcdvwiwlstuaxb3u2jwjdww
==> No binary for perl-5.32.1-wg4hv7bbqtcdvwiwlstuaxb3u2jwjdww found: installing from source
==> Using cached archive: /p/project/cjzam11/kitayama1/projects/spack/var/spack/cache/_source-cache/archive/03/03b693901cd8ae807231b1787798cf1f2e0b8a56218d07b7da44f784a7caeb2c.tar.gz
==> Using cached archive: /p/project/cjzam11/kitayama1/projects/spack/var/spack/cache/_source-cache/archive/9d/9da50e155df72bce55cb69f51f1dbb4b62d23740fb99f6178bb27f22ebdf8a46.tar.gz
==> Moving resource stage
    source : /p/scratch/cjzam11/kitayama1/spack-stage/resource-cpanm-wg4hv7bbqtcdvwiwlstuaxb3u2jwjdww/spack-src/
    destination : /p/scratch/cjzam11/kitayama1/spack-stage/spack-stage-perl-5.32.1-wg4hv7bbqtcdvwiwlstuaxb3u2jwjdww/spack-src/cpanm/cpanm
==> No patches needed for perl
==> perl: Executing phase: 'configure'
==> perl: Executing phase: 'build'
==> Error: ProcessError: Command exited with status 2:
    'make' '-j16'

117 errors found in build log:
     30      cygwin        haiku          mirbsd        sco_2_3_2     uwin
     31      darwin        hpux           mpc           sco_2_3_3     vos
     32      dcosx         i386           ncr_tower     sco_2_3_4
     33      dec_osf       interix         netbsd           solaris_2
     34      dos_djgpp     irix_4          newsos4      stellar
     35      Which of these apply, if any? [linux]
  >> 36      gcc: error: unrecognized command line option '-we147'
  >> 37      gcc: error: unrecognized command line option '-mp'; did you mean '
             -p'?
  >> 38      gcc: error: unrecognized command line option '-no-gcc'; did you me
             an '-fno-dce'?
     39      Operating system name? [linux]
     40      Operating system version? [4.18.0-193.14.2.el8_2.x86_64]
     41      Installation prefix to use? (~name ok)
     42      [/p/project/cjzam11/kitayama1/projects/spack/opt/spack/linux-cento
             s8-zen2/intel-19.1.2.254/perl-5.32.1-wg4hv7bbqtcdvwiwlstuaxb3u2jwj
             dww]
     43      AFS does not seem to be running...
     44      What installation prefix should I use for installing files? (~name
              ok)

     ...

     922     icc: command line remark #10148: option '-mp' not supported
     923     icc: command line remark #10148: option '-mp' not supported
     924     icc: command line remark #10148: option '-mp' not supported
     925     icc: command line remark #10148: option '-mp' not supported
     926     icc: command line remark #10148: option '-mp' not supported
     927     icc: command line remark #10148: option '-mp' not supported
  >> 928     perl.c(624): error: identifier "__INT_MAX__" is undefined
     929                       if (grok_atoUV(s, &uv, NULL) && uv <= INT_MAX)
     930                                                             ^
     931
  >> 932     perl.c(4023): error: identifier "__INT_MAX__" is undefined
     933                   && uv <= PERL_INT_MAX
     934                            ^
     935
  >> 936     toke.c(835): error: type name is not allowed
     937         && OpSLAB(parser->nextval[nexttoke].opval) == slab) {
     938            ^
     939
  >> 940     toke.c(835): error: identifier "opslot_op" is undefined
     941         && OpSLAB(parser->nextval[nexttoke].opval) == slab) {
     942            ^
     943
  >> 944     toke.c(835): error: type name is not allowed
     945         && OpSLAB(parser->nextval[nexttoke].opval) == slab) {
     946            ^
     947
     948     compilation aborted for perlmini.c (code 2)
     949     make: *** [makefile:312: perlmini.o] Error 2
     950     make: *** Waiting for unfinished jobs....
  >> 951     pad.c(329): error: type name is not allowed
     952                   if (CvSLABBED(&cvbody)) OpslabREFCNT_dec_padok(OpSLA
             B(CvROOT(&cvbody)));
     953                                           ^
     954
  >> 955     pad.c(329): error: identifier "opslot_op" is undefined
     956                   if (CvSLABBED(&cvbody)) OpslabREFCNT_dec_padok(OpSLA
             B(CvROOT(&cvbody)));
     957                                           ^
     958
  >> 959     pad.c(329): error: type name is not allowed
     960                   if (CvSLABBED(&cvbody)) OpslabREFCNT_dec_padok(OpSLA
             B(CvROOT(&cvbody)));
     961                                           ^
     962
  >> 963     pad.c(329): error: type name is not allowed
     964                   if (CvSLABBED(&cvbody)) OpslabREFCNT_dec_padok(OpSLA
             B(CvROOT(&cvbody)));
     965                                           ^
     966
  >> 967     pad.c(329): error: type name is not allowed
     968                   if (CvSLABBED(&cvbody)) OpslabREFCNT_dec_padok(OpSLA
             B(CvROOT(&cvbody)));
     969                                           ^
     970
  >> 971     pad.c(329): error: type name is not allowed
     972                   if (CvSLABBED(&cvbody)) OpslabREFCNT_dec_padok(OpSLA
             B(CvROOT(&cvbody)));
     973                                           ^
     974
  >> 975     pad.c(329): error: type name is not allowed
     976                   if (CvSLABBED(&cvbody)) OpslabREFCNT_dec_padok(OpSLA
             B(CvROOT(&cvbody)));
     977                                           ^
     978
  >> 979     pad.c(503): error: type name is not allowed
     980           if      (CvROOT(cv))  slab = OpSLAB(CvROOT(cv));
     981                                        ^
     982
  >> 983     pad.c(503): error: identifier "opslot_op" is undefined
     984           if      (CvROOT(cv))  slab = OpSLAB(CvROOT(cv));
     985                                        ^
     986
  >> 987     pad.c(503): error: type name is not allowed
     988           if      (CvROOT(cv))  slab = OpSLAB(CvROOT(cv));
     989                                        ^
     990
  >> 991     mro_core.c(344): error: expected an expression
     992                    ? newSVhek(SvSHARED_HEK_FROM_PV(SvPVX(val)))
     993                      ^
     994
  >> 995     mro_core.c(344): error: identifier "hek_key" is undefined
     996                    ? newSVhek(SvSHARED_HEK_FROM_PV(SvPVX(val)))
     997                      ^
     998
  >> 999     toke.c(4666): error: identifier "__INT_MAX__" is undefined
     1000          unsigned int correct_length = maxlen < 0 ?  PERL_INT_MAX : m
             axlen;
     1001                                                      ^
     1002
  >> 1003    pad.c(2206): error: expected an expression
     1004        CvNAME_HEK_set(cv, share_hek_hek(CvNAME_HEK(proto)));
     1005        ^
     1006
  >> 1007    pad.c(2206): error: identifier "shared_he_hek" is undefined
     1008        CvNAME_HEK_set(cv, share_hek_hek(CvNAME_HEK(proto)));
     1009        ^
     1010
  >> 1011    pad.c(2736): error: expected an expression
     1012          Newxz(alloc2,
     1013          ^
     1014
  >> 1015    pad.c(2736): error: identifier "xpadn_str" is undefined
     1016          Newxz(alloc2,
     1017          ^
     1018
  >> 1019    pad.c(2736): error: expected an expression
     1020          Newxz(alloc2,
     1021          ^
     1022
  >> 1023    pad.c(2736): error: expected an expression
     1024          Newxz(alloc2,
     1025          ^
     1026
  >> 1027    pad.c(2736): error: expected an expression
     1028          Newxz(alloc2,
     1029          ^
     1030
  >> 1031    pad.c(2772): error: expected an expression
     1032          PadnameREFCNT(PADNAME_FROM_PV(PadnamePV(outer)))++;
     1033          ^
     1034
  >> 1035    pad.c(2772): error: identifier "xpadn_str" is undefined
     1036          PadnameREFCNT(PADNAME_FROM_PV(PadnamePV(outer)))++;
     1037          ^
     1038
  >> 1039    pad.c(2790): error: expected an expression
     1040           PadnameREFCNT_dec(PADNAME_FROM_PV(PadnamePV(pn)));
     1041           ^
     1042
  >> 1043    pad.c(2790): error: identifier "xpadn_str" is undefined
     1044           PadnameREFCNT_dec(PADNAME_FROM_PV(PadnamePV(pn)));
     1045           ^
     1046
  >> 1047    pad.c(2824): error: expected an expression
     1048           ? newPADNAMEouter(padname_dup(PADNAME_FROM_PV(PadnamePV(src
             )), param))
     1049                             ^
     1050
  >> 1051    pad.c(2824): error: identifier "xpadn_str" is undefined
     1052           ? newPADNAMEouter(padname_dup(PADNAME_FROM_PV(PadnamePV(src
             )), param))
     1053                             ^
     1054
     1055    compilation aborted for pad.c (code 2)
     1056    compilation aborted for mro_core.c (code 2)
     1057    make: *** [makefile:251: pad.o] Error 2
     1058    make: *** [makefile:251: mro_core.o] Error 2
  >> 1059    hv.c(88): error: type name is not allowed
     1060          Newx(k, HEK_BASESIZE + len + 2, char);
     1061          ^
     1062
  >> 1063    hv.c(88): error: identifier "hek_key" is undefined
     1064          Newx(k, HEK_BASESIZE + len + 2, char);
     1065          ^
     1066
  >> 1067    hv.c(88): error: type name is not allowed
     1068          Newx(k, HEK_BASESIZE + len + 2, char);
     1069          ^
     1070
  >> 1071    hv.c(88): error: type name is not allowed
     1072          Newx(k, HEK_BASESIZE + len + 2, char);
     1073          ^
     1074
  >> 1075    hv.c(88): error: type name is not allowed
     1076          Newx(k, HEK_BASESIZE + len + 2, char);
     1077          ^
     1078
  >> 1079    hv.c(132): error: expected an expression
     1080       (void)share_hek_hek(shared);
     1081             ^
     1082
  >> 1083    hv.c(132): error: identifier "shared_he_hek" is undefined
     1084       (void)share_hek_hek(shared);
     1085             ^
     1086
  >> 1087    gv.c(3734): error: type name is not allowed
     1088                   STRUCT_OFFSET(XPVIV, xiv_iv));
     1089                   ^
     1090
  >> 1091    gv.c(3734): error: identifier "xiv_u" is undefined
     1092                   STRUCT_OFFSET(XPVIV, xiv_iv));
     1093                   ^
     1094
  >> 1095    hv.c(164): error: type name is not allowed
     1096       Newx(k, HEK_BASESIZE + sizeof(const SV *), char);
     1097       ^
     1098
  >> 1099    hv.c(164): error: identifier "hek_key" is undefined
     1100       Newx(k, HEK_BASESIZE + sizeof(const SV *), char);
     1101       ^
     1102
  >> 1103    hv.c(164): error: type name is not allowed
     1104       Newx(k, HEK_BASESIZE + sizeof(const SV *), char);
     1105       ^
     1106
  >> 1107    hv.c(164): error: type name is not allowed
     1108       Newx(k, HEK_BASESIZE + sizeof(const SV *), char);
     1109       ^
     1110
  >> 1111    hv.c(164): error: type name is not allowed
     1112       Newx(k, HEK_BASESIZE + sizeof(const SV *), char);
     1113       ^
     1114
  >> 1115    hv.c(176): error: expected an expression
     1116           (void)share_hek_hek(shared);
     1117                 ^
     1118
  >> 1119    hv.c(176): error: identifier "shared_he_hek" is undefined
     1120           (void)share_hek_hek(shared);
     1121                 ^
     1122
  >> 1123    hv.c(431): error: type name is not allowed
     1124               Newx(k, HEK_BASESIZE + sizeof(const SV *), char);
     1125               ^
     1126
  >> 1127    hv.c(431): error: identifier "hek_key" is undefined
     1128               Newx(k, HEK_BASESIZE + sizeof(const SV *), char);
     1129               ^
     1130
  >> 1131    hv.c(431): error: type name is not allowed
     1132               Newx(k, HEK_BASESIZE + sizeof(const SV *), char);
     1133               ^
     1134
  >> 1135    hv.c(431): error: type name is not allowed
     1136               Newx(k, HEK_BASESIZE + sizeof(const SV *), char);
     1137               ^
     1138
  >> 1139    hv.c(431): error: type name is not allowed
     1140               Newx(k, HEK_BASESIZE + sizeof(const SV *), char);
     1141               ^
     1142
  >> 1143    hv.c(631): error: expected an expression
     1144                  keysv_hek  = SvSHARED_HEK_FROM_PV(SvPVX_const(keysv)
             );
     1145                               ^
     1146
  >> 1147    hv.c(631): error: identifier "hek_key" is undefined
     1148                  keysv_hek  = SvSHARED_HEK_FROM_PV(SvPVX_const(keysv)
             );
     1149                               ^
     1150
  >> 1151    hv.c(632): error: expected an expression
     1152              hash = SvSHARED_HASH(keysv);
     1153                     ^
     1154
  >> 1155    hv.c(1187): error: expected an expression
     1156                  keysv_hek  = SvSHARED_HEK_FROM_PV(SvPVX_const(keysv)
             );
     1157                               ^
     1158
  >> 1159    hv.c(1187): error: identifier "hek_key" is undefined
     1160                  keysv_hek  = SvSHARED_HEK_FROM_PV(SvPVX_const(keysv)
             );
     1161                               ^
     1162
  >> 1163    hv.c(1188): error: expected an expression
     1164              hash = SvSHARED_HASH(keysv);
     1165                     ^
     1166
     1167    compilation aborted for gv.c (code 2)
     1168    make: *** [makefile:250: gv.o] Error 2
  >> 1169    hv.c(2719): error: type name is not allowed
     1170                      Newxz(k, HEK_BASESIZE + sizeof(const SV *), char
             );
     1171                      ^
     1172
  >> 1173    hv.c(2719): error: identifier "hek_key" is undefined
     1174                      Newxz(k, HEK_BASESIZE + sizeof(const SV *), char
             );
     1175                      ^
     1176
  >> 1177    hv.c(2719): error: type name is not allowed
     1178                      Newxz(k, HEK_BASESIZE + sizeof(const SV *), char
             );
     1179                      ^
     1180
  >> 1181    hv.c(2719): error: type name is not allowed
     1182                      Newxz(k, HEK_BASESIZE + sizeof(const SV *), char
             );
     1183                      ^
     1184
  >> 1185    hv.c(2719): error: type name is not allowed
     1186                      Newxz(k, HEK_BASESIZE + sizeof(const SV *), char
             );
     1187                      ^
     1188
  >> 1189    hv.c(2970): error: expected an expression
     1190                     - STRUCT_OFFSET(struct shared_he,
     1191                       ^
     1192
  >> 1193    hv.c(2970): error: identifier "shared_he_hek" is undefined
     1194                     - STRUCT_OFFSET(struct shared_he,
     1195                       ^
     1196
  >> 1197    hv.c(3131): error: expected an expression
     1198       Newx(k, STRUCT_OFFSET(struct shared_he,
     1199       ^
     1200
  >> 1201    hv.c(3131): error: identifier "shared_he_hek" is undefined
     1202       Newx(k, STRUCT_OFFSET(struct shared_he,
     1203       ^
     1204
  >> 1205    hv.c(3131): error: expected an expression
     1206       Newx(k, STRUCT_OFFSET(struct shared_he,
     1207       ^
     1208
  >> 1209    hv.c(3131): error: expected an expression
     1210       Newx(k, STRUCT_OFFSET(struct shared_he,
     1211       ^
     1212
  >> 1213    hv.c(3131): error: expected an expression
     1214       Newx(k, STRUCT_OFFSET(struct shared_he,
     1215       ^
     1216
  >> 1217    hv.c(3491): error: expected an expression
     1218       hash = SvSHARED_HASH(key);
     1219              ^
     1220
  >> 1221    hv.c(3491): error: identifier "hek_key" is undefined
     1222       hash = SvSHARED_HASH(key);
     1223              ^
     1224
  >> 1225    hv.c(3679): error: expected an expression
     1226       hash = SvSHARED_HASH(key);
     1227              ^
     1228
  >> 1229    hv.c(3679): error: identifier "hek_key" is undefined
     1230       hash = SvSHARED_HASH(key);
     1231              ^
     1232
     1233    util.c(4568): warning #69: integer conversion resulted in truncati
             on
     1234          u += SEED_C5 * (U32)PTR2UV(&when);
     1235                         ^
     1236
     1237    compilation aborted for hv.c (code 2)
  >> 1238    op.c(264): error: type name is not allowed
     1239          U16 sz = OpSLOT(o)->opslot_size;
     1240                   ^
     1241
  >> 1242    op.c(264): error: identifier "opslot_op" is undefined
     1243          U16 sz = OpSLOT(o)->opslot_size;
     1244                   ^
     1245
  >> 1246    op.c(265): error: type name is not allowed
     1247          U16 index = OPSLOT_SIZE_TO_INDEX(sz);
     1248                      ^
     1249
  >> 1250    op.c(341): error: type name is not allowed
     1251          sz = opsz + OPSLOT_HEADER_P;
     1252                      ^
     1253
  >> 1254    op.c(341): error: identifier "opslot_op" is undefined
     1255          sz = opsz + OPSLOT_HEADER_P;
     1256                      ^
     1257
  >> 1258    op.c(347): error: type name is not allowed
     1259              OPSLOT_SIZE_TO_INDEX(sz) < head_slab->opslab_freed_size)
              {
     1260              ^
     1261
  >> 1262    op.c(351): error: type name is not allowed
     1263              for (base_index = OPSLOT_SIZE_TO_INDEX(sz);
     1264                                ^
     1265
  >> 1266    op.c(384): error: type name is not allowed
     1267       if (slab2->opslab_free_space >= SIZE_TO_PSIZE(sizeof(OP)) + OPS
             LOT_HEADER_P) {
     1268                                                                   ^
     1269
  >> 1270    op.c(501): error: type name is not allowed
     1271          slab = OpSLAB(o);
     1272                 ^
     1273
  >> 1274    op.c(501): error: identifier "opslot_op" is undefined
     1275          slab = OpSLAB(o);
     1276                 ^
     1277
  >> 1278    op.c(501): error: type name is not allowed
     1279          slab = OpSLAB(o);
     1280                 ^
     1281
     1282    make: *** [makefile:250: hv.o] Error 2
  >> 1283    op.c(3068): error: function call is not allowed in a constant expr
             ession
     1284          STATIC_ASSERT_STMT(   STRUCT_OFFSET(BINOP,    op_last)
     1285          ^
     1286
  >> 1287    op.c(3068): error: type name is not allowed
     1288          STATIC_ASSERT_STMT(   STRUCT_OFFSET(BINOP,    op_last)
     1289          ^
     1290
  >> 1291    op.c(3068): error: identifier "op_last" is undefined
     1292          STATIC_ASSERT_STMT(   STRUCT_OFFSET(BINOP,    op_last)
     1293          ^
     1294
  >> 1295    op.c(3068): error: function call is not allowed in a constant expr
             ession
     1296          STATIC_ASSERT_STMT(   STRUCT_OFFSET(BINOP,    op_last)
     1297          ^
     1298
  >> 1299    op.c(3068): error: type name is not allowed
     1300          STATIC_ASSERT_STMT(   STRUCT_OFFSET(BINOP,    op_last)
     1301          ^
     1302
  >> 1303    op.c(3068): error: identifier "op_aux" is undefined
     1304          STATIC_ASSERT_STMT(   STRUCT_OFFSET(BINOP,    op_last)
     1305          ^
     1306
  >> 1307    op.c(3070): error: function call is not allowed in a constant expr
             ession
     1308          STATIC_ASSERT_STMT(   STRUCT_OFFSET(LISTOP,   op_last)
     1309          ^
     1310
  >> 1311    op.c(3070): error: type name is not allowed
     1312          STATIC_ASSERT_STMT(   STRUCT_OFFSET(LISTOP,   op_last)
     1313          ^
     1314
  >> 1315    op.c(3070): error: identifier "op_last" is undefined
     1316          STATIC_ASSERT_STMT(   STRUCT_OFFSET(LISTOP,   op_last)
     1317          ^
     1318
  >> 1319    op.c(3070): error: function call is not allowed in a constant expr
             ession
     1320          STATIC_ASSERT_STMT(   STRUCT_OFFSET(LISTOP,   op_last)
     1321          ^
     1322
  >> 1323    op.c(3070): error: type name is not allowed
     1324          STATIC_ASSERT_STMT(   STRUCT_OFFSET(LISTOP,   op_last)
     1325          ^
     1326
  >> 1327    op.c(3070): error: identifier "op_aux" is undefined
     1328          STATIC_ASSERT_STMT(   STRUCT_OFFSET(LISTOP,   op_last)
     1329          ^
     1330
  >> 1331    op.c(4151): error: identifier "__INT_MAX__" is undefined
     1332                  PAD_COMPNAME_GEN_set(o->op_targ, PERL_INT_MAX);
     1333                  ^
     1334
  >> 1335    op.c(4305): error: identifier "__INT_MAX__" is undefined
     1336           PL_modcount = RETURN_UNLIMITED_NUMBER;
     1337                         ^
     1338
  >> 1339    op.c(4422): error: identifier "__INT_MAX__" is undefined
     1340           if (PL_modcount != RETURN_UNLIMITED_NUMBER)
     1341                              ^
     1342
  >> 1343    op.c(4427): error: identifier "__INT_MAX__" is undefined
     1344           PL_modcount = RETURN_UNLIMITED_NUMBER;
     1345                         ^
     1346
  >> 1347    op.c(4439): error: identifier "__INT_MAX__" is undefined
     1348                 PL_modcount = RETURN_UNLIMITED_NUMBER;
     1349                               ^
     1350
  >> 1351    op.c(4465): error: identifier "__INT_MAX__" is undefined
     1352             PL_modcount = RETURN_UNLIMITED_NUMBER;
     1353                           ^
     1354
  >> 1355    op.c(9333): error: identifier "__INT_MAX__" is undefined
     1356                  else if (PL_modcount < RETURN_UNLIMITED_NUMBER &&
     1357                                         ^
     1358
  >> 1359    op.c(10168): error: identifier "__INT_MAX__" is undefined
     1360           PAD_COMPNAME_GEN_set(padoff, PERL_INT_MAX);
     1361           ^
     1362
  >> 1363    op.c(10235): error: type name is not allowed
     1364              &&    OpSLOT(loop)->opslot_size
     1365                    ^
     1366
  >> 1367    op.c(10235): error: identifier "opslot_op" is undefined
     1368              &&    OpSLOT(loop)->opslot_size
     1369                    ^
     1370
  >> 1371    op.c(10236): error: type name is not allowed
     1372                  < SIZE_TO_PSIZE(sizeof(LOOP)) + OPSLOT_HEADER_P)
     1373                                                  ^
     1374
  >> 1375    op.c(11015): error: expected an expression
     1376       if (hek) (void)share_hek_hek(hek);
     1377                      ^
     1378
  >> 1379    op.c(11015): error: identifier "shared_he_hek" is undefined
     1380       if (hek) (void)share_hek_hek(hek);
     1381                      ^
     1382
     1383    compilation aborted for toke.c (code 2)
     1384    make: *** [makefile:250: toke.o] Error 2
  >> 1385    op.c(13723): error: identifier "__INT_MAX__" is undefined
     1386       PAD_COMPNAME_GEN_set(o->op_targ, PERL_INT_MAX);
     1387       ^
     1388
  >> 1389    op.c(15585): error: identifier "__INT_MAX__" is undefined
     1390          if (PAD_COMPNAME_GEN(o->op_targ) == PERL_INT_MAX)
     1391                                              ^
     1392
     1393    compilation aborted for opmini.c (code 2)
     1394    make: *** [makefile:304: opmini.o] Error 2
  >> 1395    regcomp.c(21715): error: type name is not allowed
     1396          sizeof(regexp) - STRUCT_OFFSET(regexp, xpv_cur));
     1397                           ^
     1398
  >> 1399    regcomp.c(21715): error: identifier "xpv_cur" is undefined
     1400          sizeof(regexp) - STRUCT_OFFSET(regexp, xpv_cur));
     1401                           ^
     1402
     1403    compilation aborted for regcomp.c (code 2)
     1404    make: *** [makefile:250: regcomp.o] Error 2

See build log for details:
  /p/scratch/cjzam11/kitayama1/spack-stage/spack-stage-perl-5.32.1-wg4hv7bbqtcdvwiwlstuaxb3u2jwjdww/spack-build-out.txt

Expected behavior

Perl configuration

# perl -V output goes here
ikitayama commented 3 years ago

Dear Community, What's the difference between 5.32.1 and 5.32.0 in terms of compiler treatment? I ask the former can't be built with Intel compiler.

hvds commented 3 years ago

Dear Community, What's the difference between 5.32.1 and 5.32.0 in terms of compiler treatment? I ask [as] the former can't be built with Intel compiler.

The difference in Configure is hardly anything:

% git diff v5.32.0 v5.32.1 ./Configure
diff --git a/Configure b/Configure
index cef8c3c078..fbc225822a 100755
--- a/Configure
+++ b/Configure
@@ -21477,6 +21477,9 @@ int
 main(int ac, char **av)
 {
   signal(SIGSEGV, exit);
+#ifdef SIGBUS
+  signal(SIGBUS,  exit);
+#endif

   myprintf("%s%cs all right, then\n", "that", '\'');
   exit(0);

I'm not familiar with spack, I think first we'd need to see how it is invoking Configure. But digging around a bit, I'm guessing this spec file is the basis of what you're trying to install, and after a quick scan through its configure_args method I don't see anything obviously wrong.

It may be informative also to try a manual run of Configure, with something like ./Configure -des -Dcc=icc, to see if it fails in the same way.

ikitayama commented 3 years ago

@hvds , thanks for looking at this issue.

$ ./Configure -des -Dcc=icc
First let's make sure your kit is complete.  Checking...
Locating common programs...
Checking compatibility between /usr/bin/echo and builtin echo (if any)...
Symbolic links are supported.
Checking how to test for symbolic links...
You can test for symbolic links with 'test -h'.
Checking for cross-compile
No targethost for running compiler tests against defined, running locally
Good, your tr supports [:lower:] and [:upper:] to convert case.
Using [:upper:] and [:lower:] to convert case.
aix_3         dragonfly       irix_5        nonstopux     sunos_4_0
aix_4         dynixptx        irix_6_0      openbsd       sunos_4_1
aix           dynix           irix_6_1      opus          super-ux
altos486      epix            irix_6        os2           svr4
amigaos       esix4           isc_2         os390         svr5
atheos        fps             isc           os400         ti1500
aux_3         freebsd         linux-android     posix-bc      ultrix_4
bitrig        freemint        linux         qnx           umips
bsdos         gnukfreebsd     lynxos        riscos        unicosmk
catamount     gnuknetbsd      midnightbsd       sco_2_3_0     unicos
convexos      gnu             minix         sco_2_3_1     unisysdynix
cxux          greenhills      mips          sco_2_3_2     utekv
cygwin        haiku           mirbsd        sco_2_3_3     uwin
darwin        hpux            mpc           sco_2_3_4     vos
dcosx         i386            ncr_tower     sco
dec_osf       interix         netbsd        solaris_2
dos_djgpp     irix_4          newsos4       stellar
Which of these apply, if any? [linux]
gcc: error: unrecognized command line option '-we147'
gcc: error: unrecognized command line option '-mp'; did you mean '-p'?
gcc: error: unrecognized command line option '-no-gcc'; did you mean '-fno-dce'?
Operating system name? [linux]
Operating system version? [4.18.0-193.14.2.el8_2.x86_64]
Installation prefix to use? (~name ok) [/usr/local]
AFS does not seem to be running...
What installation prefix should I use for installing files? (~name ok)
[/usr/local]
Getting the current patchlevel...
Build a threading Perl? [n]
Build Perl for multiplicity? [n]
Use which C compiler? [icc]
icc: command line remark #10148: option '-mp' not supported
icc: command line remark #10148: option '-mp' not supported
Checking for GNU cc in disguise and/or its version number...
icc: command line remark #10148: option '-mp' not supported
Now, how can we feed standard input to your C preprocessor...
Directories to use for library searches?
[/usr/local/lib /p/software/jurecadc/stages/2020/software/Python/3.8.5-GCCcore-9.3.0/lib/../lib64 /p/software/jurecadc/stages/2020/software/libjpeg-turbo/2.0.5-GCCcore-9.3.0/lib64/../lib64 /p/software/jurecadc/stages/2020/software/libspatialindex/1.9.3-GCCcore-9.3.0/lib/../lib64 /p/software/jurecadc/stages/2020/software/gflags/2.2.2-GCCcore-9.3.0/lib/../lib64 /p/software/jurecadc/stages/2020/software/protobuf/3.13.0-GCCcore-9.3.0/lib64/../lib64 /p/software/jurecadc/stages/2020/software/PostgreSQL/12.3-GCCcore-9.3.0/lib/../lib64 /p/software/jurecadc/stages/2020/software/Java/1.8/lib/../lib64 /p/software/jurecadc/stages/2020/software/libyaml/0.2.5-GCCcore-9.3.0/lib/../lib64 /p/software/jurecadc/stages/2020/software/libffi/3.3-GCCcore-9.3.0/lib64/../lib64 /p/software/jurecadc/stages/2020/software/libffi/3.3-GCCcore-9.3.0/lib/../lib64 /p/software/jurecadc/stages/2020/software/libxslt/1.1.34-GCCcore-9.3.0/lib/../lib64 /p/software/jurecadc/stages/2020/software/libxml2/2.9.10-GCCcore-9.3.0/lib/../lib64 /p/software/jurecadc/stages/2020/software/XZ/5.2.5-GCCcore-9.3.0/lib/../lib64 /p/software/jurecadc/stages/2020/software/GMP/6.2.0-GCCcore-9.3.0/lib/../lib64 /p/software/jurecadc/stages/2020/software/Tk/8.6.10-GCCcore-9.3.0/lib/../lib64 /p/software/jurecadc/stages/2020/software/X11/20200222-GCCcore-9.3.0/lib/../lib64 /p/software/jurecadc/stages/2020/software/libpciaccess/0.16-GCCcore-9.3.0/lib/../lib64 /p/software/jurecadc/stages/2020/software/fontconfig/2.13.92-GCCcore-9.3.0/lib/../lib64 /p/software/jurecadc/stages/2020/software/util-linux/2.36-GCCcore-9.3.0/lib/../lib64 /p/software/jurecadc/stages/2020/software/freetype/2.10.1-GCCcore-9.3.0/lib/../lib64 /p/software/jurecadc/stages/2020/software/libpng/1.6.37-GCCcore-9.3.0/lib/../lib64 /p/software/jurecadc/stages/2020/software/expat/2.2.9-GCCcore-9.3.0/lib/../lib64 /p/software/jurecadc/stages/2020/software/SQLite/3.32.3-GCCcore-9.3.0/lib/../lib64 /p/software/jurecadc/stages/2020/software/Tcl/8.6.10-GCCcore-9.3.0/lib/../lib64 /p/software/jurecadc/stages/2020/software/libreadline/8.0-GCCcore-9.3.0/lib/../lib64 /p/software/jurecadc/stages/2020/software/bzip2/1.0.8-GCCcore-9.3.0/lib/../lib64 /p/software/jurecadc/stages/2020/software/UCX/1.8.1/lib/../lib64 /p/software/jurecadc/stages/2020/software/nvidia-driver/default/lib64/../lib64 /p/software/jurecadc/stages/2020/software/numactl/2.0.13/lib/../lib64 /p/software/jurecadc/stages/2020/software/ncurses/6.2-GCCcore-9.3.0/lib/../lib64 /p/software/jurecadc/stages/2020/software/binutils/2.34-GCCcore-9.3.0/lib/../lib64 /p/software/jurecadc/stages/2020/software/zlib/1.2.11-GCCcore-9.3.0/lib/../lib64 /lib/../lib64 /usr/lib/../lib64 /p/software/jurecadc/stages/2020/software/Python/3.8.5-GCCcore-9.3.0/lib /p/software/jurecadc/stages/2020/software/libjpeg-turbo/2.0.5-GCCcore-9.3.0/lib64 /p/software/jurecadc/stages/2020/software/libspatialindex/1.9.3-GCCcore-9.3.0/lib /p/software/jurecadc/stages/2020/software/gflags/2.2.2-GCCcore-9.3.0/lib /p/software/jurecadc/stages/2020/software/protobuf/3.13.0-GCCcore-9.3.0/lib64 /p/software/jurecadc/stages/2020/software/PostgreSQL/12.3-GCCcore-9.3.0/lib /p/software/jurecadc/stages/2020/software/Java/1.8/lib /p/software/jurecadc/stages/2020/software/libyaml/0.2.5-GCCcore-9.3.0/lib /p/software/jurecadc/stages/2020/software/libffi/3.3-GCCcore-9.3.0/lib64 /p/software/jurecadc/stages/2020/software/libffi/3.3-GCCcore-9.3.0/lib /p/software/jurecadc/stages/2020/software/libxslt/1.1.34-GCCcore-9.3.0/lib /p/software/jurecadc/stages/2020/software/libxml2/2.9.10-GCCcore-9.3.0/lib /p/software/jurecadc/stages/2020/software/XZ/5.2.5-GCCcore-9.3.0/lib /p/software/jurecadc/stages/2020/software/GMP/6.2.0-GCCcore-9.3.0/lib /p/software/jurecadc/stages/2020/software/Tk/8.6.10-GCCcore-9.3.0/lib /p/software/jurecadc/stages/2020/software/X11/20200222-GCCcore-9.3.0/lib /p/software/jurecadc/stages/2020/software/libpciaccess/0.16-GCCcore-9.3.0/lib /p/software/jurecadc/stages/2020/software/fontconfig/2.13.92-GCCcore-9.3.0/lib /p/software/jurecadc/stages/2020/software/util-linux/2.36-GCCcore-9.3.0/lib /p/software/jurecadc/stages/2020/software/freetype/2.10.1-GCCcore-9.3.0/lib /p/software/jurecadc/stages/2020/software/libpng/1.6.37-GCCcore-9.3.0/lib /p/software/jurecadc/stages/2020/software/expat/2.2.9-GCCcore-9.3.0/lib /p/software/jurecadc/stages/2020/software/SQLite/3.32.3-GCCcore-9.3.0/lib /p/software/jurecadc/stages/2020/software/Tcl/8.6.10-GCCcore-9.3.0/lib /p/software/jurecadc/stages/2020/software/libreadline/8.0-GCCcore-9.3.0/lib /p/software/jurecadc/stages/2020/software/bzip2/1.0.8-GCCcore-9.3.0/lib /p/software/jurecadc/stages/2020/software/impi/2019.8.254-iccifort-2020.2.254-GCC-9.3.0/intel64/libfabric/lib /p/software/jurecadc/stages/2020/software/impi/2019.8.254-iccifort-2020.2.254-GCC-9.3.0/intel64/lib/release /p/software/jurecadc/stages/2020/software/impi/2019.8.254-iccifort-2020.2.254-GCC-9.3.0/intel64/lib /p/software/jurecadc/stages/2020/software/UCX/1.8.1/lib /p/software/jurecadc/stages/2020/software/CUDA/11.0/lib64/stubs /p/software/jurecadc/stages/2020/software/CUDA/11.0/lib64 /p/software/jurecadc/stages/2020/software/nvidia-driver/default/lib64 /p/software/jurecadc/stages/2020/software/numactl/2.0.13/lib /p/software/jurecadc/stages/2020/software/ncurses/6.2-GCCcore-9.3.0/lib /p/software/jurecadc/stages/2020/software/binutils/2.34-GCCcore-9.3.0/lib /p/software/jurecadc/stages/2020/software/zlib/1.2.11-GCCcore-9.3.0/lib /lib /usr/lib /lib64 /usr/lib64 /usr/local/lib64]
What is the file extension used for shared libraries? [so]
Make shared library basenames unique? [n]
Build Perl for SOCKS? [n]
Try to use long doubles if available? [n]
Checking for optional libraries...
What libraries to use?
[-lpthread -lgdbm -ldl -lm -lcrypt -lutil -lc -lgdbm_compat]
What optimizer/debugger flag should be used? [-O3]
Any additional cc flags? [-we147 -mp -no-gcc -I/usr/local/include]
Let me guess what the preprocessor flags are...
Any additional ld flags (NOT including libraries)? [ -L/usr/local/lib]
Checking your choice of C compiler and flags for coherency...
Checking to see how big your integers are...
Checking to see if you have long long...
Checking to see how big your long longs are...
Computing filename position in cpp output for #include directives...
<inttypes.h> found.
Checking to see if you have int64_t...
Checking which 64-bit integer type we could use...
We could use 'long' for 64-bit integers.
Try to use maximal 64-bit support, if available? [y]
Checking if your C library has broken 64-bit functions...
Checking for GNU C Library...
nm probably won't work on the GNU C Library.
Shall I use /p/software/jurecadc/stages/2020/software/binutils/2.34-GCCcore-9.3.0/bin/nm to extract C symbols from the libraries?
[n]
Checking for C++...
Checking to see how big your double precision numbers are...
Checking to see if you have long double...
ldexpl() found.
Checking to see how big your long doubles are...
Checking the kind of long doubles you have...
You have x86 80-bit little endian long doubles.
What is your architecture name [x86_64-linux]
Add the Perl API version to your archname? [n]
This architecture is naturally 64-bit, not changing architecture name.
Pathname where the public executables will reside? (~name ok)
[/usr/local/bin]
Use relocatable @INC? [n]
Pathname where the private library files will reside? (~name ok)
[/usr/local/lib/perl5/5.32.1]
Where do you want to put the public architecture-dependent libraries? (~name ok)
[/usr/local/lib/perl5/5.32.1/x86_64-linux]
Other username to test security of setuid scripts with? [none]
Well, the recommended value is *not* secure.
Does your kernel have *secure* setuid scripts? [n]
Installation prefix to use for add-on modules and utilities? (~name ok)
[/usr/local]
Pathname for the site-specific library files? (~name ok)
[/usr/local/lib/perl5/site_perl/5.32.1]
List of earlier versions to include in @INC? [none]
<malloc/malloc.h> NOT found.
<malloc.h> found.
Checking to see how big your pointers are...
Do you wish to wrap malloc calls to protect against potential overflows? [y]
Do you wish to attempt to use the malloc that comes with perl5? [n]
Your system wants malloc to return 'void *', it would seem.
Your system uses void free(), it would seem.
Pathname for the site-specific architecture-dependent library files? (~name ok)
[/usr/local/lib/perl5/site_perl/5.32.1/x86_64-linux]
Do you want to configure vendor-specific add-on directories? [n]
Colon-separated list of additional directories for perl to search? [none]
Support DTrace if available? [n]
Install any extra modules (y or n)? [n]
Directory for the main Perl5 html pages? (~name ok) [none]
Directory for the Perl5 module html pages? (~name ok) [none]
Do you want to install perl as /usr/bin/perl? [n]
dlopen() found.
<unistd.h> found.
Do you wish to use dynamic loading? [y]
Source file to use for dynamic loading [ext/DynaLoader/dl_dlopen.xs]
Any special flags to pass to icc -c to compile shared library modules?
[-fPIC]
What command should be used to create dynamic libraries? [icc]
Any special flags to pass to icc to create a dynamically loaded library?
[-shared -O3 -L/usr/local/lib]
Any special flags to pass to icc to use dynamic linking? [-Wl,-E]
ld supports scripting
Build a shared libperl.so (y/n) [n]
System manual is in /usr/share/man/man1.
Where do the main Perl5 manual pages (source) go? (~name ok)
[/usr/local/share/man/man1]
What suffix should be used for the main Perl5 man pages? [1]
You can have filenames longer than 14 characters.
Where do the perl5 library man pages (source) go? (~name ok)
[/usr/local/share/man/man3]
What suffix should be used for the perl5 library man pages? [3]
Figuring out host name...
Your host name appears to be "jrlogin03.jureca". Right? [y]
What is your domain name? [.jureca]
What is your e-mail address? [kitayama1@jrlogin03.jureca]
Perl administrator e-mail address [kitayama1@jrlogin03.jureca]
Do you want to use a version number suffix for installed binaries? [n]
What shall I put after the #! to start up perl ("none" to not use #!)?
[/usr/local/bin/perl]
Where do you keep publicly executable scripts? (~name ok) [/usr/local/bin]
Pathname where the add-on public executables should be installed? (~name ok)
[/usr/local/bin]
Pathname where the site-specific html pages should be installed? (~name ok)
[none]
Pathname where the site-specific library html pages should be installed? (~name ok)
[none]
Pathname where the site-specific manual pages should be installed? (~name ok)
[/usr/local/share/man/man1]
Pathname where the site-specific library manual pages should be installed? (~name ok)
[/usr/local/share/man/man3]
Pathname where add-on public executable scripts should be installed? (~name ok)
[/usr/local/bin]
backtrace() found.
Use the "fast stdio" if available? [n]
off_t found.
Checking to see how big your file offsets are...
fpos_t found.
Checking the size of fpos_t...
Try to understand large files, if available? [y]
Rechecking to see how big your file offsets are...
Rechecking the size of fpos_t... 16 bytes.
qgcvt() found.
Checking the kind of doubles you have...
You have IEEE 754 64-bit little endian doubles.
Checking how to print long doubles...
gconvert NOT found.
gcvt() found.
I'll use gcvt to convert floats into a string.
fwalk() NOT found.
accept4() found.
access() found.
<sys/file.h> defines the *_OK access constants.
accessx() NOT found.
acosh() found.
aintl() NOT found.
alarm() found.
ctime64() NOT found.
localtime64() NOT found.
gmtime64() NOT found.
mktime64() NOT found.
difftime64() NOT found.
asctime64() NOT found.
<pthread.h> found.
<sys/types.h> found.
<sys/select.h> found.
Testing to see if we should include <sys/time.h>.
We'll include <sys/time.h>.
Checking to see if your struct tm has tm_zone field...
Checking to see if your struct tm has tm_gmtoff field...
asctime_r() found.
asinh() found.
atanh() found.
atolf() NOT found.
atoll() found.
Checking whether your compiler can handle __attribute__((format)) ...
Checking whether your compiler allows __printf__ format to be null ...
Checking whether your compiler can handle __attribute__((malloc)) ...
Checking whether your compiler can handle __attribute__((nonnull(1))) ...
Checking whether your compiler can handle __attribute__((noreturn)) ...
Checking whether your compiler can handle __attribute__((pure)) ...
Checking whether your compiler can handle __attribute__((unused)) ...
Checking whether your compiler can handle __attribute__((deprecated)) ...
Checking whether your compiler can handle __attribute__((warn_unused_result)) ...
Checking whether your compiler can handle __attribute__((always_inline)) ...
getpgrp() found.
You have to use getpgrp() instead of getpgrp(pid).
setpgrp() found.
You have to use setpgrp() instead of setpgrp(pid,pgrp).
Checking whether your compiler can handle __builtin_add_overflow ...
Checking whether your compiler can handle __builtin_sub_overflow ...
Checking whether your compiler can handle __builtin_mul_overflow ...
Checking whether your compiler can handle __builtin_choose_expr ...
Checking whether your compiler can handle __builtin_expect ...
Checking for C99 variadic macros.
You have C99 variadic macros.
You have void (*signal())().
Checking whether your C compiler can cast large floats to int32.
Checking whether your C compiler can cast negative float to unsigned.
cbrt() found.
chown() found.
chroot() found.
chsize() NOT found.
class() NOT found.
clearenv() found.
Hmm... Looks like you have Berkeley networking support.
socketpair() found.
Checking the availability sa_len in the sock struct ...
Checking the availability struct sockaddr_in6 ...
Checking the availability struct sockaddr_storage ...
Checking the availability sin6_scope_id in struct sockaddr_in6 ...
Checking the availability struct ip_mreq ...
Checking the availability struct ip_mreq_source ...
Checking the availability struct ipv6_mreq ...
Checking the availability struct ipv6_mreq_source ...
Checking the availability of certain socket constants...
<sys/uio.h> found.
Checking to see if your system supports struct cmsghdr...
copysign() found.
copysignl() found.
crypt() found.
<crypt.h> found.
crypt_r() found.
ctermid() found.
ctermid_r() NOT found.
ctime_r() found.
cuserid() found.
dbmclose() found.
<dbm.h> found.
difftime() found.
<dirent.h> found.
icc: command line remark #10148: option '-mp' not supported
Your directory entries are struct dirent.
icc: command line remark #10148: option '-mp' not supported
Your directory entry does not know about the d_namlen field.
Checking to see if DIR has a dd_fd member variable
<sys/dir.h> found.
<sys/ndir.h> NOT found.
dirfd() found.
dladdr() found.
dlerror() found.
<dlfcn.h> found.
What is the extension of dynamically loaded modules [so]
Checking whether your dlsym() needs a leading underscore ...
dlsym doesn't need a leading underscore.
drand48_r() found.
dup2() found.
dup3() found.
<xlocale.h> NOT found.
newlocale() found.
freelocale() found.
uselocale() found.
duplocale() found.
querylocale() NOT found.
eaccess() found.
endgrent() found.
<grp.h> found.
icc: command line remark #10148: option '-mp' not supported
endgrent_r() NOT found.
endhostent() found.
<netdb.h> found.
endhostent_r() NOT found.
endnetent() found.
endnetent_r() NOT found.
endprotoent() found.
endprotoent_r() NOT found.
endpwent() found.
<pwd.h> found.
icc: command line remark #10148: option '-mp' not supported
endpwent_r() NOT found.
endservent() found.
endservent_r() NOT found.
<sys/file.h> defines the O_* constants...
and you have the 3 argument form of open().
<sys/file.h> found.
We'll be including <sys/file.h>.
<fcntl.h> found.
We don't need to include <fcntl.h> if we include <sys/file.h>.
fork() found.
pipe() found.
Figuring out the flag used by open() for non-blocking I/O...
Let's see what value errno gets from read() on a O_NONBLOCK file...
erf() found.
erfc() found.
exp2() found.
expm1() found.
Checking how std your stdio is...
fchdir() found.
fchmod() found.
openat() found.
unlinkat() found.
renameat() found.
linkat() found.
fchmodat() found.
fchown() found.
fcntl() found.
Well, your system has some sort of fd_set available...
and you have the normal fd_set macros.
fdclose() NOT found.
fdim() found.
fegetround() found.
fgetpos() found.
finite() found.
finitel() found.
flock() found.
fma() found.
fmax() found.
fmin() found.
fp_class() NOT found.
Checking to see if you have fpclassify...
fp_classify() NOT found.
fp_classl() NOT found.
pathconf() found.
fpathconf() found.
fpclass() NOT found.
fpclassl() NOT found.
fpgetround() NOT found.
Checking to see if you have fpos64_t...
frexpl() found.
<sys/param.h> found.
<sys/mount.h> found.
Checking to see if your system supports struct fs_data...
fseeko() found.
fsetpos() found.
fstatfs() found.
statvfs() found.
fstatvfs() found.
fsync() found.
ftello() found.
Checking if you have a working futimes()
Yes, you have
A working gai_strerror() found.
<ndbm.h> found.
<gdbm/ndbm.h> found.
<gdbm-ndbm.h> NOT found.
dbm_open() found.
Checking if your <ndbm.h> uses prototypes...
Checking if your <gdbm/ndbm.h> uses prototypes...
getaddrinfo() found.
getcwd() found.
getespwnam() NOT found.
getfsstat() NOT found.
getgrent() found.
getgrent_r() found.
getgrgid_r() found.
getgrnam_r() found.
gethostbyaddr() found.
gethostbyname() found.
gethostent() found.
gethostname() found.
uname() found.
Shall I ignore gethostname() from now on? [n]
gethostbyaddr_r() found.
gethostbyname_r() found.
gethostent_r() found.
getitimer() found.
getlogin() found.
getlogin_r() found.
getmnt() NOT found.
getmntent() found.
getnameinfo() found.
getnetbyaddr() found.
getnetbyname() found.
getnetent() found.
getnetbyaddr_r() found.
getnetbyname_r() found.
getnetent_r() found.
getpagesize() found.
getprotobyname() found.
getprotobynumber() found.
getprotoent() found.
getpgid() found.
getpgrp2() NOT found.
getppid() found.
getpriority() found.
getprotobyname_r() found.
getprotobynumber_r() found.
getprotoent_r() found.
getprpwnam() NOT found.
getpwent() found.
getpwent_r() found.
getpwnam_r() found.
getpwuid_r() found.
getservbyname() found.
getservbyport() found.
getservent() found.
getservbyname_r() found.
getservbyport_r() found.
getservent_r() found.
getspnam() found.
<shadow.h> found.
getspnam_r() found.
gettimeofday() found.
gmtime_r() found.
hasmntopt() found.
<netinet/in.h> found.
<arpa/inet.h> found.
htonl() found.
hypot() found.
ilogb() found.
ilogbl() found.
inet_aton() found.
inet_ntop() found.
inet_pton() found.
isascii() found.
isblank() found.
Checking to see if you have isfinite...
isfinitel() found.
Checking to see if you have isinf...
isinfl() found.
Checking to see if you have isless...
Checking to see if you have isnan...
isnanl() found.
Checking to see if you have isnormal...
j0() found.
j0l() found.
killpg() found.
localeconv() found.
lchown() found.
LDBL_DIG found.
lgamma() found.
lgamma_r() found.
Checking to see if your libm supports _LIB_VERSION...
No, it does not (probably harmless)
link() found.
llrint() found.
llrintl() found.
llround() found.
llroundl() found.
localeconv_l() NOT found.
localtime_r() found.
lockf() found.
log1p() found.
log2() found.
logb() found.
lrint() found.
lrintl() found.
lround() found.
lroundl() found.
lstat() found.
madvise() found.
malloc_size() NOT found.
malloc_good_size() NOT found.
malloc_usable_size() found.
mblen() found.
mbrlen() found.
mbrtowc() found.
mbstowcs() found.
mbtowc() found.
memmem() found.
memrchr() found.
mkdir() found.
mkdtemp() found.
mkfifo() found.
mkostemp() found.
mkstemp() found.
mkstemps() found.
mktime() found.
<sys/mman.h> found.
mmap() found.
and it returns (void *).
sqrtl() found.
scalbnl() found.
truncl() found.
modfl() found.
mprotect() found.
msgctl() found.
msgget() found.
msgsnd() found.
msgrcv() found.
You have the full msg*(2) library.
Checking to see if your system supports struct msghdr...
msync() found.
munmap() found.
nan() found.
nanosleep() found.
nearbyint() found.
nextafter() found.
nexttoward() found.
nice() found.
<langinfo.h> found.
nl_langinfo() found.
<quadmath.h> found.
Choosing the C types to be used for Perl's internal types...
Checking how many bits of your UVs your NVs can preserve...
Checking to find the largest integer value your NVs can hold...
The largest integer your NVs can preserve is equal to 256.0*256.0*256.0*256.0*256.0*256.0*2.0*2.0*2.0*2.0*2.0
Checking whether NV 0.0 is all bits zero in memory...
0.0 is represented as all bits zero in memory
Checking to see if you have off64_t...
pause() found.
pipe2() found.
poll() found.
prctl() found.
readlink() found.
vfork() found.
Do you still want to use vfork()? [n]
pthread_attr_setscope() found.
Checking to see if you have ptrdiff_t...
random_r() found.
readdir() found.
seekdir() found.
telldir() found.
rewinddir() found.
readdir64_r() found.
readdir_r() found.
readv() found.
recvmsg() found.
regcomp() found.
remainder() found.
remquo() found.
rename() found.
rint() found.
rmdir() found.
round() found.
scalbn() found.
select() found.
semctl() found.
semget() found.
semop() found.
You have the full sem*(2) library.
You do not have union semun in <sys/sem.h>.
You can use union semun for semctl IPC_STAT.
You can also use struct semid_ds* for semctl IPC_STAT.
sendmsg() found.
setegid() found.
seteuid() found.
setgrent() found.
setgrent_r() NOT found.
sethostent() found.
sethostent_r() NOT found.
setitimer() found.
setlinebuf() found.
<locale.h> found.
<wctype.h> found.
towupper() found.
Your system has setlocale()...
and it seems sane
setlocale_r() NOT found.
setnetent() found.
setnetent_r() NOT found.
setprotoent() found.
setpgid() found.
setpgrp2() NOT found.
setpriority() found.
setproctitle() NOT found.
setprotoent_r() NOT found.
setpwent() found.
setpwent_r() NOT found.
setregid() found.
setresgid() found.
setreuid() found.
setresuid() found.
setrgid() NOT found.
setruid() NOT found.
setservent() found.
setservent_r() NOT found.
setsid() found.
setvbuf() found.
shmctl() found.
shmget() found.
shmat() found.
and it returns (void *).
shmdt() found.
You have the full shm*(2) library.
sigaction() found.
pid_t found.
Checking if your siginfo_t has si_errno field...
Checking if your siginfo_t has si_pid field...
Checking if your siginfo_t has si_uid field...
Checking if your siginfo_t has si_addr field...
Checking if your siginfo_t has si_status field...
Checking if your siginfo_t has si_band field...
Checking if your siginfo_t has si_value field...
Checking if your siginfo_t has si_fd field...
<sunmath.h> NOT found.
Checking to see if you have signbit() available to work on double... Yes.
sigprocmask() found.
POSIX sigsetjmp found.
snprintf() found.
vsnprintf() found.
sockatmark() found.
socks5_init() NOT found.
srand48_r() found.
srandom_r() found.
stat() found.
<sys/stat.h> found.
Checking to see if your struct stat has st_blocks field...
<sys/vfs.h> found.
<sys/statfs.h> found.
Checking to see if your system supports struct statfs...
Checking to see if your struct statfs has f_flags field...
Your compiler supports static inline.
Checking how to access stdio streams by file descriptor number...
I can't figure out how to access stdio streams by file descriptor number.
strcoll() found.
strerror_l() found.
strerror_r() found.
strftime() found.
strnlen() found.
strtod() found.
strtod_l() found.
strtol() found.
strtold() found.
strtold_l() found.
strtoll() found.
strtoq() found.
strtoul() found.
strtoull() found.
strtouq() found.
strxfrm() found.
symlink() found.
syscall() found.
sysconf() found.
system() found.
tcgetpgrp() found.
tcsetpgrp() found.
tgamma() found.
Since threads aren't selected, we won't bother looking for nl_langinfo_l()
time() found.
time_t found.
timegm() found.
<sys/times.h> found.
times() found.
clock_t found.
tmpnam_r() found.
towlower() found.
trunc() found.
truncate() found.
ttyname_r() found.
tzname[] found.
(Testing for character data alignment may crash the test.  That's okay.)
It seems that you must access character data in an aligned manner.
ualarm() found.
umask() found.
unordered() NOT found.
unsetenv() found.
usleep() found.
ustat() NOT found.
closedir() found.
Checking whether closedir() returns a status...
wait4() found.
waitpid() found.
wcrtomb() found.
A working wcscmp() found.
wcstombs() found.
A working wcsxfrm() found.
wctomb() found.
writev() found.
Checking alignment constraints...
Doubles must be aligned on a how-many-byte boundary? [8]
Checking how long a character is (in bits)...
What is the length of a character (in bits)? [8]
Checking to see how your cpp does stuff like concatenate tokens...
Oh!  Smells like ANSI's been here.
<db.h> NOT found.
Exclude . from @INC by default?  [y]
Checking the kind of infinities and nans you have...
(The following tests may crash.  That's okay.)
Checking how many mantissa bits your doubles have...
Checking how many mantissa bits your long doubles have...
Checking how many mantissa bits your NVs have...
Using our internal random number implementation...
Determining whether or not we are on an EBCDIC system...
Nope, no EBCDIC, probably ASCII or some ISO Latin. Or UTF-8.
Checking how to flush all pending stdio output...
Your fflush(NULL) works okay for output streams.
Let's see if it clobbers input pipes...
fflush(NULL) seems to behave okay with input streams.
Checking the size of gid_t...
Checking the sign of gid_t...
Checking how to print 64-bit integers...
Checking the format strings to be used for Perl's internal types...
Checking the format string to be used for gids...
getgroups() found.
setgroups() found.
What type pointer is the second argument to getgroups() and setgroups()?
[gid_t]
Checking if your /usr/bin/make program sets $(MAKE)...
mode_t found.
It seems that va_copy() or similar will be needed.
size_t found.
What is the type for the 1st argument to gethostbyaddr? [char *]
What is the type for the 2nd argument to gethostbyaddr? [size_t]
What pager is used on your system? [/usr/bin/less -R]
Checking how to generate random libraries on your machine...
Your select() operates on 64 bits at a time.
Generating a list of signal names and numbers...
Checking the size of size_t...
Checking to see if you have socklen_t...
<socks.h> NOT found.
I'll be using ssize_t for functions returning a byte count.
Checking the size of st_ino...
Checking the sign of st_ino...
Your stdio uses signed chars.
Checking the size of uid_t...
Checking the sign of uid_t...
Checking the format string to be used for uids...
Determining whether we can use sysctl with KERN_PROC_PATHNAME to find executing program...
I'm unable to compile the test program.
I'll assume no sysctl with KERN_PROC_PATHNAME here.
Determining whether we can use _NSGetExecutablePath to find executing program...
I'm unable to compile the test program.
I'll assume no _NSGetExecutablePath here.
Which compiler compiler (byacc or yacc or bison -y) shall I use?
[/usr/bin/byacc]
<bfd.h> found.
<execinfo.h> found.
<fenv.h> found.
<fp.h> NOT found.
<fp_class.h> NOT found.
<gdbm.h> found.
gdbm_open() found.
<ieeefp.h> NOT found.
<libutil.h> NOT found.
<mntent.h> found.
<net/errno.h> NOT found.
<netinet/tcp.h> found.
<poll.h> found.
<prot.h> NOT found.
Guessing which symbols your C compiler and preprocessor define...
You seem not to have gcc 4.* or later, not adding -D_FORTIFY_SOURCE.
tcsetattr() found.
You have POSIX termios.h... good!
<stdbool.h> found.
<stdint.h> found.
<sys/access.h> NOT found.
<sys/filio.h> NOT found.
<sys/ioctl.h> found.
<syslog.h> found.
<sys/mode.h> NOT found.
<sys/poll.h> found.
<sys/resource.h> found.
<sys/security.h> NOT found.
<sys/statvfs.h> found.
<sys/un.h> found.
<sys/utsname.h> found.
<sys/wait.h> found.
<ustat.h> NOT found.
<utime.h> found.
<wchar.h> found.
Looking for extensions...
What extensions do you wish to load dynamically?
[attributes B Compress/Raw/Bzip2 Compress/Raw/Zlib Cwd Data/Dumper Devel/Peek Devel/PPPort Digest/MD5 Digest/SHA Encode Fcntl File/DosGlob File/Glob Filter/Util/Call GDBM_File Hash/Util Hash/Util/FieldHash I18N/Langinfo IO IPC/SysV List/Util Math/BigInt/FastCalc MIME/Base64 mro NDBM_File ODBM_File Opcode PerlIO/encoding PerlIO/mmap PerlIO/scalar PerlIO/via POSIX re SDBM_File Socket Storable Sys/Hostname Sys/Syslog threads threads/shared Time/HiRes Time/Piece Unicode/Collate Unicode/Normalize XS/APItest XS/Typemap]
What extensions do you wish to load statically? [none]
Stripping down executable paths...
Creating config.sh...
Doing variable substitutions on .SH files...
Extracting config.h (with variable substitutions)
cflags.SH: cc       = icc
cflags.SH: ccflags  = -we147 -mp -no-gcc -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64
cflags.SH: stdflags =
cflags.SH: optimize = -O3
cflags.SH: warn     =
Extracting cflags (with variable substitutions)
Not re-extracting config.h
Extracting makedepend (with variable substitutions)
Extracting Makefile (with variable substitutions)
Extracting myconfig (with variable substitutions)
Extracting pod/Makefile (with variable substitutions)
Extracting Policy.sh (with variable substitutions)
Extracting runtests (with variable substitutions)
Run make depend now? [y]
icc -c -DPERL_CORE -we147 -mp -no-gcc -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O3 generate_uudmap.c
icc: command line remark #10148: option '-mp' not supported
icc -o generate_uudmap -L/usr/local/lib generate_uudmap.o -lpthread -ldl -lm -lcrypt -lutil -lc
./generate_uudmap uudmap.h bitcount.h mg_data.h
sh ./makedepend MAKE="make" cflags
make[1]: Entering directory '/p/project/cjzam11/kitayama1/projects/perl'
rm -f opmini.c
/usr/bin/ln -s op.c opmini.c
rm -f perlmini.c
/usr/bin/ln -s perl.c perlmini.c
echo av.c scope.c op.c doop.c doio.c dump.c gv.c hv.c mg.c reentr.c mro_core.c perl.c perly.c pp.c pp_hot.c pp_ctl.c pp_sys.c regcomp.c regexec.c utf8.c sv.c taint.c toke.c util.c deb.c run.c universal.c pad.c globals.c keywords.c perlio.c perlapi.c numeric.c mathoms.c locale.c pp_pack.c pp_sort.c caretx.c dquote.c time64.c  miniperlmain.c opmini.c perlmini.c | tr ' ' '\n' >.clist
make[1]: Leaving directory '/p/project/cjzam11/kitayama1/projects/perl'
Finding dependencies for av.o
Finding dependencies for scope.o
Finding dependencies for op.o
Finding dependencies for doop.o
Finding dependencies for doio.o
Finding dependencies for dump.o
Finding dependencies for gv.o
Finding dependencies for hv.o
Finding dependencies for mg.o
Finding dependencies for reentr.o
Finding dependencies for mro_core.o
Finding dependencies for perl.o
Finding dependencies for perly.o
Finding dependencies for pp.o
Finding dependencies for pp_hot.o
Finding dependencies for pp_ctl.o
Finding dependencies for pp_sys.o
Finding dependencies for regcomp.o
Finding dependencies for regexec.o
Finding dependencies for utf8.o
Finding dependencies for sv.o
Finding dependencies for taint.o
Finding dependencies for toke.o
Finding dependencies for util.o
Finding dependencies for deb.o
Finding dependencies for run.o
Finding dependencies for universal.o
Finding dependencies for pad.o
Finding dependencies for globals.o
Finding dependencies for keywords.o
Finding dependencies for perlio.o
Finding dependencies for perlapi.o
Finding dependencies for numeric.o
Finding dependencies for mathoms.o
Finding dependencies for locale.o
Finding dependencies for pp_pack.o
Finding dependencies for pp_sort.o
Finding dependencies for caretx.o
Finding dependencies for dquote.o
Finding dependencies for time64.o
Finding dependencies for miniperlmain.o
Finding dependencies for opmini.o
Finding dependencies for perlmini.o
Updating makefile...
Now you must run 'make'.

If you compile perl5 on a different machine or from a different object
directory, copy the Policy.sh file from this object directory to the
new one before you run Configure -- this will help you with most of
the policy defaults.
ikitayama commented 3 years ago

I'll contact the JURECA-DC admin if they can install a newer Intel compiler.

jkeenan commented 3 years ago

@hvds , thanks for looking at this issue.

So your invocation of `./Configure completes successfully. Only these lines suggest trouble ahead:

> ```
> $ ./Configure -des -Dcc=icc
> First let's make sure your kit is complete.  Checking...
...
> Which of these apply, if any? [linux]
> gcc: error: unrecognized command line option '-we147'
> gcc: error: unrecognized command line option '-mp'; did you mean '-p'?
> gcc: error: unrecognized command line option '-no-gcc'; did you mean '-fno-dce'?
> Operating system name? [linux]
> Operating system version? [4.18.0-193.14.2.el8_2.x86_64]
> Installation prefix to use? (~name ok) [/usr/local]
> AFS does not seem to be running...
> What installation prefix should I use for installing files? (~name ok)
> [/usr/local]
> Getting the current patchlevel...
> Build a threading Perl? [n]
> Build Perl for multiplicity? [n]
> Use which C compiler? [icc]
> icc: command line remark #10148: option '-mp' not supported
> icc: command line remark #10148: option '-mp' not supported
> Checking for GNU cc in disguise and/or its version number...
> icc: command line remark #10148: option '-mp' not supported
...
> Updating makefile...
> Now you must run 'make'.
> 
> If you compile perl5 on a different machine or from a different object
> directory, copy the Policy.sh file from this object directory to the
> new one before you run Configure -- this will help you with most of
> the policy defaults.
> ```

Now, just to clarify ... When you run make after the above configuration, do you get the build-time errors you reported in your original post?

Thank you very much. Jim Keenan

ikitayama commented 3 years ago

Yes, Jim.

On Mon, Mar 29, 2021 at 7:32 AM James E Keenan @.***> wrote:

@hvds https://github.com/hvds , thanks for looking at this issue.

So your invocation of `./Configure completes successfully. Only these lines suggest trouble ahead:

$ ./Configure -des -Dcc=icc
First let's make sure your kit is complete.  Checking...
...
Which of these apply, if any? [linux]
gcc: error: unrecognized command line option '-we147'
gcc: error: unrecognized command line option '-mp'; did you mean '-p'?
gcc: error: unrecognized command line option '-no-gcc'; did you mean '-fno-dce'?
Operating system name? [linux]
Operating system version? [4.18.0-193.14.2.el8_2.x86_64]
Installation prefix to use? (~name ok) [/usr/local]
AFS does not seem to be running...
What installation prefix should I use for installing files? (~name ok)
[/usr/local]
Getting the current patchlevel...
Build a threading Perl? [n]
Build Perl for multiplicity? [n]
Use which C compiler? [icc]
icc: command line remark #10148: option '-mp' not supported
icc: command line remark #10148: option '-mp' not supported
Checking for GNU cc in disguise and/or its version number...
icc: command line remark #10148: option '-mp' not supported
...
Updating makefile...
Now you must run 'make'.

If you compile perl5 on a different machine or from a different object
directory, copy the Policy.sh file from this object directory to the
new one before you run Configure -- this will help you with most of
the policy defaults.

Now, just to clarify ... When you run make after the above configuration, do you get the build-time errors you reported in your original post?

Thank you very much. Jim Keenan

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/Perl/perl5/issues/18624#issuecomment-808970231, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAHLBZ3N5AGWGPDH7DTJFKTTF6U65ANCNFSM4YV6WBKA .

jkeenan commented 3 years ago

Yes, Jim.

And, if, after completing the configuration above, you say:

make perlmini.o

... do you immediately start to see the build-time error output you originally posted?

Thank you very much. Jim Keenan

ikitayama commented 3 years ago

Immediately.

On Mon, Mar 29, 2021 at 8:16 AM James E Keenan @.***> wrote:

Yes, Jim.

And, if, after completing the configuration above, you say:

make perlmini.o

... do you immediately start to see the build-time error output you originally posted?

Thank you very much. Jim Keenan

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub, or unsubscribe.

ikitayama commented 3 years ago

Just wonder if Perl dev folks tried recent Intel compiler?

On Mon, Mar 29, 2021 at 8:53 AM Itaru Kitayama @.***> wrote:

Immediately.

On Mon, Mar 29, 2021 at 8:16 AM James E Keenan @.***> wrote:

Yes, Jim.

And, if, after completing the configuration above, you say:

make perlmini.o

... do you immediately start to see the build-time error output you originally posted?

Thank you very much. Jim Keenan

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub, or unsubscribe.

hvds commented 3 years ago

@ikitayama I don't recall seeing any recent mentions of the Intel compiler, so I suspect none of the primary maintainers are regularly building with it.

I attempted to install it myself to see if I could investigate further, but I had problems, and I'm not sure if I'm looking at the right product - I installed the "intel-basekit" package, and that gives me a C/C++ compiler called "dpcpp", but not one called "icc". (I also don't appear to be able to use the dpcpp compiler, and the troubleshooting script falls over in a heap.)

Do you have a website link or other details to point me at the compiler you are actually using?

ikitayama commented 3 years ago

This is the Intel compiler module provided by JSC admins.

Intel/2020.2.254-GCC-9.3.0

ikitayama commented 3 years ago

This is the Intel compiler module provided by JSC admins.

Intel/2020.2.254-GCC-9.3.0

This specific module seems to be having a problem with handling the options supplied in the hints/linux.sh. Using a recent Intel compiler suit which I built with Spack, I am able to build the 5.32.1.

ikitayama commented 3 years ago

@hvds , I think if you can use Spack, you can build Intel compiler for oneAPI without a licence.

ikitayama commented 3 years ago

$ spack install intel-oneapi-compilers

hvds commented 3 years ago

$ spack install intel-oneapi-compilers

Sadly I didn't get very far: https://github.com/spack/spack/issues/22813

I'll continue with the attempt if I get any suggestions there.

hvds commented 3 years ago

Ok, I've managed to install intel-oneapi-compilers.

If I now use that to install perl via spack, it appears to work fine:

% spack install perl %intel
(installs dependencies:
  berkeley-db-18.1.40
  pkgconf-1.7.4
  ncurses-6.2
  readline-8.1
  gdbm-1.19
)
==> Installing perl-5.32.1-umoma3acs4gsgiq32gdo4yg7s7r3fdtz
==> No binary for perl-5.32.1-umoma3acs4gsgiq32gdo4yg7s7r3fdtz found: installing from source
==> Fetching https://spack-llnl-mirror.s3-us-west-2.amazonaws.com/_source-cache/archive/03/03b693901cd8ae807231b1787798cf1f2e0b8a56218d07b7da44f784a7caeb2c.tar.gz
######################################################################### 100.0%
==> Fetching https://spack-llnl-mirror.s3-us-west-2.amazonaws.com/_source-cache/archive/9d/9da50e155df72bce55cb69f51f1dbb4b62d23740fb99f6178bb27f22ebdf8a46.tar.gz
######################################################################### 100.0%
==> Moving resource stage
        source : /tmp/hv/spack-stage/resource-cpanm-umoma3acs4gsgiq32gdo4yg7s7r3fdtz/spack-src/
        destination : /tmp/hv/spack-stage/spack-stage-perl-5.32.1-umoma3acs4gsgiq32gdo4yg7s7r3fdtz/spack-src/cpanm/cpanm
==> No patches needed for perl
==> perl: Executing phase: 'configure'
==> perl: Executing phase: 'build'
==> perl: Executing phase: 'install'
==> perl: Successfully installed perl-5.32.1-umoma3acs4gsgiq32gdo4yg7s7r3fdtz
  Fetch: 22.54s.  Build: 2m 2.31s.  Total: 2m 24.84s.
[+] /src/util/spack/opt/spack/linux-ubuntu18.04-skylake/intel-2021.2.0/perl-5.32.1-umoma3acs4gsgiq32gdo4yg7s7r3fdtz

If I build latest development branch (blead) using my normal methods, that also seems to work though with some warnings:

% icc --version
icc (ICC) 2021.2.0 20210228
Copyright (C) 1985-2021 Intel Corporation.  All rights reserved.

% ./Configure -des -Dcc=icc -Doptimize='-g -O3' -DDEBUGGING -Dusedevel -Uversiononly
(ok)
% make minitest
(various copies of:
  icc: command line remark #10148: option '-mp' not supported
)
...
All tests successful.
Elapsed: 423 sec
u=3.79  s=0.38  cu=78.44  cs=4.23  scripts=354  tests=454804

Checking the options described in icc --help, I see that -we is listed as a deprecated option with the suggestion "use -diag-error"; there is no -mp listed, but there is -mp1 described as "improve floating-point precision". So there are certainly things we could improve here, probably just by switching on compiler version.

However @ikitayama I don't see the subsequent failures you are seeing. Is it possible you have options specified in icc's .cfg file that could be affecting its behaviour? (I'm not sure where that lives, but I see it mentioned in icc --help.)

hvds commented 3 years ago

@ikitayama By way of demonstration, I created a file test_max.c:

#ifdef __INT_MAX__
        int i = __INT_MAX__;
#else
#       error "no __INT_MAX__"
#endif

.. and then used icc to preprocess it. The output demonstrates that __INT__MAX__ is defined (by the compiler, it is not in /usr/include/stdc-predef.h):

% icc -E test_max.c | perl -nle 'print if /\S/'
# 1 "test_max.c"
# 1 "/usr/include/stdc-predef.h" 1 3
# 43 "/usr/include/stdc-predef.h" 3
# 51 "/usr/include/stdc-predef.h" 3
# 1 "test_max.c" 2
        int i = 2147483647;
% 
hvds commented 3 years ago

I've created tickets https://github.com/Perl/perl5/issues/18704 and https://github.com/Perl/perl5/issues/18705 to address issues with the hints file thrown up here, but they are both in large part cosmetic and are not expected to solve the problem in this ticket.

ikitayama commented 3 years ago

I am also able to build perl@5.32.1 with the Spack spec intel-oneapi-compilers , but one concern is this:


$ git log -p v5.32.1..HEAD hints/linux.sh
commit 8ffcbbbe4a4411bb0971e61a39fa2608a4ef5145
Author: Graham<E2><9C><88><EF><B8><8F><E2><9C><88><EF><B8><8F> <plicease@cpan.org>
Date:   Wed Jul 29 08:57:17 2020 -0600

    Improve detection of Intel C/C++ compilers. (#18001)

    * Improve detection of Intel C/C++ compilers.

    My version of Intel C/C++ reports these versions:

    <E2><9C><85> starscream% icc -V
    Intel(R) C Intel(R) 64 Compiler for applications running on Intel(R) 64, Version 19.1.1.217 Build 20200306
    Copyright (C) 1985-2020 Intel Corporation.  All rights reserved.
    FOR NON-COMMERCIAL USE ONLY

    <E2><9C><85> starscream% icpc -V
    Intel(R) C++ Intel(R) 64 Compiler for applications running on Intel(R) 64, Version 19.1.1.217 Build 20200306
    Copyright (C) 1985-2020 Intel Corporation.  All rights reserved.
    FOR NON-COMMERCIAL USE ONLY

    * simplified case for detecting Intel C++ compiler

    * update authors for plicease

diff --git a/hints/linux.sh b/hints/linux.sh
index 8cbe7dc463..c749f0f64a 100644
--- a/hints/linux.sh
+++ b/hints/linux.sh
@@ -85,7 +85,7 @@ uname_minus_m="${uname_minus_m:-"$targetarch"}"

 # Check if we're about to use Intel's ICC compiler
 case "`${cc:-cc} -V 2>&1`" in
-*"Intel(R) C++ Compiler"*|*"Intel(R) C Compiler"*)
+*"Intel(R) C"*" Compiler"*)
     # record the version, formats:
     # icc (ICC) 10.1 20080801
     # icpc (ICC) 10.1 20080801