diff --git a/uppbox/MakeInstall5/Main.cpp b/uppbox/MakeInstall5/Main.cpp new file mode 100644 index 000000000..625c53b8c --- /dev/null +++ b/uppbox/MakeInstall5/Main.cpp @@ -0,0 +1,115 @@ +#include +#include + +using namespace Upp; + +void Log(const char *txt) +{ + Cout() << txt << "\r\n"; +} + +void Error(const char *e) +{ + Log(e); + abort(); +} + +String Syx(const char *s) +{ + Log(s); + String r; + int q = Sys(s, r); + if(q) + Error(String().Cat() << "Failed: " << s << "\r\n" << + "Exit code: " << q << "\r\n" << + "Output: " << r); + return r; +} + +void CopyFolder(const char *src, const char *dst, bool deep = true) +{ + if(GetFileName(src) == ".svn") + return; + Cout() << Sprintf("Directory %s\n", src); + RealizeDirectory(dst); + FindFile ff(String(src) + "/*.*"); + while(ff) { + String s = AppendFileName(src, ff.GetName()); + String d = AppendFileName(dst, ff.GetName()); + if(ff.IsFile()) { + String q = LoadFile(s); + String ext = ToLower(GetFileExt(s)); + if(ext != ".aux" && ext != ".$old") + SaveFile(d, q); + } + else + if(ff.IsFolder() && *ff.GetName() != '.') { + if(deep || *GetFileExt(s)) + CopyFolder(s, d, deep); + } + ff.Next(); + } +} + +int CrLfSm(int c) +{ + return c == ';' || c == '\r' || c == '\n'; +} + +void CopyFolders(const char *src, const char *dst, const char *folders, bool deep = true) +{ + Vector folder = Split(LoadFile(folders), CrLfSm); + for(int i = 0; i < folder.GetCount(); i++) + CopyFolder(AppendFileName(src, folder[i]), AppendFileName(dst, folder[i]), deep); +} + +String tmp = "u:/upp.tmp"; +String upptmp = tmp + "/upp"; +String ass = upptmp + "/uppsrc"; +String upp = "u:/upp.src"; +String uppsrc = upp + "/uppsrc"; +String bin = "u:/bin"; + +int NoDigit(int c) { return IsDigit(c) ? 0 : c; } +int FilterVersion(int c) { return c == ':' ? '_' : c; } + +void Make(String pkg, String exe, String method = "MSC9") +{ + Syx("c:/upp/umk " + ass + " " + pkg + " c:/upp/" + method + ".bm -arv " + upptmp + "/" + exe); + FileDelete(upptmp + "/" + ForceExt(exe, ".map")); +} + +CONSOLE_APP_MAIN +{ + Vector s = Split(Syx("svnversion " + uppsrc), NoDigit); + if(s.GetCount() == 0) + Error("Invalid version"); + String version = s.Top(); + Log("version: " + version); + + DeleteFolderDeep(tmp); + RealizeDirectory(tmp); + + RealizeDirectory("u:/upload"); + + CopyFolder(bin, upptmp, false); + CopyFolder(bin + "/win32", upptmp + "/bin"); + CopyFolder(upp + "/uppbox/win32-files", upptmp); + + CopyFolders(uppsrc, ass, uppsrc + "/packages"); + CopyFolders(uppsrc, ass, uppsrc + "/packages1", false); + CopyFolders(upp, upptmp, uppsrc + "/assemblies"); + SaveFile(upptmp + "/uppsrc/guiplatform.h", ""); + SaveFile(upptmp + "/uppsrc/uppconfig.h", LoadFile(uppsrc + "/uppconfig.h")); + SaveFile(upptmp + "/uppsrc/ide/version.h", "#define IDE_VERSION \"" + version + "\"\r\n"); + Make("ide", "theide32.exe"); + Make("ide", "theide.exe", "MSC9X64"); + Make("umk", "umk.exe"); + + SetCurrentDirectory(upptmp); + + SaveFile("license.chk", "1"); + + Syx("7z a u:/upload/upp-win32-" + Filter(version, FilterVersion) + ".7z" + " " + upptmp + " -r -mx -m0fb=255 -mf=off"); +} diff --git a/uppbox/MakeInstall5/MakeInstall5.upp b/uppbox/MakeInstall5/MakeInstall5.upp new file mode 100644 index 000000000..09d311a8e --- /dev/null +++ b/uppbox/MakeInstall5/MakeInstall5.upp @@ -0,0 +1,13 @@ +description "Install creator - Wine version for nightly builds\377"; + +uses + plugin\bz2, + Core, + plugin\ftp; + +file + Main.cpp; + +mainconfig + "" = ""; + diff --git a/uppbox/MakeInstall5/init b/uppbox/MakeInstall5/init new file mode 100644 index 000000000..6d85bc992 --- /dev/null +++ b/uppbox/MakeInstall5/init @@ -0,0 +1,6 @@ +#ifndef _MakeInstall5_icpp_init_stub +#define _MakeInstall5_icpp_init_stub +#include "plugin\bz2/init" +#include "Core/init" +#include "plugin\ftp/init" +#endif diff --git a/uppbox/Scripts/win b/uppbox/Scripts/win index bd0a3422f..6dc538717 100644 --- a/uppbox/Scripts/win +++ b/uppbox/Scripts/win @@ -4,7 +4,7 @@ set -e # u:/ is set to be the home folder of account responsible for building # wine and SDK is installed there... -wine u:/Win32/theide/umk u:/upp.src/uppbox,u:/upp.src/uppsrc MakeInstall4 u:/Win32/theide/MSC9.bm -ar u:/mku.exe +wine u:/Win32/upp/umk u:/upp.src/uppbox,u:/upp.src/uppsrc MakeInstall5 u:/Win32/theide/MSC9.bm -ar u:/mku.exe wine u:/mku.exe #~/bin/upload