PackageEditor.js 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174
  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. // Copy WebGL artifacts into editor package
  12. if (fs.existsSync(atomicRoot + "Artifacts/DistGen/Resources/ToolData/Deployment/Web")) {
  13. fs.copySync(atomicRoot + "Artifacts/DistGen/Resources/ToolData/Deployment/Web",
  14. config.artifactsRoot + "Artifacts/AtomicEditor/Resources/ToolData/Deployment/");
  15. }
  16. var installerName = "AtomicEditor_Windows64_Setup_" + config.buildSHA + ".exe";
  17. var installerPath = config.artifactsRoot + "Dist/" + installerName;
  18. var nsisDefines = "/DATOMIC_ROOT=" + config.atomicRoot;
  19. nsisDefines += " /DEDITOR_VERSION=1";
  20. nsisDefines += " /DINSTALLER_NAME=" + installerName;
  21. var makeNSISCmd = config.atomicRoot + "\\Build\\Scripts\\Windows\\CreateInstaller.bat";
  22. makeNSISCmd += " " + nsisDefines + " " + config.atomicRoot + "/Build/Scripts/Windows/Installer/AtomicEditor.nsi";
  23. var editorExe = dstDir + "/AtomicEditor.exe";
  24. var pfxFile = process.env.ATOMIC_PFX_FILE;
  25. var pfxPW = process.env.ATOMIC_PFX_PW;
  26. var signBaseCmd = "signtool.exe sign /f " + pfxFile;
  27. signBaseCmd += " /p " + pfxPW;
  28. signBaseCmd += " /t http://timestamp.verisign.com/scripts/timestamp.dll";
  29. signBaseCmd += " /v ";
  30. var signEditorCmd = signBaseCmd + config.artifactsRoot + "AtomicEditor/AtomicEditor.exe";
  31. var signInstallerCmd = signBaseCmd + installerPath;
  32. var cmds = [];
  33. if (pfxFile && pfxPW) {
  34. cmds.push(signEditorCmd);
  35. }
  36. cmds.push(makeNSISCmd);
  37. if (pfxFile && pfxPW) {
  38. cmds.push(signInstallerCmd);
  39. }
  40. jake.exec(cmds, function() {
  41. complete();
  42. }, {
  43. printStdout: true
  44. });
  45. });
  46. task('mac_editor', {
  47. async: true
  48. }, function() {
  49. var editorAppFolder = config.editorAppFolder;
  50. var srcDir = config.artifactsRoot + "AtomicEditor/";
  51. var dstDir = config.artifactsRoot + "Dist/";
  52. var editorZip = dstDir + "AtomicEditor_MacOSX_" + config.buildSHA + ".zip";
  53. var devIDApp = config.devIDApp;
  54. host.cleanCreateDir(dstDir);
  55. // Copy WebGL artifacts into editor package
  56. if (fs.existsSync(atomicRoot + "Artifacts/DistGen/Resources/ToolData/Deployment/Web")) {
  57. fs.copySync(atomicRoot + "Artifacts/DistGen/Resources/ToolData/Deployment/Web",
  58. config.artifactsRoot + "Artifacts/AtomicEditor/AtomicEditor.app/Contents/Resources/ToolData/Deployment/");
  59. }
  60. cmds = [];
  61. if (config.jenkins) {
  62. cmds.push("security unlock-keychain -p \"jenkins\" /Users/jenkins/Library/Keychains/login.keychain ");
  63. }
  64. if (devIDApp) {
  65. cmds.push("codesign --deep --force --verify --verbose --sign \"Developer ID Application: " + devIDApp + "\" " + editorAppFolder);
  66. }
  67. cmds.push("cd " + srcDir + " && zip -r -X " + editorZip +" ./AtomicEditor.app");
  68. jake.exec(cmds, function() {
  69. console.log("Packaged Mac Editor to ", editorZip);
  70. if (!devIDApp) {
  71. console.log("\nDeveloper ID Application not specified, code is not be signed!\n\n");
  72. }
  73. complete();
  74. }, {
  75. printStdout: true,
  76. printStderr: true
  77. });
  78. });
  79. task('linux_editor', {
  80. async: true
  81. }, function() {
  82. var editorAppFolder = config.editorAppFolder;
  83. var srcDir = config.artifactsRoot + "AtomicEditor/";
  84. var dstDir = config.artifactsRoot + "Dist/";
  85. var dstDeb = config.artifactsRoot + "AtomicEditor_LINUX_" + config.buildSHA + ".deb";
  86. host.cleanCreateDir(dstDir); // create new staging directory
  87. fs.removeSync(dstDeb); // remove old one, if there
  88. // copy in the two magic dirs
  89. fs.copySync(config.atomicRoot + "Build/Linux/DEBIAN", dstDir + "DEBIAN");
  90. fs.copySync(config.atomicRoot + "Build/Linux/usr", dstDir + "usr" );
  91. // copy in the atomic dir
  92. fs.copySync(editorAppFolder, dstDir + "usr/share/atomicgameengine" );
  93. //copy in menu pixmap
  94. fs.copySync(config.atomicRoot + "Build/Linux/atomic_menu.xpm", dstDir + "usr/share/atomicgameengine/atomic_menu.xpm" );
  95. //copy in copyright
  96. fs.copySync(config.atomicRoot + "LICENSE.md", dstDir + "usr/share/doc/atomicgameengine/copyright" );
  97. cmds = [];
  98. // go to staging root directory
  99. cmds.push("cd " + config.artifactsRoot + " ;" );
  100. // get rid of some lintian errors
  101. cmds.push("find " + dstDir + "usr/share/atomicgameengine/ -name .gitignore -type f -delete ;");
  102. cmds.push("find " + dstDir + "usr/share/atomicgameengine/ -maxdepth 9 -type f -print0 | xargs -0 chmod oug-x ;");
  103. cmds.push("/bin/chmod oug+x " + dstDir + "usr/share/atomicgameengine/AtomicEditor ;");
  104. cmds.push("/bin/chmod oug+x " + dstDir + "usr/share/atomicgameengine/Resources/ToolData/Deployment/Linux/AtomicPlayer ;" );
  105. cmds.push("/usr/bin/strip --strip-unneeded " + dstDir + "usr/share/atomicgameengine/AtomicEditor ;" );
  106. cmds.push("/usr/bin/strip --strip-unneeded " + dstDir + "usr/share/atomicgameengine/Resources/ToolData/Deployment/Linux/AtomicPlayer ;" );
  107. // create the package
  108. // needs fakeroot for package file ownership issues
  109. cmds.push("/usr/bin/fakeroot /usr/bin/dpkg-deb --build " + dstDir + ";");
  110. // change the deb name, following Atomic standards
  111. cmds.push("/bin/mv " + config.artifactsRoot + "Dist.deb " + dstDeb + " ;");
  112. // clean up the staging area
  113. cmds.push("/bin/rm -rf "+ dstDir + " ;");
  114. jake.exec(cmds, function() {
  115. console.log("Packaged Linux Editor to " + dstDeb );
  116. complete();
  117. }, {
  118. printStdout: true,
  119. printStderr: true
  120. });
  121. });
  122. });