From 0748a05bf0a12540776cf448d0cd91ebfadd882a Mon Sep 17 00:00:00 2001 From: David Anderson Date: Sat, 8 Feb 2014 14:35:11 -0800 Subject: [PATCH] Remove the C# builder - the last vestige of the Old Republic. Former-commit-id: ff7277048f52b8ee658583ed7c7801204bed9493 --- installer/builder/ABuilder.cs | 249 ------------------- installer/builder/AMod.cs | 123 --------- installer/builder/App.ico | Bin 1078 -> 0 bytes installer/builder/Build.cs | 52 ---- installer/builder/Config.cs | 100 -------- installer/builder/CoreMod.cs | 165 ------------ installer/builder/LinuxBuilder.cs | 131 ---------- installer/builder/MacBuilder.cs | 111 --------- installer/builder/Main.cs | 145 ----------- installer/builder/Makefile | 20 -- installer/builder/ModCstrike.cs | 60 ----- installer/builder/ModDoD.cs | 43 ---- installer/builder/ModEsf.cs | 23 -- installer/builder/ModNs.cs | 37 --- installer/builder/ModTFC.cs | 36 --- installer/builder/ModTs.cs | 40 --- installer/builder/Properties/AssemblyInfo.cs | 33 --- installer/builder/Win32Builder.cs | 100 -------- installer/builder/builder.csproj | 69 ----- installer/builder/builder.exe | Bin 21504 -> 0 bytes installer/builder/builder.sln | 20 -- installer/builder/linux32.info | 6 - installer/builder/linux64.info | 6 - installer/builder/mac.info | 6 - installer/builder/win32.info | 6 - 25 files changed, 1581 deletions(-) delete mode 100755 installer/builder/ABuilder.cs delete mode 100755 installer/builder/AMod.cs delete mode 100755 installer/builder/App.ico delete mode 100755 installer/builder/Build.cs delete mode 100755 installer/builder/Config.cs delete mode 100755 installer/builder/CoreMod.cs delete mode 100755 installer/builder/LinuxBuilder.cs delete mode 100644 installer/builder/MacBuilder.cs delete mode 100755 installer/builder/Main.cs delete mode 100755 installer/builder/Makefile delete mode 100755 installer/builder/ModCstrike.cs delete mode 100755 installer/builder/ModDoD.cs delete mode 100755 installer/builder/ModEsf.cs delete mode 100755 installer/builder/ModNs.cs delete mode 100755 installer/builder/ModTFC.cs delete mode 100755 installer/builder/ModTs.cs delete mode 100644 installer/builder/Properties/AssemblyInfo.cs delete mode 100755 installer/builder/Win32Builder.cs delete mode 100755 installer/builder/builder.csproj delete mode 100755 installer/builder/builder.exe delete mode 100755 installer/builder/builder.sln delete mode 100755 installer/builder/linux32.info delete mode 100755 installer/builder/linux64.info delete mode 100644 installer/builder/mac.info delete mode 100755 installer/builder/win32.info diff --git a/installer/builder/ABuilder.cs b/installer/builder/ABuilder.cs deleted file mode 100755 index 50a37960..00000000 --- a/installer/builder/ABuilder.cs +++ /dev/null @@ -1,249 +0,0 @@ -using System; -using System.Diagnostics; -using System.IO; - -namespace AMXXRelease -{ - //This class specifies the process that builds a release. - //It also implements the functions that are unlikely to change from mod to mod. - public abstract class ABuilder - { - protected Config m_Cfg; - - public virtual void OnBuild() - { - } - - public virtual void CreateDir(string dir) - { - Directory.CreateDirectory(dir); - } - - public virtual bool Build(Config cfg, Build build) - { - m_Cfg = cfg; - - OnBuild(); - - int num = build.GetMods(); - - AMod mod; - for (int i=0; i=0; i--) - { - if ((input[i] == '\\' || input[i] == '/') && i != input.Length-1) - { - return input.Substring(i+1, input.Length-i-1); - } - } - - return input; - } - - public virtual bool BuildModModules(AMod mod) - { - int num = mod.GetModules(); - - Module module; - string binary, basedir; - - basedir = m_Cfg.OutputPath(); - basedir += "\\" + mod.GetModPath(); - basedir = PropSlashes(basedir); - - string dir; - for (int i=0; i<{9 diff --git a/installer/builder/Build.cs b/installer/builder/Build.cs deleted file mode 100755 index 7d80a9d0..00000000 --- a/installer/builder/Build.cs +++ /dev/null @@ -1,52 +0,0 @@ -using System; -using System.Collections; - -namespace AMXXRelease -{ - //Class that iterates the different pieces - // to be completed over for the build - public class Build - { - protected ArrayList m_Mods; - protected Config m_Cfg; - - public Build(Config cfg) - { - m_Mods = new ArrayList(); - m_Cfg = cfg; - - CoreMod core = new CoreMod(); - ModCstrike cstrike = new ModCstrike(); - ModDoD dod = new ModDoD(); - ModTFC tfc = new ModTFC(); - - m_Mods.Add(core); - m_Mods.Add(cstrike); - m_Mods.Add(dod); - m_Mods.Add(tfc); - - // These mods don't have OS X builds - if (!Releaser.IsOSX) - { - ModEsf esf = new ModEsf(); - ModNs ns = new ModNs(); - ModTs ts = new ModTs(); - - m_Mods.Add(esf); - m_Mods.Add(ns); - m_Mods.Add(ts); - } - } - - public virtual int GetMods() - { - return m_Mods.Count; - } - - public virtual AMod GetMod(int i) - { - return (AMod)m_Mods[i]; - } - } -} - diff --git a/installer/builder/Config.cs b/installer/builder/Config.cs deleted file mode 100755 index a0286c2e..00000000 --- a/installer/builder/Config.cs +++ /dev/null @@ -1,100 +0,0 @@ -using System; -using System.IO; - -namespace AMXXRelease -{ - //Reads in config file info - public class Config - { - private string m_SourceTree; - private string m_OutputPath; - private string m_DevenvPath; - private string m_PathToCompress; - private string m_ReleaseName; - private string m_MakeOpts; - - public Config() - { - } - - public string GetSourceTree() - { - return m_SourceTree; - } - - public string OutputPath() - { - return m_OutputPath; - } - - public string DevenvPath() - { - return m_DevenvPath; - } - - public string CompressPath() - { - return m_PathToCompress; - } - - public string GetReleaseName() - { - return m_ReleaseName; - } - - public string MakeOpts() - { - return m_MakeOpts; - } - - public bool ReadFromFile(string file) - { - try - { - StreamReader sr = new StreamReader(file); - - string line; - string delim = "\t \n\r\v"; - string splt = "="; - while ( (line = sr.ReadLine()) != null ) - { - line = line.Trim(delim.ToCharArray()); - if (line.Length < 1 || line[0] == ';') - continue; - string [] s = line.Split(splt.ToCharArray()); - string key, val=""; - if (s.GetLength(0) >= 1) - { - key = s[0]; - if (s.GetLength(0) >= 2) - { - for(int i=1; i - /// Summary description for ModCstrike. - /// - public class ModCstrike : AMod - { - public ModCstrike() - { - AddModules(); - AddPlugins(); - } - - public override sealed string GetName() - { - return "cstrike"; - } - - private void AddPlugins() - { - AddPlugin("miscstats"); - AddPlugin("stats_logging"); - AddPlugin("statsx"); - AddPlugin("restmenu"); - - Plugin csstats = new Plugin("csstats"); - csstats.outdir = "data"; - m_Plugins.Add(csstats); - } - - public override sealed bool CopyExtraFiles(ABuilder ab, string basedir, string source) - { - - if (System.Environment.OSVersion.Platform == System.PlatformID.Unix) - { - } else { - File.Copy(source + "\\dlls\\cstrike\\csx\\msvc10\\Release\\WinCSX.exe", - basedir + "\\data\\WinCSX.exe", - true); - } - - return true; - } - - private void AddModules() - { - Module csx = new Module("csx"); - csx.sourcedir = "dlls\\cstrike\\csx"; - - Module cstrike = new Module("cstrike"); - cstrike.sourcedir = "dlls\\cstrike\\cstrike"; - - m_Modules.Add(csx); - m_Modules.Add(cstrike); - } - } -} diff --git a/installer/builder/ModDoD.cs b/installer/builder/ModDoD.cs deleted file mode 100755 index 9b04d573..00000000 --- a/installer/builder/ModDoD.cs +++ /dev/null @@ -1,43 +0,0 @@ -using System; - -namespace AMXXRelease -{ - //Day of Defeat - public class ModDoD : AMod - { - public ModDoD() - { - AddModules(); - AddPlugins(); - } - - public override sealed string GetName() - { - return "dod"; - } - - private void AddPlugins() - { - AddPlugin("stats"); - AddPlugin("plmenu"); - AddPlugin("stats_logging"); - AddPlugin("statssounds"); - - Plugin pl = AddPlugin("dodstats"); - pl.outdir = "data"; - } - - private void AddModules() - { - Module dodx = new Module("dodx"); - dodx.sourcedir = "dlls\\dod\\dodx"; - - Module dodfun = new Module("dodfun"); - dodfun.sourcedir = "dlls\\dod\\dodfun"; - - m_Modules.Add(dodx); - m_Modules.Add(dodfun); - } - } -} - diff --git a/installer/builder/ModEsf.cs b/installer/builder/ModEsf.cs deleted file mode 100755 index f2b48aad..00000000 --- a/installer/builder/ModEsf.cs +++ /dev/null @@ -1,23 +0,0 @@ -using System; - -namespace AMXXRelease -{ - //Earth's Special Forces - public class ModEsf : AMod - { - public ModEsf() - { - AddPlugins(); - } - - public override sealed string GetName() - { - return "esf"; - } - - private void AddPlugins() - { - AddPlugin("EvolutionX.Core"); - } - } -} diff --git a/installer/builder/ModNs.cs b/installer/builder/ModNs.cs deleted file mode 100755 index ccd0d4bf..00000000 --- a/installer/builder/ModNs.cs +++ /dev/null @@ -1,37 +0,0 @@ -using System; - -namespace AMXXRelease -{ - //Natural Selection - public class ModNs : AMod - { - public ModNs() - { - AddModules(); - AddPlugins(); - } - - public override sealed string GetName() - { - return "ns"; - } - - private void AddPlugins() - { - AddPlugin("mapchooser"); - AddPlugin("nextmap"); - AddPlugin("timeleft"); - AddPlugin("idlekicker"); - AddPlugin("nscommands"); - AddPlugin("unstuck"); - AddPlugin("plmenu"); - } - - private void AddModules() - { - Module ns = new Module("ns"); - - m_Modules.Add(ns); - } - } -} diff --git a/installer/builder/ModTFC.cs b/installer/builder/ModTFC.cs deleted file mode 100755 index c7c27799..00000000 --- a/installer/builder/ModTFC.cs +++ /dev/null @@ -1,36 +0,0 @@ -using System; - -namespace AMXXRelease -{ - //Team Fortress Classic - public class ModTFC : AMod - { - public ModTFC() - { - AddModules(); - AddPlugins(); - } - - public override sealed string GetName() - { - return "tfc"; - } - - private void AddPlugins() - { - AddPlugin("plmenu"); - AddPlugin("stats_logging"); - AddPlugin("statssounds"); - AddPlugin("stats"); - Plugin pl = AddPlugin("tfcstats"); - pl.outdir = "data"; - } - - private void AddModules() - { - Module tfcx = new Module("tfcx"); - - m_Modules.Add(tfcx); - } - } -} diff --git a/installer/builder/ModTs.cs b/installer/builder/ModTs.cs deleted file mode 100755 index 8d318ae2..00000000 --- a/installer/builder/ModTs.cs +++ /dev/null @@ -1,40 +0,0 @@ -using System; - -namespace AMXXRelease -{ - //The Specialists - public class ModTs : AMod - { - public ModTs() - { - AddModules(); - AddPlugins(); - } - - public override sealed string GetName() - { - return "ts"; - } - - private void AddPlugins() - { - AddPlugin("stats"); - AddPlugin("stats_logging"); - AddPlugin("statssounds"); - Plugin pl = AddPlugin("tsstats"); - pl.outdir = "data"; - } - - private void AddModules() - { - Module tsx = new Module("tsx"); - tsx.sourcedir = "dlls\\ts\\tsx"; - - Module tsfun = new Module("tsfun"); - tsfun.sourcedir = "dlls\\ts\\tsfun"; - - m_Modules.Add(tsx); - m_Modules.Add(tsfun); - } - } -} diff --git a/installer/builder/Properties/AssemblyInfo.cs b/installer/builder/Properties/AssemblyInfo.cs deleted file mode 100644 index 1f2a7388..00000000 --- a/installer/builder/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,33 +0,0 @@ -using System.Reflection; -using System.Runtime.CompilerServices; -using System.Runtime.InteropServices; - -// General Information about an assembly is controlled through the following -// set of attributes. Change these attribute values to modify the information -// associated with an assembly. -[assembly: AssemblyTitle("AMXX Build Tool")] -[assembly: AssemblyDescription("Build scripts for AMX Mod X")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("AlliedModders, LLC")] -[assembly: AssemblyProduct("AMXX Build Tool")] -[assembly: AssemblyCopyright("(C)Copyright 2004-2008 AlliedModders, LLC")] -[assembly: AssemblyTrademark("")] -[assembly: AssemblyCulture("")] - -// Setting ComVisible to false makes the types in this assembly not visible -// to COM components. If you need to access a type in this assembly from -// COM, set the ComVisible attribute to true on that type. -[assembly: ComVisible(false)] - -// The following GUID is for the ID of the typelib if this project is exposed to COM -[assembly: Guid("83e54c68-616e-4392-9a12-7ff5a27865d4")] - -// Version information for an assembly consists of the following four values: -// -// Major Version -// Minor Version -// Build Number -// Revision -// -[assembly: AssemblyVersion("1.0.0.0")] -[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/installer/builder/Win32Builder.cs b/installer/builder/Win32Builder.cs deleted file mode 100755 index 2ef63ad3..00000000 --- a/installer/builder/Win32Builder.cs +++ /dev/null @@ -1,100 +0,0 @@ -using System; -using System.Diagnostics; -using System.IO; - -namespace AMXXRelease -{ - //Build process for Windows (32bit) - public class Win32Builder : ABuilder - { - private string m_AmxxPc; - - public override void OnBuild() - { - m_AmxxPc = PropSlashes(m_Cfg.GetSourceTree() + "\\plugins\\amxxpc.exe"); - } - - public override void CompressDir(string target, string dir) - { - ProcessStartInfo info = new ProcessStartInfo(); - - info.FileName = m_Cfg.CompressPath(); - info.WorkingDirectory = dir; - info.Arguments = "-r \"" + target + "-windows.zip\" " + "*.*"; - info.UseShellExecute = false; - - Process p = Process.Start(info); - p.WaitForExit(); - } - - public override void AmxxPc(string inpath, string args) - { - ProcessStartInfo info = new ProcessStartInfo(); - - info.WorkingDirectory = PropSlashes(m_Cfg.GetSourceTree() + "\\plugins"); - info.FileName = (string)m_AmxxPc.Clone(); - info.Arguments = inpath + ".sma"; - if (args != null) - info.Arguments += " " + args; - info.UseShellExecute = false; - info.RedirectStandardOutput = true; - info.RedirectStandardError = true; - - Process p = Process.Start(info); - Console.WriteLine(p.StandardOutput.ReadToEnd() + "\n"); - p.WaitForExit(); - } - - public override string GetLibExt() - { - return ".dll"; - } - - public override string BuildModule(Module module) - { - ProcessStartInfo info = new ProcessStartInfo(); - - string dir = m_Cfg.GetSourceTree() + "\\" + module.sourcedir; - if (module.bindir != null) - dir += "\\" + module.bindir; - string file = dir; - if (module.bindir == null) - file += "\\" + module.bindir; - file += "\\" + module.build + "\\" + module.projname + ".dll"; - file = PropSlashes(file); - - if (File.Exists(file)) - File.Delete(file); - - string args = m_Cfg.MakeOpts(); - if (args != null) - { - info.Arguments = args + " "; - } - else - { - info.Arguments = ""; - } - - info.WorkingDirectory = PropSlashes(dir); - info.FileName = m_Cfg.DevenvPath(); - info.Arguments += module.vcproj + ".sln" + " /p:Configuration=" + module.build + " /t:Rebuild"; - info.UseShellExecute = false; - info.RedirectStandardOutput = true; - info.RedirectStandardError = true; - - Process p = Process.Start(info); - Console.WriteLine(p.StandardOutput.ReadToEnd()); - p.WaitForExit(); - p.Close(); - - if (!File.Exists(file)) - { - return null; - } - - return file; - } - } -} - diff --git a/installer/builder/builder.csproj b/installer/builder/builder.csproj deleted file mode 100755 index 1109b1fe..00000000 --- a/installer/builder/builder.csproj +++ /dev/null @@ -1,69 +0,0 @@ - - - - Debug - AnyCPU - 8.0.50727 - 2.0 - {93EF9F0C-2C25-428C-A13F-B7B7E46B22BB} - Exe - Properties - builder - builder - v2.0 - - - 2.0 - - - - true - full - false - bin\Debug\ - DEBUG;TRACE - prompt - 4 - AllRules.ruleset - - - pdbonly - true - bin\Release\ - TRACE - prompt - 4 - AllRules.ruleset - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/installer/builder/builder.exe b/installer/builder/builder.exe deleted file mode 100755 index 53e78956d63716ee3a8c2cf0c3dcd34106bd92c3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21504 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