Thread: pltcl_*mod commands are broken on Solaris 10
Commands pltcl_listmod, pltcl_delmod, pltcl_loadmod does not work on Solaris 10, because there is not present tclsh. Unfortunately build process substitute path to shell with empty string which invokes infinite loop. See diff between S10 and Nevada: bash-3.00# head /usr/postgres/8.3/bin/pltcl_listmod #! /bin/sh # $PostgreSQL: pgsql/src/pl/tcl/modules/pltcl_listmod.in,v 1.3 2006/03/11 04:38:40 momjian Exp $ # # Start tclsh \ exec "$0" "$@" --------------------------------------------------------- bash-3.2$ head pltcl_listmod #! /bin/sh # $PostgreSQL: pgsql/src/pl/tcl/modules/pltcl_listmod.in,v 1.3 2006/03/11 04:38:40 momjian Exp $ # # Start tclsh \ exec /usr/bin/tclsh "$0" "$@" By main opinion main problem is in build process which does not fail and also dependency on tclsh is hidden by exec command. Any idea how to fix it? Zdenek -- Zdenek Kotala Sun Microsystems Prague, Czech Republic http://sun.com/postgresql
Zdenek Kotala napsal(a): > Commands pltcl_listmod, pltcl_delmod, pltcl_loadmod does not work on > Solaris 10, because there is not present tclsh. I found that tclsh is available on solaris 10 in /usr/sfw/bin and its name is tclsh8.3. Zdenek
Zdenek Kotala <Zdenek.Kotala@Sun.COM> writes: > Commands pltcl_listmod, pltcl_delmod, pltcl_loadmod does not work on Solaris 10, > because there is not present tclsh. Shouldn't this bug be filed against Solaris' clearly-broken tcl installation? regards, tom lane
Tom Lane napsal(a): > Zdenek Kotala <Zdenek.Kotala@Sun.COM> writes: >> Commands pltcl_listmod, pltcl_delmod, pltcl_loadmod does not work on Solaris 10, >> because there is not present tclsh. > > Shouldn't this bug be filed against Solaris' clearly-broken tcl > installation? > I'm not able to make decision if tcl installation is broken on Solaris 10. tclsh is there but it is call tclsh8.3 and symbolic link is not there. But problem is also in configure which does not fail when tclsh is not found. I'm able to fix it on build machine to specify TCLSH environment variable, but still configure should be fixed. Zdenek -- Zdenek Kotala Sun Microsystems Prague, Czech Republic http://sun.com/postgresql
Zdenek Kotala <Zdenek.Kotala@Sun.COM> writes: > But problem is also in configure which does not fail when tclsh is not > found. Yes it does ... if test $[#] -eq 0; then test -z "$TCLSH" && AC_MSG_ERROR([unable to locate tclConfig.sh because no Tcl shell wasfound]) regards, tom lane
Tom Lane napsal(a): > Zdenek Kotala <Zdenek.Kotala@Sun.COM> writes: >> But problem is also in configure which does not fail when tclsh is not >> found. > > Yes it does ... > > if test $[#] -eq 0; then > test -z "$TCLSH" && AC_MSG_ERROR([unable to locate tclConfig.sh because no Tcl shell was found]) > Yeah, I looked deeply on our solaris build script and problem is with following configure setup: ./configure --prefix=/tmp/pg --with-tcl --with-tclconfig=/usr/sfw/lib It found tclconfig, but not tclsh ... checking for tclsh... no checking for tcl... no checking for tclConfig.sh... /usr/sfw/lib/tclConfig.sh ... and configure finish successfully but plttcl_* scripts are broken. If I define TCLSH env variable it seems to me be OK. ... checking for tclsh... /usr/sfw/bin/tclsh8.3 checking for tclConfig.sh... /usr/sfw/lib/tclConfig.sh ... Zdenek -- Zdenek Kotala Sun Microsystems Prague, Czech Republic http://sun.com/postgresql
Tom Lane wrote: > Zdenek Kotala <Zdenek.Kotala@Sun.COM> writes: > >> But problem is also in configure which does not fail when tclsh is not >> found. >> > > Yes it does ... > > if test $[#] -eq 0; then > test -z "$TCLSH" && AC_MSG_ERROR([unable to locate tclConfig.sh because no Tcl shell was found]) > > > > Does that happen if you specify the location of tclConfig.sh? I assume it usually knows where tclsh is, but the pltcl utilities won't. cheers andrew
Zdenek Kotala <Zdenek.Kotala@Sun.COM> writes: > Yeah, I looked deeply on our solaris build script and problem is with following > configure setup: > ./configure --prefix=/tmp/pg --with-tcl --with-tclconfig=/usr/sfw/lib > It found tclconfig, but not tclsh Ah. So actually there is a bug in our configure: if you've set --with-tcl, and it fails to find tclsh, it should error out instead of allowing an incorrect path to be substituted into the pltcl_*mod scripts. The configure code is assuming that the only thing it really needs tclsh for is to find tclConfig.sh, but that's not so. regards, tom lane
Am Tuesday, 22. July 2008 schrieb Tom Lane: > Zdenek Kotala <Zdenek.Kotala@Sun.COM> writes: > > Yeah, I looked deeply on our solaris build script and problem is with > > following configure setup: > > > > ./configure --prefix=/tmp/pg --with-tcl --with-tclconfig=/usr/sfw/lib > > > > It found tclconfig, but not tclsh > > Ah. So actually there is a bug in our configure: if you've set > --with-tcl, and it fails to find tclsh, it should error out instead > of allowing an incorrect path to be substituted into the pltcl_*mod > scripts. The configure code is assuming that the only thing it > really needs tclsh for is to find tclConfig.sh, but that's not so. Yeah, the configure code was orignally set up to find Tcl linking information, and it does so either by running tclsh or taking the tclConfig.sh file. That was all; no tclsh was actually necessary. The fact that the pltcl_*mod programs use the discovered tclsh setting as well was most likely an afterthought that was not made fully robust in the fact of all the ways that configure could be called. By the way, these programs start with package require Pgtcl but we don't provide that library. Should that bother us?
Peter Eisentraut <peter_e@gmx.net> writes: > By the way, these programs start with > package require Pgtcl > but we don't provide that library. Should that bother us? Hmm. The scripts actually depend on both pltcl and Pgtcl, so just pushing them out to the Pgtcl package wouldn't really improve matters. I think it's fine to leave them where they are ... though we should document the dependency. Actually it looks like it's been a very long time since these scripts got any love anyway. There's no reason anymore to split modules into multiple rows (not since TOAST...) and they're not schema-safe either. Anybody feel like cleaning them up? Or should we leave 'em as-is for compatibility reasons? regards, tom lane
Tom Lane napsal(a): > Peter Eisentraut <peter_e@gmx.net> writes: >> By the way, these programs start with >> package require Pgtcl >> but we don't provide that library. Should that bother us? > > Hmm. The scripts actually depend on both pltcl and Pgtcl, so just > pushing them out to the Pgtcl package wouldn't really improve matters. > I think it's fine to leave them where they are ... though we should > document the dependency. > > Actually it looks like it's been a very long time since these scripts > got any love anyway. There's no reason anymore to split modules into > multiple rows (not since TOAST...) and they're not schema-safe either. > Anybody feel like cleaning them up? Or should we leave 'em as-is > for compatibility reasons? Just a dumb question, does we need this functionality? Does anybody use it? Zdenek
Zdenek Kotala <Zdenek.Kotala@Sun.COM> writes: > Tom Lane napsal(a): >> Actually it looks like it's been a very long time since these scripts >> got any love anyway. There's no reason anymore to split modules into >> multiple rows (not since TOAST...) and they're not schema-safe either. >> Anybody feel like cleaning them up? Or should we leave 'em as-is >> for compatibility reasons? > Just a dumb question, does we need this functionality? Does anybody use it? Well, autoloading Tcl scripts is an extremely standard thing to do in the Tcl world. It makes sense to me for pltcl to provide a way of autoloading code out of the database instead of some random search path or other --- particularly for trusted pltcl, which shouldn't allow access to the server filesystem at all. Whether these particular scripts are the best possible implementation of the concept is another argument, of course. But I wouldn't agree with just ripping 'em out. Note that my complaints above don't bear on functionality, at least not unless someone is working in an environment where the search_path varies a lot. So the lack of maintenance effort doesn't indicate that they're not getting used. regards, tom lane
Am Tuesday, 22. July 2008 schrieb Zdenek Kotala: > By main opinion main problem is in build process which does not fail and > also dependency on tclsh is hidden by exec command. Fixed. Now, configure will fail if no tcl shell is found. You can specify one with the TCLSH variable.
Peter Eisentraut napsal(a): > Am Tuesday, 22. July 2008 schrieb Zdenek Kotala: >> By main opinion main problem is in build process which does not fail and >> also dependency on tclsh is hidden by exec command. > > Fixed. Now, configure will fail if no tcl shell is found. You can specify > one with the TCLSH variable. Thanks. Is it fixed only on head or do you plan to backported to older branch as well? Thanks Zdenek -- Zdenek Kotala Sun Microsystems Prague, Czech Republic http://sun.com/postgresql
Tom Lane napsal(a): > Zdenek Kotala <Zdenek.Kotala@Sun.COM> writes: >> Tom Lane napsal(a): >>> Actually it looks like it's been a very long time since these scripts >>> got any love anyway. There's no reason anymore to split modules into >>> multiple rows (not since TOAST...) and they're not schema-safe either. >>> Anybody feel like cleaning them up? Or should we leave 'em as-is >>> for compatibility reasons? > >> Just a dumb question, does we need this functionality? Does anybody use it? > > Well, autoloading Tcl scripts is an extremely standard thing to do in > the Tcl world. It makes sense to me for pltcl to provide a way of > autoloading code out of the database instead of some random search path > or other --- particularly for trusted pltcl, which shouldn't allow > access to the server filesystem at all. I see. > Whether these particular scripts are the best possible implementation of > the concept is another argument, of course. But I wouldn't agree with > just ripping 'em out. Note that my complaints above don't bear on > functionality, at least not unless someone is working in an environment > where the search_path varies a lot. So the lack of maintenance effort > doesn't indicate that they're not getting used. I understand. However I have another dumb idea/question - It seems to me that it is client code. I think that it should be integrated into psql command. It has several advantages - remove dependency on tclsh, remove tree commands, works fine on system where tcl is not present. thanks Zdenek -- Zdenek Kotala Sun Microsystems Prague, Czech Republic http://sun.com/postgresql
Zdenek Kotala <Zdenek.Kotala@Sun.COM> writes: > I understand. However I have another dumb idea/question - It seems to me that it > is client code. I think that it should be integrated into psql > command. That doesn't seem like a particularly appropriate thing to do ... nor do I see the argument for calling it client-side code. regards, tom lane
Am Wednesday, 23. July 2008 schrieb Zdenek Kotala: > Is it fixed only on head or do you plan to backported to older branch as > well? I don't see a need to backport this. The only difference is that now you will get an error if no tclsh is found. The call "configure TCLSH=..." is the same in all versions.
Tom Lane napsal(a): > Zdenek Kotala <Zdenek.Kotala@Sun.COM> writes: >> I understand. However I have another dumb idea/question - It seems to me that it >> is client code. I think that it should be integrated into psql >> command. > > That doesn't seem like a particularly appropriate thing to do ... nor > do I see the argument for calling it client-side code. > I think that best thing at this moment is to add item to the TODO list about cleanup. Zdenek -- Zdenek Kotala Sun Microsystems Prague, Czech Republic http://sun.com/postgresql
Zdenek Kotala wrote: > Tom Lane napsal(a): > > Zdenek Kotala <Zdenek.Kotala@Sun.COM> writes: > >> I understand. However I have another dumb idea/question - It seems to me that it > >> is client code. I think that it should be integrated into psql > >> command. > > > > That doesn't seem like a particularly appropriate thing to do ... nor > > do I see the argument for calling it client-side code. > > > > I think that best thing at this moment is to add item to the TODO list about > cleanup. I can add a TODO item but I am unsure anyone really cares --- seeing how long it took us to realize the poor state of the code. -- Bruce Momjian <bruce@momjian.us> http://momjian.us EnterpriseDB http://enterprisedb.com + If your life is a hard drive, Christ can be your backup. +