From: Boyd Lynn Gerber Date: Sun, 08 Mar 2009 01:29:38 GMT Subject: Re: t9500-gitweb-standalone-no-errors.sh.prb 4 errors Message-ID: In-Reply-To: On Sat, 7 Mar 2009, Jakub Narebski wrote: > Boyd Lynn Gerber writes: >> Test fails for SCO OpenServer 6.0 MP4 with 1.6.2 >> >> Below is the set -x output of the tests. > > Could you run it without -x, but with --debug (as option to test > itself) instead? Because what matters here not on which command the > test failed (we know it is on gitweb_run), but what error message > gitweb returned. Yes, > Also the problem might with in Perl modules gitweb uses (CGI, Encode, > ...), and with Perl version used, although it is less likely... It is a perl problem... * FAIL 18: .git blob (file) gitweb_run "p=.git;a=blob;f=file" [Sun Mar 8 01:11:44 2009] gitweb.perl: -T and -B not implemented on filehandles at /tmp/git-1.6.2/t/../gitweb/gitweb.perl line 2853. * FAIL 19: .git blob_plain (file) gitweb_run "p=.git;a=blob_plain;f=file" [Sun Mar 8 01:11:44 2009] gitweb.perl: -T and -B not implemented on filehandles at /tmp/git-1.6.2/t/../gitweb/gitweb.perl line 2853. * FAIL 62: path_info: project/branch:file gitweb_run "" "/.git/master:file" [Sun Mar 8 01:12:15 2009] gitweb.perl: -T and -B not implemented on filehandles at /tmp/git-1.6.2/t/../gitweb/gitweb.perl line 2853. * FAIL 66: path_info: project/branch:/file gitweb_run "" "/.git/master:/file" [Sun Mar 8 01:12:17 2009] gitweb.perl: -T and -B not implemented on filehandles at /tmp/git-1.6.2/t/../gitweb/gitweb.perl line 2853. I am not really sure what to do about it. I contacted SCO on a different problem with the same type of filehandle problem and they told me they have not implemented any thing is the OS that could do this test. This is what I traced it to... This is what Tim Rice and I received from SCO... Re: __fpending() Tim Rice wrote: > It looks like it needs __fpending, __fpurge, & __freading. > But as mentioned before, we can use funflush for __fpurge. And for __freading() you could use #define __freading(p) ((p)->__flag & _IOREAD) or if we were to have had it in , it'd look more like the following (for C) for various reasons: #define __freading(p) ((void)sizeof(__filbuf(p)), ((FILE *)(p))->__flag & _IOREAD) > I strongly suspect these missing APIs are responsible for the For C++, it's be an inline routine checking the flag. > I strongly suspect these missing APIs are responsible for the > problem I found with Perl too. See "uw714 MP4 perl" and "osr600 MP4 perl" thread. This hadn't been raised as a possibility as far as I've read in that thread -- did I miss something? Does this mean you've built your own perl for uw7 and found that you needed one or more of these __f...() routines? And Boyd Gerber wrote: Ah yes, we're doing #if defined(__USLC__) return (fp->__flag & _IOREAD) != 0; #else return (fp->_flag & _IOREAD) != 0; #endif Would you consider this test case. ...... cat > tst.pl << 'EOF' open (FH, $ARGV[0]) || die ("Can't open $ARGV[0] -- $!\n"); print "Text\n" if (-T FH); print "Binary\n" if (-B FH); close (FH); EOF ...... On OpenServer 5 if you run "perl tst.pl tst.pl" it will say Text On UnixWare 7.1.4 MP4 and OpenSever 6.0 MP4 if you run "perl tst.pl tst.pl" it will say -T and -B not implemented on filehandles at tst.pl line 2. While googling I found according to a post by Randal Schwartz that this means perl doesn't know enough about stdio on that platform. Looking at /opt/lib/perl5/5.8.8/i386-unixware-thread-multi/Config_heavy.pl we see things like stdio_base='((fp)->_base)' but then we have d_stdiobase='undef' so it is not used. And this wouldn't work but probably isn't used because of d_stdiobase='undef' stdio_bufsiz='((fp)->_cnt + (fp)->_ptr - (fp)->_base)' If we had __fbufsiz() it might be stdio_bufsiz='__fbufsiz(fp)' As the test program shows, there is something missing in UnixWare's and OpenServer 6 perl's implementation. -- Boyd Gerber 801 849-0213 ZENEZ 1042 East Fort Union #135, Midvale Utah 84047