PackageEditor.js 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164
  1. var fs = require('fs-extra');
  2. var host = require("./Host");
  3. var config = require("./BuildConfig");
  4. namespace('package', function() {
  5. task('windows_editor', {
  6. async: true
  7. }, function() {
  8. var srcDir = config.artifactsRoot + "AtomicEditor/";
  9. var dstDir = config.artifactsRoot + "Dist/";
  10. host.cleanCreateDir(dstDir);
  11. var installerName = "AtomicEditor_Windows64_Setup_" + config.buildSHA + ".exe";
  12. var installerPath = config.artifactsRoot + "Dist/" + installerName;
  13. var nsisDefines = "/DATOMIC_ROOT=" + config.atomicRoot;
  14. nsisDefines += " /DEDITOR_VERSION=1";
  15. nsisDefines += " /DINSTALLER_NAME=" + installerName;
  16. var makeNSISCmd = config.atomicRoot + "\\Build\\Scripts\\Windows\\CreateInstaller.bat";
  17. makeNSISCmd += " " + nsisDefines + " " + config.atomicRoot + "/Build/Scripts/Windows/Installer/AtomicEditor.nsi";
  18. var editorExe = dstDir + "/AtomicEditor.exe";
  19. var pfxFile = process.env.ATOMIC_PFX_FILE;
  20. var pfxPW = process.env.ATOMIC_PFX_PW;
  21. var signBaseCmd = "signtool.exe sign /f " + pfxFile;
  22. signBaseCmd += " /p " + pfxPW;
  23. signBaseCmd += " /t http://timestamp.verisign.com/scripts/timestamp.dll";
  24. signBaseCmd += " /v ";
  25. var signEditorCmd = signBaseCmd + config.artifactsRoot + "AtomicEditor/AtomicEditor.exe";
  26. var signInstallerCmd = signBaseCmd + installerPath;
  27. var cmds = [];
  28. if (pfxFile && pfxPW) {
  29. cmds.push(signEditorCmd);
  30. }
  31. cmds.push(makeNSISCmd);
  32. if (pfxFile && pfxPW) {
  33. cmds.push(signInstallerCmd);
  34. }
  35. jake.exec(cmds, function() {
  36. complete();
  37. }, {
  38. printStdout: true
  39. });
  40. });
  41. task('mac_editor', {
  42. async: true
  43. }, function() {
  44. var editorAppFolder = config.editorAppFolder;
  45. var srcDir = config.artifactsRoot + "AtomicEditor/";
  46. var dstDir = config.artifactsRoot + "Dist/";
  47. var editorZip = dstDir + "AtomicEditor_MacOSX_" + config.buildSHA + ".zip";
  48. var devIDApp = config.devIDApp;
  49. host.cleanCreateDir(dstDir);
  50. cmds = [];
  51. if (config.jenkins) {
  52. cmds.push("security unlock-keychain -p \"jenkins\" /Users/jenkins/Library/Keychains/login.keychain ");
  53. }
  54. if (devIDApp) {
  55. cmds.push("codesign --deep --force --verify --verbose --sign \"Developer ID Application: " + devIDApp + "\" " + editorAppFolder);
  56. }
  57. cmds.push("cd " + srcDir + " && zip -r -X " + editorZip +" ./AtomicEditor.app");
  58. jake.exec(cmds, function() {
  59. console.log("Packaged Mac Editor to ", editorZip);
  60. if (!devIDApp) {
  61. console.log("\nDeveloper ID Application not specified, code is not be signed!\n\n");
  62. }
  63. complete();
  64. }, {
  65. printStdout: true,
  66. printStderr: true
  67. });
  68. });
  69. task('linux_editor', {
  70. async: true
  71. }, function() {
  72. // check if all the commands exist : fakeroot, dpkg-deb
  73. var editorAppFolder = config.editorAppFolder;
  74. var srcDir = config.artifactsRoot + "AtomicEditor/";
  75. var dstDir = config.artifactsRoot + "Dist/";
  76. var dstDeb = config.artifactsRoot + "AtomicGameEngine_0.0.8_amd64.deb";
  77. host.cleanCreateDir(dstDir); // create new staging directory
  78. fs.removeSync(dstDeb); // remove old one, if there
  79. // copy in the two magic dirs
  80. fs.copySync(config.atomicRoot + "Build/Linux/DEBIAN", dstDir + "DEBIAN");
  81. fs.copySync(config.atomicRoot + "Build/Linux/usr", dstDir + "usr" );
  82. // copy in the atomic dir
  83. fs.copySync(editorAppFolder, dstDir + "usr/share/AtomicGameEngine" );
  84. //copy in menu pixmap
  85. fs.copySync(config.atomicRoot + "Build/Linux/atomic_menu.xpm", dstDir + "usr/share/AtomicGameEngine/atomic_menu.xpm" );
  86. // get rid of some lintian errors
  87. fs.removeSync( dstDir + "usr/share/AtomicGameEngine/Resources/ToolData/.gitignore");
  88. fs.removeSync( dstDir + "usr/share/AtomicGameEngine/Resources/ToolData/CodeEditor/.gitignore");
  89. fs.removeSync( dstDir + "usr/share/AtomicGameEngine/Resources/ToolData/Deployment/Android/assets/.gitignore");
  90. fs.removeSync( dstDir + "usr/share/AtomicGameEngine/Resources/ToolData/ProjectTemplates/.gitignore");
  91. fs.removeSync( dstDir + "usr/share/AtomicGameEngine/Resources/ToolData/TypeScriptSupport/.gitignore");
  92. cmds = [];
  93. // go to staging root directory
  94. cmds.push("cd " + config.artifactsRoot + " ;" );
  95. // get rid of some more lintian errors
  96. cmds.push("/usr/bin/strip --strip-unneeded " + dstDir + "usr/share/AtomicGameEngine/AtomicEditor ;" );
  97. cmds.push("/usr/bin/strip --strip-unneeded " + dstDir + "usr/share/AtomicGameEngine/Resources/ToolData/Deployment/Linux/AtomicPlayer ;" );
  98. cmds.push("/bin/chmod oug-wx " + dstDir + "usr/share/AtomicGameEngine/libcef.so ;");
  99. // needs fakeroot for package file ownership issues
  100. cmds.push("/usr/bin/fakeroot /usr/bin/dpkg-deb --build " + dstDir + ";");
  101. // fix the deb name
  102. cmds.push("/bin/mv " + config.artifactsRoot + "Dist.deb " + dstDeb + " ;");
  103. // clean up the staging area
  104. cmds.push("/bin/rm -rf "+ dstDir + " ;");
  105. jake.exec(cmds, function() {
  106. console.log("Packaged Linux Editor to " + dstDeb );
  107. complete();
  108. }, {
  109. printStdout: true,
  110. printStderr: true
  111. });
  112. });
  113. });