summaryrefslogtreecommitdiff
path: root/win
diff options
context:
space:
mode:
authorunknown <iggy@alf.(none)>2007-09-21 11:38:23 -0400
committerunknown <iggy@alf.(none)>2007-09-21 11:38:23 -0400
commite8972b7afbd04a4e9431c5ab9ab75bc565aa31d1 (patch)
treef0b60050e9def56855bb899e7f0de8e0c3736fab /win
parentee7f125d5f42fd653cb09cf5b15ae9384b7d9248 (diff)
downloadmariadb-git-e8972b7afbd04a4e9431c5ab9ab75bc565aa31d1.tar.gz
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.
Diffstat (limited to 'win')
-rwxr-xr-xwin/configure.js37
1 files changed, 35 insertions, 2 deletions
diff --git a/win/configure.js b/win/configure.js
index a2502d96b80..38ca11f0439 100755
--- a/win/configure.js
+++ b/win/configure.js
@@ -31,6 +31,7 @@ try
configureInTS.Close();
var default_comment = "Source distribution";
var default_port = GetValue(configureIn, "MYSQL_TCP_PORT_DEFAULT");
+ var actual_port = 0;
var configfile = fso.CreateTextFile("win\\configure.data", true);
for (i=0; i < args.Count(); i++)
@@ -58,10 +59,41 @@ try
default_comment = parts[1];
break;
case "MYSQL_TCP_PORT":
- default_port = parts[1];
+ actual_port = parts[1];
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 \"" +
default_comment + "\")");
@@ -70,7 +102,8 @@ try
GetValue(configureIn, "PROTOCOL_VERSION") + "\")");
configfile.WriteLine("SET (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 \"" +
GetValue(configureIn, "MYSQL_UNIX_ADDR_DEFAULT") + "\")");
var version = GetVersion(configureIn);