Problems with src/pl/tcl/mkMakefile.tcldefs.sh.in in 6.5

Started by Nonameover 26 years ago7 messages
#1Noname
pgsql-hackers@thewrittenword.com

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)

#2Bruce Momjian
maillist@candle.pha.pa.us
In reply to: Noname (#1)
Re: [HACKERS] Problems with src/pl/tcl/mkMakefile.tcldefs.sh.in in 6.5

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.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)

-- 
  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
#3Noname
pgsql-hackers@thewrittenword.com
In reply to: Bruce Momjian (#2)
Re: [HACKERS] Problems with src/pl/tcl/mkMakefile.tcldefs.sh.in in 6.5

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.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)

--
Bruce Momjian | http://www.op.net/~candle

--
albert chin (china@thewrittenword.com)

#4Noname
pgsql-hackers@thewrittenword.com
In reply to: Bruce Momjian (#2)
Re: [HACKERS] Problems with src/pl/tcl/mkMakefile.tcldefs.sh.in in 6.5

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.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)

--
Bruce Momjian | http://www.op.net/~candle

--
albert chin (china@thewrittenword.com)

#5Bruce Momjian
maillist@candle.pha.pa.us
In reply to: Noname (#3)
Re: [HACKERS] Problems with src/pl/tcl/mkMakefile.tcldefs.sh.in in 6.5

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
#6Noname
wieck@debis.com
In reply to: Bruce Momjian (#5)
Re: [ADMIN] Re: [HACKERS] Problems with src/pl/tcl/mkMakefile.tcldefs.sh.in in 6.5

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.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.

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) #

#7Noname
pgsql-hackers@thewrittenword.com
In reply to: Noname (#6)
Re: [ADMIN] Re: [HACKERS] Problems with src/pl/tcl/mkMakefile.tcldefs.sh.in in 6.5

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.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.

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)