summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJosh Cooper <josh@puppetlabs.com>2011-07-29 09:42:57 -0700
committerJacob Helwig <jacob@puppetlabs.com>2011-08-19 13:52:58 -0700
commit328eaa2f7fd07ac7059e62d30064ef4b70f1f89f (patch)
treed2c96796ef8b67009c7e9e83bb6ba164ecfaf327
parent088c7ac8632ee7137e86a15f28a75a7abbc0d252 (diff)
downloadpuppet-328eaa2f7fd07ac7059e62d30064ef4b70f1f89f.tar.gz
puppet-328eaa2f7fd07ac7059e62d30064ef4b70f1f89f.tar.xz
puppet-328eaa2f7fd07ac7059e62d30064ef4b70f1f89f.zip
(#8660) Fix destdir option on Windows
Specifying the --destdir option failed on windows because the install script attempted to concatenate two absolute paths together. On Unix, this is fine, but on Windows, it fails because the colon (part of the drive specifier) is not a valid filename character. This commit adds a method to join two paths, stripping off the drive specifier, if present. Also fixed a minor bug, which caused a deprecation warning to always be printed when the --destdir option is omitted, which is the default case. Reviewed-by: Cameron Thomas <cameron@puppetlabs.com> (cherry picked from commit f6006177a85766cfb3387db6c3d337bf97b52f17)
-rwxr-xr-xinstall.rb22
1 files changed, 16 insertions, 6 deletions
diff --git a/install.rb b/install.rb
index 03bcfa06b..3d109b9a7 100755
--- a/install.rb
+++ b/install.rb
@@ -286,18 +286,18 @@ def prepare_installation
if not InstallOptions.destdir.nil?
destdir = InstallOptions.destdir
# To be deprecated once people move over to using --destdir option
- elsif ENV['DESTDIR'] != nil?
+ elsif not ENV['DESTDIR'].nil?
destdir = ENV['DESTDIR']
warn "DESTDIR is deprecated. Use --destdir instead."
else
destdir = ''
end
- configdir = "#{destdir}#{configdir}"
- bindir = "#{destdir}#{bindir}"
- sbindir = "#{destdir}#{sbindir}"
- mandir = "#{destdir}#{mandir}"
- sitelibdir = "#{destdir}#{sitelibdir}"
+ configdir = join(destdir, configdir)
+ bindir = join(destdir, bindir)
+ sbindir = join(destdir, sbindir)
+ mandir = join(destdir, mandir)
+ sitelibdir = join(destdir, sitelibdir)
FileUtils.makedirs(configdir) if InstallOptions.configs
FileUtils.makedirs(bindir)
@@ -317,6 +317,16 @@ def prepare_installation
end
##
+# Join two paths. On Windows, dir must be converted to a relative path,
+# by stripping the drive letter, but only if the basedir is not empty.
+#
+def join(basedir, dir)
+ return "#{basedir}#{dir[2..-1]}" if $operatingsystem == "windows" and basedir.length > 0 and dir.length > 2
+
+ "#{basedir}#{dir}"
+end
+
+##
# Build the rdoc documentation. Also, try to build the RI documentation.
#
def build_rdoc(files)