| Bug #32679 | mysqld_safe looks for errmsg.sys in wrong path | ||
|---|---|---|---|
| Submitted: | 23 Nov 2007 19:53 | Modified: | 25 Feb 2008 19:35 | 
| Reporter: | Matthew Montgomery | Email Updates: | |
| Status: | Closed | Impact on me: | |
| Category: | MySQL Server: Installing | Severity: | S2 (Serious) | 
| Version: | 6.0.3 | OS: | Linux | 
| Assigned to: | Timothy Smith | CPU Architecture: | Any | 
   [23 Nov 2007 19:53]
   Matthew Montgomery        
  
 
   [29 Nov 2007 12:07]
   Daniel Fischer        
  Bug#32163 has been marked as a duplicate of this bug.
   [1 Dec 2007 0:24]
   Timothy Smith        
  I'm pretty sure that something like this diff will work (untested):
===== scripts/make_binary_distribution.sh 1.162 vs edited =====
--- 1.162/scripts/make_binary_distribution.sh   2007-10-01 10:40:40 -06:00
+++ edited/scripts/make_binary_distribution.sh  2007-11-30 17:14:23 -07:00
@@ -23,7 +23,8 @@
 #  Note that the structure created by this script is slightly different from
 #  what a normal "make install" would produce. No extra "mysql" sub directory
 #  will be created, i.e. no "$prefix/include/mysql", "$prefix/lib/mysql" or
-#  "$prefix/share/mysql".
+#  "$prefix/share/mysql".  This is because the build system explicitly calls
+#  make with pkgdatadir=<datadir>, etc.
 #
 #  In GNU make/automake terms
 #
===== scripts/mysqld_safe.sh 1.95 vs edited =====
--- 1.95/scripts/mysqld_safe.sh 2007-10-10 14:15:05 -06:00
+++ edited/scripts/mysqld_safe.sh       2007-11-30 17:21:10 -07:00
@@ -202,14 +202,16 @@ parse_arguments() {
 # First, try to find BASEDIR and ledir (where mysqld is)
 # 
 
+relpkgdata=`echo '@pkgdatadir@' | sed -e 's,^@prefix@,,' -e 's,^/,,' -e 's,^,./,'`
+
 MY_PWD=`pwd`
 # Check for the directories we would expect from a binary release install
-if test -f ./share/mysql/english/errmsg.sys -a -x ./bin/mysqld
+if test -f "$relpkgdata"/english/errmsg.sys -a -x ./bin/mysqld
 then
   MY_BASEDIR_VERSION=$MY_PWD           # Where bin, share and data are
   ledir=$MY_BASEDIR_VERSION/bin                # Where mysqld is
 # Check for the directories we would expect from a source install
-elif test -f ./share/mysql/english/errmsg.sys -a -x ./libexec/mysqld
+elif test -f "$replpkgdata"/english/errmsg.sys -a -x ./libexec/mysqld
 then
   MY_BASEDIR_VERSION=$MY_PWD           # Where libexec, share and var are
   ledir=$MY_BASEDIR_VERSION/libexec    # Where mysqld is
 
   [3 Dec 2007 22:48]
   Bugs System        
  A patch for this bug has been committed. After review, it may be pushed to the relevant source trees for release in the next version. You can access the patch from: http://lists.mysql.com/commits/39155 ChangeSet@1.2624, 2007-12-03 15:48:27-07:00, tsmith@ramayana.hindu.god +2 -0 Bug #32679: mysqld_safe looks for errmsg.sys in wrong path The fix for bug 28544 moved our package data from ./share/mysql to ./share. mysqld_safe had the old directory hard-coded. The fix is to use the @pkgdatadir@ and @prefix@ values, to adapt to different ways of building the package.
   [5 Dec 2007 2:07]
   Timothy Smith        
  Queued to 5.1- and 6.0-build team trees. Also pushed directly into 6.0.4-alpha release tree. This was not fixed in 5.0 or earlier, because the build system does not adjust pkgdatadir in those versions, so the hard-coded value (./share/mysql/...) in mysqld_safe matches the build, and people won't see a problem. It is only for versions >= 5.1 that the build system explicitly sets pkgdatadir and friends.
   [24 Jan 2008 0:22]
   Timothy Smith        
  Gah. Somehow this was *not* queued to 5.1+. Now it is in 5.1- and 6.0-build. It will be in 5.1.23 and 6.0.4. Sorry for any confusion.
   [4 Feb 2008 20:06]
   Sveta Smirnova        
  Bug #34288 was marked as duplicate of this one.
   [25 Feb 2008 15:59]
   Bugs System        
  Pushed into 5.1.24-rc
   [25 Feb 2008 16:05]
   Bugs System        
  Pushed into 6.0.5-alpha
   [25 Feb 2008 19:35]
   Paul DuBois        
  Noted in 5.1.23, 6.0.4 changelogs. mysqld_safe looked for error messages in the wrong location.
