Problems with src/pl/tcl/mkMakefile.tcldefs.sh.in in 6.5
For Digital UNIX 4.0D, shared libraries are created by:
$ ld -shared -expect_unresolved "*" -o foo.so [objects]
This presents a problem for mkMakefile.tcldefs.sh.in. In tclConfig.sh:
TCL_SHLIB_LD='ld -shared -expect_unresolved "*"'
In mkMakefile.tcldefs.sh.in:
cat @TCL_CONFIG_SH@ |
egrep '^TCL_|^TK_' |
while read inp
do
eval eval echo $inp
done >Makefile.tcldefs
Because of this, we wind up with the following in Makefile.tcldefs to
created shared libraries on Digital UNIX because of the eval:
TCL_SHLIB_LD=ld -shared -expect_unresolved *
The "*" needs to be quoted to avoid shell expansion. How about the
following:
cat @TCL_CONFIG_SH@ |
egrep '^TCL_|^TK_' |
sed -e "s/^\([^=]*\)='\(.*\)'$/\1=\2/"
--
albert chin (china@thewrittenword.com)
I didn't understand this the first time you sent it either.
Send me a patch to review, please.
For Digital UNIX 4.0D, shared libraries are created by:
$ ld -shared -expect_unresolved "*" -o foo.so [objects]This presents a problem for mkMakefile.tcldefs.sh.in. In tclConfig.sh:
TCL_SHLIB_LD='ld -shared -expect_unresolved "*"'In mkMakefile.tcldefs.sh.in:
cat @TCL_CONFIG_SH@ |
egrep '^TCL_|^TK_' |
while read inp
do
eval eval echo $inp
done >Makefile.tcldefsBecause of this, we wind up with the following in Makefile.tcldefs to
created shared libraries on Digital UNIX because of the eval:
TCL_SHLIB_LD=ld -shared -expect_unresolved *The "*" needs to be quoted to avoid shell expansion. How about the
following:
cat @TCL_CONFIG_SH@ |
egrep '^TCL_|^TK_' |
sed -e "s/^\([^=]*\)='\(.*\)'$/\1=\2/"--
albert chin (china@thewrittenword.com)
--
Bruce Momjian | http://www.op.net/~candle
maillist@candle.pha.pa.us | (610) 853-3000
+ If your life is a hard drive, | 830 Blythe Avenue
+ Christ can be your backup. | Drexel Hill, Pennsylvania 19026
On Sat, Jul 10, 1999 at 02:45:47AM -0400, Bruce Momjian wrote:
I didn't understand this the first time you sent it either.
Send me a patch to review, please.
--- src/pl/tcl/mkMakefile.tcldefs.sh.in.orig Fri Jul 9 08:29:09 1999
+++ src/pl/tcl/mkMakefile.tcldefs.sh.in Fri Jul 9 08:29:49 1999
@@ -8,9 +8,6 @@
cat @TCL_CONFIG_SH@ |
egrep '^TCL_|^TK_' |
- while read inp
- do
- eval eval echo $inp
- done >Makefile.tcldefs
+ sed -e "s/^\([^=]*\)='\(.*\)'$/\1=\2/" >Makefile.tcldefs
exit 0
For Digital UNIX 4.0D, shared libraries are created by:
$ ld -shared -expect_unresolved "*" -o foo.so [objects]This presents a problem for mkMakefile.tcldefs.sh.in. In tclConfig.sh:
TCL_SHLIB_LD='ld -shared -expect_unresolved "*"'In mkMakefile.tcldefs.sh.in:
cat @TCL_CONFIG_SH@ |
egrep '^TCL_|^TK_' |
while read inp
do
eval eval echo $inp
done >Makefile.tcldefsBecause of this, we wind up with the following in Makefile.tcldefs to
created shared libraries on Digital UNIX because of the eval:
TCL_SHLIB_LD=ld -shared -expect_unresolved *The "*" needs to be quoted to avoid shell expansion. How about the
following:
cat @TCL_CONFIG_SH@ |
egrep '^TCL_|^TK_' |
sed -e "s/^\([^=]*\)='\(.*\)'$/\1=\2/"--
albert chin (china@thewrittenword.com)--
Bruce Momjian | http://www.op.net/~candle
--
albert chin (china@thewrittenword.com)
On Sat, Jul 10, 1999 at 02:45:47AM -0400, Bruce Momjian wrote:
I didn't understand this the first time you sent it either.
Send me a patch to review, please.
--- src/pl/tcl/mkMakefile.tcldefs.sh.in.orig Fri Jul 9 08:29:09 1999
+++ src/pl/tcl/mkMakefile.tcldefs.sh.in Fri Jul 9 08:29:49 1999
@@ -8,9 +8,6 @@
cat @TCL_CONFIG_SH@ |
egrep '^TCL_|^TK_' |
- while read inp
- do
- eval eval echo $inp
- done >Makefile.tcldefs
+ sed -e "s/^\([^=]*\)='\(.*\)'$/\1=\2/" >Makefile.tcldefs
exit 0
For Digital UNIX 4.0D, shared libraries are created by:
$ ld -shared -expect_unresolved "*" -o foo.so [objects]This presents a problem for mkMakefile.tcldefs.sh.in. In tclConfig.sh:
TCL_SHLIB_LD='ld -shared -expect_unresolved "*"'In mkMakefile.tcldefs.sh.in:
cat @TCL_CONFIG_SH@ |
egrep '^TCL_|^TK_' |
while read inp
do
eval eval echo $inp
done >Makefile.tcldefsBecause of this, we wind up with the following in Makefile.tcldefs to
created shared libraries on Digital UNIX because of the eval:
TCL_SHLIB_LD=ld -shared -expect_unresolved *The "*" needs to be quoted to avoid shell expansion. How about the
following:
cat @TCL_CONFIG_SH@ |
egrep '^TCL_|^TK_' |
sed -e "s/^\([^=]*\)='\(.*\)'$/\1=\2/"--
albert chin (china@thewrittenword.com)--
Bruce Momjian | http://www.op.net/~candle
--
albert chin (china@thewrittenword.com)
On Sat, Jul 10, 1999 at 02:45:47AM -0400, Bruce Momjian wrote:
I didn't understand this the first time you sent it either.
Send me a patch to review, please.
--- src/pl/tcl/mkMakefile.tcldefs.sh.in.orig Fri Jul 9 08:29:09 1999 +++ src/pl/tcl/mkMakefile.tcldefs.sh.in Fri Jul 9 08:29:49 1999 @@ -8,9 +8,6 @@cat @TCL_CONFIG_SH@ | egrep '^TCL_|^TK_' | - while read inp - do - eval eval echo $inp - done >Makefile.tcldefs + sed -e "s/^\([^=]*\)='\(.*\)'$/\1=\2/" >Makefile.tcldefs
I understand what your patch does, and it looks OK, but any idea why the
'eval eval' was there, and is it safe to skip it? I can apply this to
6.6.
--
Bruce Momjian | http://www.op.net/~candle
maillist@candle.pha.pa.us | (610) 853-3000
+ If your life is a hard drive, | 830 Blythe Avenue
+ Christ can be your backup. | Drexel Hill, Pennsylvania 19026
Bruce Momjian wrote:
On Sat, Jul 10, 1999 at 02:45:47AM -0400, Bruce Momjian wrote:
I didn't understand this the first time you sent it either.
Send me a patch to review, please.
--- src/pl/tcl/mkMakefile.tcldefs.sh.in.orig Fri Jul 9 08:29:09 1999 +++ src/pl/tcl/mkMakefile.tcldefs.sh.in Fri Jul 9 08:29:49 1999 @@ -8,9 +8,6 @@cat @TCL_CONFIG_SH@ | egrep '^TCL_|^TK_' | - while read inp - do - eval eval echo $inp - done >Makefile.tcldefs + sed -e "s/^\([^=]*\)='\(.*\)'$/\1=\2/" >Makefile.tcldefsI understand what your patch does, and it looks OK, but any idea why the
'eval eval' was there, and is it safe to skip it? I can apply this to
6.6.
As far as I can recall, the first of all versions I've
created did it mainly that way (with a simple sed(1) call).
But since tclConfig.sh is a shell script, there have to be
shell variable expansions done on some platforms and that
resulted finally in the double eval. So I would consider the
above a little step for a man, but a big leap backward for
mankind.
Instead, the result of the double eval must get special
characters quoted in some way.
Jan
--
#======================================================================#
# It's easier to get forgiveness for being wrong than for being right. #
# Let's break this rule - forgive me. #
#========================================= wieck@debis.com (Jan Wieck) #
On Sun, Jul 11, 1999 at 03:46:26PM +0200, Jan Wieck wrote:
Bruce Momjian wrote:
On Sat, Jul 10, 1999 at 02:45:47AM -0400, Bruce Momjian wrote:
I didn't understand this the first time you sent it either.
Send me a patch to review, please.
--- src/pl/tcl/mkMakefile.tcldefs.sh.in.orig Fri Jul 9 08:29:09 1999 +++ src/pl/tcl/mkMakefile.tcldefs.sh.in Fri Jul 9 08:29:49 1999 @@ -8,9 +8,6 @@cat @TCL_CONFIG_SH@ | egrep '^TCL_|^TK_' | - while read inp - do - eval eval echo $inp - done >Makefile.tcldefs + sed -e "s/^\([^=]*\)='\(.*\)'$/\1=\2/" >Makefile.tcldefsI understand what your patch does, and it looks OK, but any idea why the
'eval eval' was there, and is it safe to skip it? I can apply this to
6.6.As far as I can recall, the first of all versions I've
created did it mainly that way (with a simple sed(1) call).
But since tclConfig.sh is a shell script, there have to be
shell variable expansions done on some platforms and that
resulted finally in the double eval. So I would consider the
above a little step for a man, but a big leap backward for
mankind.Instead, the result of the double eval must get special
characters quoted in some way.
I just looked at the man for make on Solaris, Digital UNIX, HP-UX, and
IRIX and all support $() and ${} for variable expansion. BTW, I also
looked at the Makefile generated by Tk and it assumes make can handle
${}. It basically does one eval of tclConfig.sh and uses the result in
make variables. As Tk assumes make can handle ${}, can we safely
assume the same? With this, we'd do one eval rather than two before.
This is the same as the sed line I posted because everything in
tclConfig.sh is VAR='VAL' so the one eval would just strip the single
quotes (which sed did). But, if tclConfig.sh changes to some use of
double quotes in the future, we won't break.
Jan
--
albert chin (china@thewrittenword.com)