Commit e8972b7a authored by unknown's avatar unknown

Bug #15327: configure: --with-tcp-port option being partially ignored

  
make sure that if builder configured with a non-standard (!= 3306)
default TCP port that value actually gets used throughout.


win/configure.js:
  Bug #15327: configure: --with-tcp-port option being partially ignored
      
  If MYSQL_TCP_PORT defaulted in configure (factory default 3306
  at the time of this writing), set MYSQL_TCP_PORT to factory
  default, then clear factory default after. That way, we lose no
  information, and we can distinguish between "defaulted" and the
  pathological case "builder specifically configured a port that
  coincides with factory default." This can in theory happen if
  builder configures and builds several servers from a script
  (--with-tcp-port=3306, --with-tcp-port=3316, --with-tcp-port=3326).
  Not all that probable, but much preferable to having more "magic"
  happen in the server when we can solve this without any guesswork.
parent ee7f125d
...@@ -31,6 +31,7 @@ try ...@@ -31,6 +31,7 @@ try
configureInTS.Close(); configureInTS.Close();
var default_comment = "Source distribution"; var default_comment = "Source distribution";
var default_port = GetValue(configureIn, "MYSQL_TCP_PORT_DEFAULT"); var default_port = GetValue(configureIn, "MYSQL_TCP_PORT_DEFAULT");
var actual_port = 0;
var configfile = fso.CreateTextFile("win\\configure.data", true); var configfile = fso.CreateTextFile("win\\configure.data", true);
for (i=0; i < args.Count(); i++) for (i=0; i < args.Count(); i++)
...@@ -58,10 +59,41 @@ try ...@@ -58,10 +59,41 @@ try
default_comment = parts[1]; default_comment = parts[1];
break; break;
case "MYSQL_TCP_PORT": case "MYSQL_TCP_PORT":
default_port = parts[1]; actual_port = parts[1];
break; break;
} }
} }
if (actual_port == 0)
{
// if we actually defaulted (as opposed to the pathological case of
// --with-tcp-port=<MYSQL_TCP_PORT_DEFAULT> which might in theory
// happen if whole batch of servers was built from a script), set
// the default to zero to indicate that; we don't lose information
// that way, because 0 obviously indicates that we can get the
// default value from MYSQL_TCP_PORT. this seems really evil, but
// testing for MYSQL_TCP_PORT==MYSQL_TCP_PORT_DEFAULT would make a
// a port of MYSQL_TCP_PORT_DEFAULT magic even if the builder did not
// intend it to mean "use the default, in fact, look up a good default
// from /etc/services if you can", but really, really meant 3306 when
// they passed in 3306. When they pass in a specific value, let them
// have it; don't second guess user and think we know better, this will
// just make people cross. this makes the the logic work like this
// (which is complicated enough):
//
// - if a port was set during build, use that as a default.
//
// - otherwise, try to look up a port in /etc/services; if that fails,
// use MYSQL_TCP_PORT_DEFAULT (at the time of this writing 3306)
//
// - allow the MYSQL_TCP_PORT environment variable to override that.
//
// - allow command-line parameters to override all of the above.
//
// the top-most MYSQL_TCP_PORT_DEFAULT is read from win/configure.js,
// so don't mess with that.
actual_port = default_port;
default_port = 0;
}
configfile.WriteLine("SET (COMPILATION_COMMENT \"" + configfile.WriteLine("SET (COMPILATION_COMMENT \"" +
default_comment + "\")"); default_comment + "\")");
...@@ -70,7 +102,8 @@ try ...@@ -70,7 +102,8 @@ try
GetValue(configureIn, "PROTOCOL_VERSION") + "\")"); GetValue(configureIn, "PROTOCOL_VERSION") + "\")");
configfile.WriteLine("SET (DOT_FRM_VERSION \"" + configfile.WriteLine("SET (DOT_FRM_VERSION \"" +
GetValue(configureIn, "DOT_FRM_VERSION") + "\")"); GetValue(configureIn, "DOT_FRM_VERSION") + "\")");
configfile.WriteLine("SET (MYSQL_TCP_PORT \"" + default_port + "\")"); configfile.WriteLine("SET (MYSQL_TCP_PORT_DEFAULT \"" + default_port + "\")");
configfile.WriteLine("SET (MYSQL_TCP_PORT \"" + actual_port + "\")");
configfile.WriteLine("SET (MYSQL_UNIX_ADDR \"" + configfile.WriteLine("SET (MYSQL_UNIX_ADDR \"" +
GetValue(configureIn, "MYSQL_UNIX_ADDR_DEFAULT") + "\")"); GetValue(configureIn, "MYSQL_UNIX_ADDR_DEFAULT") + "\")");
var version = GetVersion(configureIn); var version = GetVersion(configureIn);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment