X-Authentication-Warning: ixi.eng.ascend.com: meyering set sender to meyering AT ascend DOT com using -f Sender: meyering AT ascend DOT com To: Eli Zaretskii Cc: tr AT eth DOT net, djgpp-workers AT delorie DOT com Subject: Re: Sh-utils 2.0j sources uploaded References: <200008110941 DOT CAA29407 AT drawbridge DOT ascend DOT com> From: Jim Meyering In-Reply-To: "Eli Zaretskii"'s message of "Fri, 11 Aug 2000 12:51:40 +0200" Date: 11 Aug 2000 11:57:32 +0200 Message-ID: Lines: 153 User-Agent: Gnus/5.0807 (Gnus v5.8.7) Emacs/20.6.92 MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Reply-To: djgpp-workers AT delorie DOT com "Eli Zaretskii" writes: | [CC: to Jim Meyering, since some issues go beyond DJGPP-specific aspects.] | | > Date: Tue, 25 Jul 2000 06:59:03 +0530 (IST) | > From: Prashant TR | > | > The DJGPP port of the Sh-utils pretest is available. | > | > ftp://ftp.simtel.net/pub/simtelnet/gnu/djgpp/v2gnu/alphas/shl20js.zip | | I finally found time to download and test this beta version. The | package built for me flawlessly, both on plain DOS and on Windows 98, | both in the source directory and outside it. Good work! | | I have only a few minor comments: | | 1) When the configure script runs, it prints an error message from | `ln' (when it tests whether `lstat' dereferences a symlink with a | trailing slash). This is expected behavior, but it might alarm | users. I suggest either to redirect stderr to /dev/null or at | least mention the message in djgpp/README. Thanks for the report. Can you send the precise error, or better still, a patch so I don't have to think, er... dig, so much :-) | 2) The version of `depcomp' supplied with sh-utils-2.0j does not | work correctly for DOS/Windows-style pathnames with drive | letters. The following Sed script breaks if .deps/*.Tpo files | include absolute file names with drive letters: | | sed 's/^[^:]*: / /' < "$tmpdepfile" >> "$depfile" | | This happens because on DOS/Windows, "gcc -MD" produces the | following in, e.g., lib/.deps/addext.Tpo: | | e:/src/gnu/sh-util2.0j/lib/addext.o: \ | e:/src/gnu/sh-util2.0j/lib/addext.c ../config.h \ | e:/src/gnu/sh-util2.0j/lib/backupfile.h c:/bin/gcc/include/limits.h \ | c:/bin/gcc/include/sys/types.h c:/bin/gcc/include/sys/djtypes.h \ | c:/bin/gcc/include/string.h c:/bin/gcc/include/sys/movedata.h \ | c:/bin/gcc/include/unistd.h | | The first line above is supposed to be removed by the Sed script, | but that fails because the file name includes a colon. | | Note that this problem is only visible when building Sh-utils | from another drive, because only then the drive letter appears in | the file name. | | The patch to depcomp which fixes this is below. Jim, where | should I post it? autoconf AT gnu DOT org, soon please, since a long-awaited snapshot is due to be made soon. | Also, is \{0,1\} supported in all versions of | Sed? I'm almost positive that it's not portable. | 3) The test suite fails in several ways, unless the package is | configured, built, and tested in the source directory. This | happens because djgpp/edtest.bat is not written to work except in | that case. Either edtest.bat should be augmented, or a note to | this effect should be added to djgpp/README. | | In any case, I think that the DJGPP source distribution should | come with the files under `tests/' already edited and converted | to the DOS-style CRLF EOL format (where appropriate). (If you | decide to accept this advice, you need to take into consideration | that someone might run config.bat again, so the conversion Sed | scripts should be prepared for multiple editing.) | | 4) lib/Makefile.in has a rule to produce C files from Yacc grammar | sources. This rule will not work on plain MS-DOS, because file | names like y.tab.c are not allowed, and because the DJGPP port of | Yacc produces y_tab.c instead of y.tab.c when it runs on plain | DOS machine. This problem will pop up if someone edits | getdate.y, for example. Not an issue, imho. If people want to do development, they'd be much better off using Unix. | The offending rule comes from Automake, so to correct this once | and for all, Automake should be changed. What is the correct | address to report this? Is it automake-bugs AT gnu DOT org? Of course, you're welcome to report it. The -bugs address might work. This is what I use: automake AT gnu DOT org, and --help says bug-automake AT gnu DOT org. | For now, I suggest to add some magic to djgpp/config.sed so that | it edits this: | | .y.c: | $(YACC) $(AM_YFLAGS) $(YFLAGS) $< && mv y.tab.c $*.c | if test -f y.tab.h; then \ | if cmp -s y.tab.h $*.h; then rm -f y.tab.h; else mv y.tab.h $*.h; fi; \ | else :; fi | | into this: | | .y.c: | $(YACC) $(AM_YFLAGS) $(YFLAGS) $< | -test -f y.tab.c && mv y.tab.c y_tab.c | -test -f y.tab.h && mv y.tab.h y_tab.h | mv y_tab.c $*.c | if test -f y_tab.h; then \ | if cmp -s y_tab.h $*.h; then rm -f y_tab.h; else mv y_tab.h $*.h; fi; \ | else :; fi | | 5) A note: since `true' and `false' are now programs, you need to | make sure shl20b.dsm includes commands to uninstall the old shell | scripts by those names before installing the binaries. | | 6) Finally, it looks like the DJGPP source distribution will require | to run the configure script before building. If that is true, | I'd like to suggest to make any reasonable effort so that the | sources could come already configured. AFAIK, every other ported | package does that; we should try not to require users to have all | those additional utilities installed just to rebuild a package. | | I'm guessing that this depcomp thingy is one of the major | obstacles to ship the sources configured. If so, let's see what | exactly in depcomp prevents you from doing so, and let's try to | solve those problems, either by submitting patches to depcomp | maintainers, or by augmenting the DJGPP-specific scripts. | | Last but not least, thanks to Jim for a wonderful package, and to | Prashant for the good work porting it. | | | Here's the patch for depcomp: | | | 2000-08-11 Eli Zaretskii | | * depcomp (gcc): Support DOS-style absolute file names with drive | letters. | | --- depcomp.~0 Mon Oct 4 07:56:46 1999 | +++ depcomp Thu Aug 10 20:49:02 2000 | @@ -65,7 +65,7 @@ | fi | rm -f "$depfile" | echo "$object : \\" > "$depfile" | - sed 's/^[^:]*: / /' < "$tmpdepfile" >> "$depfile" | + sed 's/^\([A-z]:\/\)\{0,1\}[^:]*: / /' < "$tmpdepfile" >> "$depfile" | ## This next piece of magic avoids the `deleted header file' problem. | ## The problem is that when a header file which appears in a .P file | ## is deleted, the dependency causes make to die (because there is