(THIS IS A TRANSITIONAL REVISION, DO NOT USE, WAIT FOR UPDATED DEPS)
[xonotic/netradiant.git] / install.py
index ab7b5af..3a2f284 100644 (file)
@@ -1,22 +1,48 @@
+# Copyright (C) 2001-2006 William Joseph.
+#
+# This file is part of GtkRadiant.
+#
+# GtkRadiant is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# GtkRadiant is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with GtkRadiant; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+
+"""
+Builds the ./install directory.
+
+Copies files from various locations:
+./setup/data/tools/
+./games/<gamepack>/
+./include/version.default is used to generate RADIANT_MAJOR and RADIANT_MINOR
+"""
 
 import os
 import shutil
 
+def assertMessage(condition, message):
+  if not condition:
+    raise Exception(message)
 
 def copyFile(source, target):
-  assert os.path.isfile(source)
-  targetFile = target
-  if os.path.isdir(targetFile):
-    targetFile = os.path.join(target, os.path.basename(source))
-  print source, "->", targetFile
-  shutil.copyfile(source, targetFile)
-  
+  assertMessage(os.path.isfile(source), "failed to find file: " + source)
+  print source, "->", target
+  shutil.copy2(source, target)
+
 def copyFileIfExists(source, target):
   if os.path.exists(source):
     copyFile(source, target)
-    
+
 def copySvn(source, target):
-  assert os.path.isdir(source)
+  assertMessage(os.path.isdir(source), "failed to find directory: " + source)
   if not os.path.exists(target):
     os.mkdir(target)
   for name in os.listdir(source):
@@ -27,10 +53,10 @@ def copySvn(source, target):
         copySvn(absolute, absTarget)
     else:
       copyFile(absolute, absTarget)
-      
+
 def copyGame(source, game, target):
-  assert os.path.isdir(source)
-  assert os.path.isdir(target)
+  assertMessage(os.path.isdir(source), "failed to find directory: " + source)
+  assertMessage(os.path.isdir(target), "failed to find directory: " + target)
   root = os.path.join(source, os.path.normpath(game[0]))
   if os.path.exists(root):
     gamename = game[1] + ".game"
@@ -38,15 +64,15 @@ def copyGame(source, game, target):
     gamesDir = os.path.join(target, "games")
     if not os.path.exists(gamesDir):
       os.mkdir(gamesDir)
-    copyFile(os.path.join(root, "games", gamename), os.path.join(gamesDir, gamename))  
-  
+    copyFile(os.path.join(root, "games", gamename), os.path.join(gamesDir, gamename))
+
 thisDir = os.path.dirname(__file__)
 gamesRoot = os.path.join(thisDir, "games")
 installRoot = os.path.join(thisDir, "install")
 
 if not os.path.exists(installRoot):
   os.mkdir(installRoot)
-  
+
 # copy generic data
 copySvn(os.path.join(thisDir, os.path.normpath("setup/data/tools")), installRoot)
 
@@ -64,7 +90,10 @@ games = [
   ("Q4Pack/tools", "q4"),
   ("Sof2Pack", "sof2"),
   ("STVEFPack", "stvef"),
-  ("WolfPack/bin", "wolf")
+  ("WolfPack/bin", "wolf"),
+  ("NexuizPack", "nexuiz"),
+  ("DarkPlacesPack", "darkplaces"),
+  ("WarsowPack/tools", "warsow")
 ]
 
 # copy games
@@ -72,18 +101,23 @@ for game in games:
   copyGame(gamesRoot, game, installRoot)
 
 # copy win32 dlls
-gtk2Root = os.path.normpath(os.path.join(thisDir, "../gtk2-2.4"))
+gtk2Root = os.path.normpath(os.path.join(thisDir, "../gtk2-2.10/install"))
 if os.path.exists(gtk2Root):
-  copySvn(os.path.join(gtk2Root, "install"), installRoot)
-  
-libxml2 = os.path.normpath(os.path.join(thisDir, "../libxml2-2.6/win32/install/libxml2.dll"))
+  copySvn(gtk2Root, installRoot)
+
+libxml2 = os.path.normpath(os.path.join(thisDir, "../libxml2-2.6/bin/libxml2.dll"))
 copyFileIfExists(libxml2, installRoot)
-  
-libpng = os.path.normpath(os.path.join(thisDir, "../libpng-1.2/lib/libpng13.dll"))
-copyFileIfExists(libpng, installRoot)
-  
+
 libmhash = os.path.normpath(os.path.join(thisDir, "../mhash-0.9/win32/libmhash/Release/libmhash.dll"))
 copyFileIfExists(libmhash, installRoot)
-  
-zlib = os.path.normpath(os.path.join(thisDir, "../zlib1-1.2/zlib1.dll"))
-copyFileIfExists(zlib, installRoot)
+
+copySvn("../msvc_redist", installRoot)
+
+dbghelp = os.path.normpath(os.path.join(thisDir, "../msvc_redist/dbghelp.dll"))
+copyFileIfExists(dbghelp, installRoot)
+
+# create version files
+version = open(os.path.join(thisDir, "include/version.default"), "rt").readline().split(".")
+assertMessage(len(version) == 3, "failed to parse include/version.default")
+open(os.path.join(thisDir, "install/RADIANT_MAJOR"), "wt").write(str(version[1]))
+open(os.path.join(thisDir, "install/RADIANT_MINOR"), "wt").write(str(version[2]))