At 2:58 PM -0400 4/25/04, John E. Malmberg wrote:
>With the patches that I have attached now, Perl is only failing one test.
>
>lib/ExtUtils/t/basic.................FAILED at test 28
>
>I do not have hard links enabled on the ODS-5 volume. I do not know if that is
>affecting the test results.
I doubt it.
>I also do not know how to trouble shoot this failed test to find out what is wrong,
>and how to make the test pass.
As part of its standard test suite, Perl builds, tests, and installs
a dummy extension in order to validate the extension building
process. There are a couple of VMS-specific hacks in
[.lib.ExtUtils]Manifest.pm that case-level filenames read from an
extension's manifest. These case-leveled names are then compared to
case-specific names returned from the filesystem, or at least they are
case-specific when DECC$EFS_CASE_PRESERVE is enabled. Without
running the test with your modified version, I can't say for sure
this is where the problem is, but on the other hand I can't see how
Manifest.pm could work in a case-preserved environment (at least
without modifications that are planned but not yet implemented).
>
>With only one test failing though, it looks a lot better.
Indeed. So Perl is able to build itself and all the core extensions
with your modifications?
>
>Now how do get a more verbose output of the failing test?
Read the instructions in README.vms :-). ..... where it will tell you
$ @[.vms]test .exe "" -"v" [-.lib.extutils.t]basic.t
though the second argument should be "ndbg" instead of empty if
you've got a VMS debug build.
>
>I hope I do not need to build a debug version of perl, I have not got that to work
>yet on VAX.
I do it pretty regularly on Alpha and the relevant qualifiers should
be the same. From your subsequent message it looks like you may have
it working, but let us know if not.
>
>--- dist_root:[000000]configure.com_old Sun Apr 11 21:58:27 2004
>+++ dist_root:[000000]configure.com Sat Apr 24 22:31:30 2004
Forgive the ongoing nitpicking of your patch style, but unless these
filespecs are in unix syntax, folks who have check-in authority are
not going to be able to apply it. I know you may not intend the
patch to be ready for that yet, but it's getting darn close.
Lots of stuff that looks ok snipped.
>
>@@ -4384,8 +4422,10 @@
> * the argv items and lowercase all of these names.
> */
> for (c = string; *c; ++c)
>+ if (!decc_efs_case_preserve) {
> if (isupper(*c))
> *c = tolower(*c);
>+ }
> if (isunix) trim_unixpath(string,item,1);
> add_item(head, tail, string, count);
> ++expcount;
I would think we'd want to check decc_efs_case_preserve outside the loop.
more good stuff snipped.
>+#ifndef __VAX
>+#if __CRTL_VER >= 70300000
>+ s = decc$feature_get_index("DECC$EFS_CASE_PRESERVE");
>+ decc_efs_case_preserve = decc$feature_get_value(s, 1);
>+
I'm with you on this one.
>+ s = decc$feature_get_index("DECC$FILENAME_UNIX_REPORT");
>+ decc_filename_unix_report = decc$feature_get_value(s, 1);
>+ set_feature_default("DECC$FILENAME_UNIX_REPORT", FALSE);
>+
>+ s = decc$feature_get_index("DECC$FILENAME_UNIX_ONLY");
>+ decc_filename_unix_only = decc$feature_get_value(s, 1);
>+ set_feature_default("DECC$FILENAME_UNIX_ONLY", FALSE);
But I'm confused on these two. It looks to me like we check for
whether the features are enabled and save the setting we inherited
from the environment, but then we also explicitly disable the
features. If we honor the values we inherit, it seems we would not
want to disable them. If we disable them, it seems we would not want
to save the values we inherit. What am I missing?
>+#else
>+ status = sys_trnlnm("DECC$EFS_CASE_PRESERVE", val_str, sizeof(val_str));
>+ if (status) {
>+ _toupper(str[0])
>+ if ((str[0] == 'E') || (str[0] == 1) || (str[0] == 'T')) {
>+ decc_efs_case_preserve = 1;
>+ }
>+ }
>+ status = sys_trnlnm("DECC$FILENAME_UNIX_REPORT", val_str, sizeof(val_str));
>+ if (status) {
>+ _toupper(str[0])
>+ if ((str[0] == 'E') || (str[0] == 1) || (str[0] == 'T')) {
>+ decc_filename_unix_report = 1;
>+ status = sys_crelnm("DECC$FILENAME_UNIX_REPORT", "DISABLE");
>+ }
>+ }
>+ status = sys_trnlnm("DECC$FILENAME_UNIX_ONLY", val_str, sizeof(val_str));
>+ if (status) {
>+ _toupper(str[0])
>+ if ((str[0] == 'E') || (str[0] == 1) || (str[0] == 'T')) {
>+ decc_filename_unix_only = 1;
>+ status = sys_crelnm("DECC$FILENAME_UNIX_ONLY", "ENABLE");
>+ }
>+ }
Hmm. On this last one we are checking to see if it's already enabled and then
re-enabling it?
>+#endif
>+#endif
>+
>+
>+ /* CRTL can be initialized past this point, but not before. */
>+/* DECC$CRTL_INIT(); */
>+
>+ return SS$_NORMAL;
>+}
>+
>+#ifdef __DECC
>+/* DECC dependent attributes */
>+#if __DECC_VER < 60560002
>+#define relative
>+#define not_executable
>+#else
>+#define relative ,rel
>+#define not_executable ,noexe
>+#endif
>+#pragma nostandard
>+#pragma extern_model save
>+#pragma extern_model strict_refdef "LIB$INITIALIZ" nowrt
>+#endif
>+ const __align (LONGWORD) int spare[8] = {0};
>+/* .psect LIB$INITIALIZE, NOPIC, USR, CON, REL, GBL, NOSHR, NOEXE, RD, */
>+/* NOWRT, LONG */
>+#ifdef __DECC
>+#pragma extern_model strict_refdef "LIB$INITIALIZE" con, gbl,noshr, \
>+ nowrt,noshr relative not_executable
>+#endif
>+const long vms_cc_features = (const long)set_features;
>+
So there are two psects, LIB$INITIALIZ and LIB$INITIALIZE ?
--
________________________________________
Craig A. Berry
mailto:[EMAIL PROTECTED]
"... getting out of a sonnet is much more
difficult than getting in."
Brad Leithauser