RubyPackager 0.1.1.20091105 → 0.2.1.20101110

Sign up to get free protection for your applications and to get access to all the features.
Files changed (49) hide show
  1. data/ChangeLog +28 -0
  2. data/LICENSE +1 -1
  3. data/ReleaseInfo +3 -3
  4. data/TODO +2 -0
  5. data/bin/Release.rb +4 -2
  6. data/lib/RubyPackager/Distributors/SourceForge.rb +5 -6
  7. data/lib/RubyPackager/Installers/Gem.rb +98 -64
  8. data/lib/RubyPackager/ReleaseInfo.rb +10 -8
  9. data/lib/RubyPackager/Releaser.rb +18 -17
  10. data/lib/RubyPackager/Tools.rb +1 -1
  11. data/lib/RubyPackager/i386-cygwin/PlatformReleaser.rb +112 -0
  12. data/lib/RubyPackager/i386-linux/PlatformReleaser.rb +15 -20
  13. data/lib/RubyPackager/i386-mswin32/Installers/NSIS.rb +1 -1
  14. data/lib/RubyPackager/i386-mswin32/PlatformReleaser.rb +23 -25
  15. metadata +34 -56
  16. data/test/Common.rb +0 -346
  17. data/test/PlatformIndependent/CommandLine.rb +0 -156
  18. data/test/PlatformIndependent/Executable.rb +0 -31
  19. data/test/PlatformIndependent/Library.rb +0 -31
  20. data/test/PlatformIndependent/Misc.rb +0 -62
  21. data/test/PlatformIndependent/Plugins/Distributors/SourceForge.rb +0 -81
  22. data/test/PlatformIndependent/Plugins/Installers/Gem.rb +0 -142
  23. data/test/Repository/Applications/Basic/Distribution/ReleaseInfo.rb +0 -27
  24. data/test/Repository/Applications/Basic/Distribution/ReleaseInfo_Exe.rb +0 -33
  25. data/test/Repository/Applications/Basic/Distribution/ReleaseInfo_ExeTerm.rb +0 -33
  26. data/test/Repository/Applications/Basic/Distribution/ReleaseInfo_Gem.rb +0 -32
  27. data/test/Repository/Applications/Basic/Distribution/i386-mswin32/Icon.ico +0 -0
  28. data/test/Repository/Applications/Basic/Distribution/i386-mswin32/Installer/Icon.ico +0 -0
  29. data/test/Repository/Applications/Basic/Distribution/i386-mswin32/Installer/InstallLicense.txt +0 -31
  30. data/test/Repository/Applications/Basic/Distribution/i386-mswin32/Installer/install.nsi +0 -51
  31. data/test/Repository/Applications/Basic/Main.rb +0 -8
  32. data/test/Repository/Libraries/Basic/Add.rb +0 -6
  33. data/test/Repository/Libraries/Basic/Distribution/Icon.ico +0 -0
  34. data/test/Repository/Libraries/Basic/Distribution/InstallLicense.txt +0 -31
  35. data/test/Repository/Libraries/Basic/Distribution/ReleaseInfo.rb +0 -24
  36. data/test/Repository/Libraries/Basic/Distribution/ReleaseInfo_Additional.rb +0 -27
  37. data/test/Repository/Libraries/Basic/Distribution/ReleaseInfo_Gem.rb +0 -29
  38. data/test/Repository/Libraries/Basic/Distribution/ReleaseInfo_GemDep.rb +0 -32
  39. data/test/Repository/Libraries/Basic/Distribution/ReleaseInfo_NSIS.rb +0 -28
  40. data/test/Repository/Libraries/Basic/Distribution/ReleaseInfo_SF.rb +0 -28
  41. data/test/Repository/Libraries/Basic/Distribution/ReleaseInfo_Test.rb +0 -27
  42. data/test/Repository/Libraries/Basic/Distribution/ReleaseInfo_TestGem.rb +0 -33
  43. data/test/Repository/Libraries/Basic/Distribution/install.nsi +0 -53
  44. data/test/Repository/Libraries/Basic/MainLib.rb +0 -6
  45. data/test/Repository/Libraries/Basic/Test.rb +0 -6
  46. data/test/i386-linux/Executable.rb +0 -86
  47. data/test/i386-mswin32/Executable.rb +0 -90
  48. data/test/i386-mswin32/Plugins/Installers/NSIS.rb +0 -39
  49. data/test/run.rb +0 -23
data/ChangeLog CHANGED
@@ -1,5 +1,33 @@
1
1
  = RubyPackager Release History
2
2
 
3
+ == 0.2.0.20101110 (Beta)
4
+
5
+ === Misc
6
+
7
+ * Changed DevStatus to Beta.
8
+ * Updated Copyright information.
9
+ * Used rUtilAnts' changeDir.
10
+
11
+ === New features
12
+
13
+ * Release files can now specify several executables to be considered.
14
+ * Release files can now specify several require paths to be considered using :RequirePaths
15
+
16
+ === API changes
17
+
18
+ * API change for Installer plugins: added parameter to know if test files are part of the release.
19
+ * Changed API for plugins generating executables: executable info is given instead of all info.
20
+ * Changed API for plugins getting executables information: :ExecutableInfo replaced by :ExecutablesInfo, giving a list of executables info.
21
+
22
+ === Bug corrections
23
+
24
+ * Bug correction: Gem Installer: Unable to release a gem without test files if test files were declared in the release info.
25
+ * Bug correction: Gem Installer: Unable to release a gem with a platform other than Ruby.
26
+ * Bug correction: Executables generated for Linux did not run.
27
+ * Bug correction: Read ReleaseInfo from its correct location.
28
+ * Bug correction: Running executables on Windows did not work sometimes.
29
+ * Bug correction: When Ruby version did include a patch level, output of Ruby was expected incorrectly.
30
+
3
31
  == 0.1.1.20091105 (Alpha)
4
32
 
5
33
  === New features
data/LICENSE CHANGED
@@ -6,7 +6,7 @@ This list is found in the file named AUTHORS.
6
6
  The AUTHORS and LICENSE files have to be included in any release of software
7
7
  embedding source code of this package, or using it as a derivative software.
8
8
 
9
- Copyright (c) 2009 Muriel Salvan (murielsalvan@users.sourceforge.net)
9
+ Copyright (c) 2009-2010 Muriel Salvan (murielsalvan@users.sourceforge.net)
10
10
 
11
11
  Redistribution and use in source and binary forms, with or without
12
12
  modification, are permitted provided that the following conditions are met:
data/ReleaseInfo CHANGED
@@ -2,7 +2,7 @@
2
2
  # This file has been generated by RubyPackager during a delivery.
3
3
  # More info about RubyPackager: http://rubypackager.sourceforge.net
4
4
  {
5
- :Version => '0.1.1.20091105',
6
- :Tags => [],
7
- :DevStatus => 'Alpha'
5
+ :Version => '0.2.1.20101110',
6
+ :Tags => [ 'Beta' ],
7
+ :DevStatus => 'Beta'
8
8
  }
data/TODO CHANGED
@@ -12,3 +12,5 @@
12
12
  ** Make it run under MacOS
13
13
  ** Make rdoc modifications part of a real Gem or an RDoc improvement.
14
14
  ** Use RDI in checkContext methods.
15
+ ** As it is possible to have many failures when delivering or generating installers, and as generating executables and documentation is a long process, it should be better to reuse partially generated content.
16
+ ** Delivering a Gem has to be done using "gem push" with a RubyGems.org account info.
data/bin/Release.rb CHANGED
@@ -1,6 +1,6 @@
1
1
  #!env ruby
2
2
  #--
3
- # Copyright (c) 2009 Muriel Salvan (murielsalvan@users.sourceforge.net)
3
+ # Copyright (c) 2009-2010 Muriel Salvan (murielsalvan@users.sourceforge.net)
4
4
  # Licensed under the terms specified in LICENSE file. No warranty is provided.
5
5
  #++
6
6
 
@@ -13,6 +13,8 @@
13
13
 
14
14
  require 'rUtilAnts/Logging'
15
15
  RUtilAnts::Logging::initializeLogging("#{File.dirname(__FILE__)}/..", 'http://sourceforge.net/tracker/?group_id=274236&atid=1165400')
16
+ require 'rUtilAnts/Misc'
17
+ RUtilAnts::Misc.initializeMisc
16
18
 
17
19
  module RubyPackager
18
20
 
@@ -36,7 +38,7 @@ module RubyPackager
36
38
  :Tags => [],
37
39
  :DevStatus => 'Unofficial'
38
40
  }
39
- lReleaseInfoFileName = "#{File.dirname(FILE_PATH)}/ReleaseInfo"
41
+ lReleaseInfoFileName = "#{File.dirname(FILE_PATH)}/../ReleaseInfo"
40
42
  if (File.exists?(lReleaseInfoFileName))
41
43
  File.open(lReleaseInfoFileName, 'r') do |iFile|
42
44
  lRPReleaseInfo = eval(iFile.read)
@@ -1,5 +1,5 @@
1
1
  #--
2
- # Copyright (c) 2009 Muriel Salvan (murielsalvan@users.sourceforge.net)
2
+ # Copyright (c) 2009-2010 Muriel Salvan (murielsalvan@users.sourceforge.net)
3
3
  # Licensed under the terms specified in LICENSE file. No warranty is provided.
4
4
  #++
5
5
 
@@ -59,7 +59,7 @@ module RubyPackager
59
59
  @SFReleaseDir = "/home/frs/project/#{@SFProjectSubPath}/#{@ReleaseVersion}"
60
60
  createSFShell
61
61
  createReleaseOnSFNET
62
- # It is possible that he RDoc has not been generated
62
+ # It is possible that the RDoc has not been generated
63
63
  if (File.exists?("#{@DocDir}/rdoc"))
64
64
  uploadRDocOnSFNET
65
65
  end
@@ -93,10 +93,9 @@ module RubyPackager
93
93
  def uploadRDocOnSFNET
94
94
  logDebug 'Uploading RDoc on SF.NET ...'
95
95
  # Zip the RDoc
96
- lOldDir = Dir.getwd
97
- Dir.chdir(@DocDir)
98
- system("zip -r rdoc.zip rdoc")
99
- Dir.chdir(lOldDir)
96
+ changeDir(@DocDir) do
97
+ system("zip -r rdoc.zip rdoc")
98
+ end
100
99
  # Send it
101
100
  lRDocBaseDir = "/home/groups/#{@SFProjectSubPath}/htdocs/rdoc"
102
101
  sshWithPassword(
@@ -1,5 +1,5 @@
1
1
  #--
2
- # Copyright (c) 2009 Muriel Salvan (murielsalvan@users.sourceforge.net)
2
+ # Copyright (c) 2009-2010 Muriel Salvan (murielsalvan@users.sourceforge.net)
3
3
  # Licensed under the terms specified in LICENSE file. No warranty is provided.
4
4
  #++
5
5
 
@@ -17,52 +17,80 @@ module RubyPackager
17
17
  # * *iInstallerDir* (_String_): The directory where the installer has to be put
18
18
  # * *iVersion* (_String_): Release version
19
19
  # * *iReleaseInfo* (_ReleaseInfo_): Release info
20
+ # * *iIncludeTest* (_Boolean_): Are test files part of the release ?
20
21
  # Return:
21
22
  # * _String_: File name to distribute, or nil in case of failure
22
- def createInstaller(iRootDir, iReleaseDir, iInstallerDir, iVersion, iReleaseInfo)
23
+ def createInstaller(iRootDir, iReleaseDir, iInstallerDir, iVersion, iReleaseInfo, iIncludeTest)
23
24
  rFileName = nil
24
25
 
25
- lOldDir = Dir.getwd
26
- Dir.chdir(iReleaseDir)
27
- # 1. Generate the gemspec that will build the gem
28
- lStrHasRDoc = nil
29
- if (iReleaseInfo.GemInfo[:HasRDoc])
30
- lStrHasRDoc = 'true'
31
- else
32
- lStrHasRDoc = 'false'
33
- end
34
- # !!! Don't use absolute paths here, otherwise they will be stored in the Gem
35
- lStrFiles = "iSpec.files = [ '#{Dir.glob('**/*').join('\', \'')}' ]"
36
- lStrExtraRDocFiles = ''
37
- if ((iReleaseInfo.GemInfo[:ExtraRDocFiles] != nil) and
38
- (!iReleaseInfo.GemInfo[:ExtraRDocFiles].empty?))
39
- lStrExtraRDocFiles = "iSpec.extra_rdoc_files = [ '#{iReleaseInfo.GemInfo[:ExtraRDocFiles].join('\', \'')}' ]"
40
- RubyPackager::copyFiles(iRootDir, iReleaseDir, iReleaseInfo.GemInfo[:ExtraRDocFiles])
41
- end
42
- lGemDepsStrList = []
43
- if (iReleaseInfo.GemInfo[:GemDependencies] != nil)
44
- iReleaseInfo.GemInfo[:GemDependencies].each do |iGemDepInfo|
45
- iGemName, iGemVersion = iGemDepInfo
46
- if (iGemVersion != nil)
47
- lGemDepsStrList << "iSpec.add_dependency('#{iGemName}', '#{iGemVersion}')"
48
- else
49
- lGemDepsStrList << "iSpec.add_dependency('#{iGemName}')"
26
+ changeDir(iReleaseDir) do
27
+ # 1. Generate the gemspec that will build the gem
28
+ lStrHasRDoc = nil
29
+ if (iReleaseInfo.GemInfo[:HasRDoc])
30
+ lStrHasRDoc = 'true'
31
+ else
32
+ lStrHasRDoc = 'false'
33
+ end
34
+ # !!! Don't use absolute paths here, otherwise they will be stored in the Gem
35
+ lStrFiles = "iSpec.files = [ '#{Dir.glob('**/*').join('\', \'')}' ]"
36
+ lStrExtraRDocFiles = ''
37
+ if ((iReleaseInfo.GemInfo[:ExtraRDocFiles] != nil) and
38
+ (!iReleaseInfo.GemInfo[:ExtraRDocFiles].empty?))
39
+ lStrExtraRDocFiles = "iSpec.extra_rdoc_files = [ '#{iReleaseInfo.GemInfo[:ExtraRDocFiles].join('\', \'')}' ]"
40
+ RubyPackager::copyFiles(iRootDir, iReleaseDir, iReleaseInfo.GemInfo[:ExtraRDocFiles])
41
+ end
42
+ lGemDepsStrList = []
43
+ if (iReleaseInfo.GemInfo[:GemDependencies] != nil)
44
+ iReleaseInfo.GemInfo[:GemDependencies].each do |iGemDepInfo|
45
+ iGemName, iGemVersion = iGemDepInfo
46
+ if (iGemVersion != nil)
47
+ lGemDepsStrList << "iSpec.add_dependency('#{iGemName}', '#{iGemVersion}')"
48
+ else
49
+ lGemDepsStrList << "iSpec.add_dependency('#{iGemName}')"
50
+ end
50
51
  end
51
52
  end
52
- end
53
- lStrTestFile = ''
54
- if (iReleaseInfo.GemInfo[:TestFile] != nil)
55
- lStrTestFile = "iSpec.test_file = '#{iReleaseInfo.GemInfo[:TestFile]}'"
56
- end
57
- lStrBinDir = ''
58
- lStrDefaultExecutable = ''
59
- if (iReleaseInfo.ExecutableInfo[:StartupRBFile] != nil)
60
- lStrBinDir = "iSpec.bindir = '#{File.dirname(iReleaseInfo.ExecutableInfo[:StartupRBFile])}'"
61
- lStrDefaultExecutable = "iSpec.executables = [ '#{File.basename(iReleaseInfo.ExecutableInfo[:StartupRBFile])}' ]"
62
- end
63
- lGemSpecFileName = 'release.gemspec.rb'
64
- File.open(lGemSpecFileName, 'w') do |oFile|
65
- oFile << "
53
+ lStrTestFile = ''
54
+ if ((iIncludeTest) and
55
+ (iReleaseInfo.GemInfo[:TestFile] != nil))
56
+ lStrTestFile = "iSpec.test_file = '#{iReleaseInfo.GemInfo[:TestFile]}'"
57
+ end
58
+ # Compute the list of executable files and the executable directory
59
+ lBinError = false
60
+ lExecutablesDir = nil
61
+ lExecutablesBase = []
62
+ iReleaseInfo.ExecutablesInfo.each do |iExecutableInfo|
63
+ if (lExecutablesDir == nil)
64
+ lExecutablesDir = File.dirname(iExecutableInfo[:StartupRBFile])
65
+ elsif (lExecutablesDir != File.dirname(iExecutableInfo[:StartupRBFile]))
66
+ # Error
67
+ logErr "Executables should be all in the same directory. \"#{lExecutablesDir}\" and \"#{File.dirname(iExecutableInfo[:StartupRBFile])}\" are different directories."
68
+ lBinError = true
69
+ end
70
+ lExecutablesBase << File.basename(iExecutableInfo[:StartupRBFile])
71
+ end
72
+ if (!lBinError)
73
+ lStrBinDir = ''
74
+ lStrExecutables = ''
75
+ if (lExecutablesDir != nil)
76
+ lStrBinDir = "iSpec.bindir = '#{lExecutablesDir}'"
77
+ lStrExecutables = "iSpec.executables = #{lExecutablesBase.inspect}"
78
+ end
79
+ # Compute require paths
80
+ lRequirePaths = []
81
+ if (iReleaseInfo.GemInfo[:RequirePath] != nil)
82
+ lRequirePaths = [ iReleaseInfo.GemInfo[:RequirePath] ]
83
+ end
84
+ if (iReleaseInfo.GemInfo[:RequirePaths] != nil)
85
+ lRequirePaths.concat(iReleaseInfo.GemInfo[:RequirePaths])
86
+ end
87
+ lStrRequirePaths = 'iSpec.require_path = \'\''
88
+ if (!lRequirePaths.empty?)
89
+ lStrRequirePaths = "iSpec.require_paths = #{lRequirePaths.inspect}"
90
+ end
91
+ lGemSpecFileName = 'release.gemspec.rb'
92
+ File.open(lGemSpecFileName, 'w') do |oFile|
93
+ oFile << "
66
94
  Gem::Specification.new do |iSpec|
67
95
  iSpec.name = '#{iReleaseInfo.GemInfo[:GemName]}'
68
96
  iSpec.version = '#{iVersion}'
@@ -73,39 +101,45 @@ Gem::Specification.new do |iSpec|
73
101
  iSpec.summary = '#{iReleaseInfo.ProjectInfo[:Summary].gsub(/'/,'\\\\\'')}'
74
102
  iSpec.description = '#{iReleaseInfo.ProjectInfo[:Description].gsub(/'/,'\\\\\'')}'
75
103
  #{lStrFiles}
76
- iSpec.require_path = '#{iReleaseInfo.GemInfo[:RequirePath]}'
104
+ #{lStrRequirePaths}
77
105
  iSpec.has_rdoc = #{lStrHasRDoc}
78
106
  #{lStrExtraRDocFiles}
79
107
  iSpec.rubyforge_project = '#{iReleaseInfo.RFInfo[:ProjectUnixName]}'
80
108
  #{lStrTestFile}
81
109
  #{lStrBinDir}
82
- #{lStrDefaultExecutable}
110
+ #{lStrExecutables}
83
111
  #{lGemDepsStrList.join("\n")}
84
112
  end
85
113
  "
86
- end
87
- # 2. Call gem build with this gemspec
88
- # Load RubyGems
89
- require 'rubygems/command_manager'
90
- # Build gem
91
- lGemOK = true
92
- begin
93
- ::Gem::CommandManager.instance.find_command('build').invoke(lGemSpecFileName)
94
- rescue ::Gem::SystemExitException
95
- # For RubyGems, this is normal behaviour: success results in an exception thrown with exit_code 0.
96
- if ($!.exit_code != 0)
97
- logErr "RubyGems returned error #{$!.exit_code}."
98
- lGemOK = false
114
+ end
115
+ # 2. Call gem build with this gemspec
116
+ # Load RubyGems
117
+ require 'rubygems/command_manager'
118
+ # Build gem
119
+ lGemOK = true
120
+ begin
121
+ ::Gem::CommandManager.instance.find_command('build').invoke(lGemSpecFileName)
122
+ rescue ::Gem::SystemExitException
123
+ # For RubyGems, this is normal behaviour: success results in an exception thrown with exit_code 0.
124
+ if ($!.exit_code != 0)
125
+ logErr "RubyGems returned error #{$!.exit_code}."
126
+ lGemOK = false
127
+ end
128
+ end
129
+ File.unlink(lGemSpecFileName)
130
+ if (lGemOK)
131
+ # Move the Gem to the destination directory
132
+ require 'fileutils'
133
+ # Find the name of the Gem: it can differ depending on the platform
134
+ rFileName = Dir.glob("#{iReleaseInfo.GemInfo[:GemName]}-#{iVersion}*.gem")[0]
135
+ if (rFileName == nil)
136
+ logErr "Unable to find generated gem \"#{iReleaseInfo.GemInfo[:GemName]}-#{iVersion}*.gem\""
137
+ else
138
+ FileUtils::mv(rFileName, "#{iInstallerDir}/#{rFileName}")
139
+ end
140
+ end
99
141
  end
100
142
  end
101
- File.unlink(lGemSpecFileName)
102
- if (lGemOK)
103
- # Move the Gem to the destination directory
104
- require 'fileutils'
105
- rFileName = "#{iReleaseInfo.GemInfo[:GemName]}-#{iVersion}.gem"
106
- FileUtils::mv(rFileName, "#{iInstallerDir}/#{rFileName}")
107
- end
108
- Dir.chdir(lOldDir)
109
143
 
110
144
  return rFileName
111
145
  end
@@ -1,5 +1,5 @@
1
1
  #--
2
- # Copyright (c) 2009 Muriel Salvan (murielsalvan@users.sourceforge.net)
2
+ # Copyright (c) 2009-2010 Muriel Salvan (murielsalvan@users.sourceforge.net)
3
3
  # Licensed under the terms specified in LICENSE file. No warranty is provided.
4
4
  #++
5
5
 
@@ -16,9 +16,9 @@ module RubyPackager
16
16
  # map< Symbol, Object >
17
17
  attr_reader :ProjectInfo
18
18
 
19
- # Information about the executable
20
- # map< Symbol, Object >
21
- attr_reader :ExecutableInfo
19
+ # Information about the executables
20
+ # list< map< Symbol, Object > >
21
+ attr_reader :ExecutablesInfo
22
22
 
23
23
  # Information about the installer
24
24
  # map< Symbol, Object >
@@ -53,7 +53,7 @@ module RubyPackager
53
53
  # This sets also default values
54
54
  @AuthorInfo = {}
55
55
  @ProjectInfo = {}
56
- @ExecutableInfo = {}
56
+ @ExecutablesInfo = []
57
57
  @InstallInfo = {}
58
58
  @SFInfo = {}
59
59
  @RFInfo = {}
@@ -99,7 +99,8 @@ module RubyPackager
99
99
  return self
100
100
  end
101
101
 
102
- # Add executable package properties
102
+ # Add executable package properties.
103
+ # This method can be called several times to specify several executables.
103
104
  #
104
105
  # Parameters:
105
106
  # * *iParams* (<em>map<Symbol,Object></em>): The parameters:
@@ -110,7 +111,7 @@ module RubyPackager
110
111
  # Return:
111
112
  # * _ReleaseInfo_: self
112
113
  def executable(iParams)
113
- @ExecutableInfo.merge!(iParams)
114
+ @ExecutablesInfo << iParams
114
115
 
115
116
  return self
116
117
  end
@@ -163,7 +164,8 @@ module RubyPackager
163
164
  # * *iParams* (<em>map<Symbol,Object></em>): The parameters:
164
165
  # ** *:GemName* (_String_): The Gem name
165
166
  # ** *:GemPlatformClassName* (_String_): The name of the Gem platform class
166
- # ** *:RequirePath* (_String_): Path to require
167
+ # ** *:RequirePath* (_String_): Single path to require
168
+ # ** *:RequirePaths* (<em>list<String></em>): Paths to require
167
169
  # ** *:HasRDoc* (_String_): Include RDoc in the Gem ?
168
170
  # ** *:ExtraRDocFiles* (<em>list<String></em>): List of file patterns to be included in the RDoc but not in the Gem
169
171
  # ** *:TestFile* (_String_): Name of the test file to execute
@@ -1,5 +1,5 @@
1
1
  #--
2
- # Copyright (c) 2009 Muriel Salvan (murielsalvan@users.sourceforge.net)
2
+ # Copyright (c) 2009-2010 Muriel Salvan (murielsalvan@users.sourceforge.net)
3
3
  # Licensed under the terms specified in LICENSE file. No warranty is provided.
4
4
  #++
5
5
 
@@ -102,7 +102,7 @@ module RubyPackager
102
102
  (!@ReleaseInfo.checkReadyForRelease(@RootDir)))
103
103
  rSuccess = false
104
104
  end
105
- if (@ReleaseInfo.ExecutableInfo[:ExeName] != nil)
105
+ if (!@ReleaseInfo.ExecutablesInfo.empty?)
106
106
  # Check tools for platform dependent considerations
107
107
  if (!@PlatformReleaseInfo.checkExeTools(@RootDir, @IncludeRuby))
108
108
  rSuccess = false
@@ -146,7 +146,7 @@ module RubyPackager
146
146
  @Installers.each do |iInstallerName|
147
147
  logOp("Create installer #{iInstallerName}") do
148
148
  @PluginsManager.accessPlugin('Installers', iInstallerName) do |ioPlugin|
149
- lFileName = ioPlugin.createInstaller(@RootDir, @ReleaseDir, @InstallerDir, @ReleaseVersion, @ReleaseInfo)
149
+ lFileName = ioPlugin.createInstaller(@RootDir, @ReleaseDir, @InstallerDir, @ReleaseVersion, @ReleaseInfo, @IncludeTest)
150
150
  if (lFileName == nil)
151
151
  rSuccess = false
152
152
  else
@@ -217,11 +217,13 @@ module RubyPackager
217
217
  "
218
218
  end
219
219
  end
220
- if (@ReleaseInfo.ExecutableInfo[:ExeName] != nil)
221
- logOp('Create binary') do
222
- # TODO (crate): When crate will work correctly under Windows, use it here to pack everything
223
- # For now the executable creation is platform dependent
224
- rSuccess = @PlatformReleaseInfo.createBinary(@RootDir, @ReleaseDir, @IncludeRuby, @ReleaseInfo)
220
+ @ReleaseInfo.ExecutablesInfo.each do |iExecutableInfo|
221
+ if (iExecutableInfo[:ExeName] != nil)
222
+ logOp("Create binary #{iExecutableInfo[:ExeName]}") do
223
+ # TODO (crate): When crate will work correctly under Windows, use it here to pack everything
224
+ # For now the executable creation is platform dependent
225
+ rSuccess = @PlatformReleaseInfo.createBinary(@RootDir, @ReleaseDir, @IncludeRuby, iExecutableInfo)
226
+ end
225
227
  end
226
228
  end
227
229
  if (rSuccess)
@@ -278,16 +280,15 @@ module RubyPackager
278
280
  "--output=#{@DocDir}/rdoc"
279
281
  ]
280
282
  # Bug (RDoc): Sometimes it does not change current directory correctly (not deterministic)
281
- lOldDir = Dir.getwd
282
- Dir.chdir(@ReleaseDir)
283
- # First try with Muriel's template
284
- begin
285
- RDoc::RDoc.new.document( lRDocOptions + [ '--fmt=muriel' ] )
286
- rescue Exception
287
- # Then try with default template
288
- RDoc::RDoc.new.document( lRDocOptions )
283
+ changeDir(@ReleaseDir) do
284
+ # First try with Muriel's template
285
+ begin
286
+ RDoc::RDoc.new.document( lRDocOptions + [ '--fmt=muriel' ] )
287
+ rescue Exception
288
+ # Then try with default template
289
+ RDoc::RDoc.new.document( lRDocOptions )
290
+ end
289
291
  end
290
- Dir.chdir(lOldDir)
291
292
  end
292
293
 
293
294
  return rSuccess
@@ -1,5 +1,5 @@
1
1
  #--
2
- # Copyright (c) 2009 Muriel Salvan (murielsalvan@users.sourceforge.net)
2
+ # Copyright (c) 2009-2010 Muriel Salvan (murielsalvan@users.sourceforge.net)
3
3
  # Licensed under the terms specified in LICENSE file. No warranty is provided.
4
4
  #++
5
5
 
@@ -0,0 +1,112 @@
1
+ #--
2
+ # Copyright (c) 2009-2010 Muriel Salvan (murielsalvan@users.sourceforge.net)
3
+ # Licensed under the terms specified in LICENSE file. No warranty is provided.
4
+ #++
5
+
6
+ # This file prepares a cygwin distribution
7
+
8
+ # Require needed to generate the temporary ruby file that produces the executable
9
+ require 'tmpdir'
10
+
11
+ module RubyPackager
12
+
13
+ class PlatformReleaser
14
+
15
+ PLATFORM_DIR = File.dirname(__FILE__)
16
+
17
+ # Check if the tools we will use to generate an executable are present
18
+ #
19
+ # Parameters:
20
+ # * *iRootDir* (_String_): Root directory
21
+ # * *iIncludeRuby* (_Boolean_): Do we include Ruby in the release ?
22
+ # Return:
23
+ # * _Boolean_: Are tools correctly useable ?
24
+ def checkExeTools(iRootDir, iIncludeRuby)
25
+ rSuccess = true
26
+
27
+ if (iIncludeRuby)
28
+ # We need allinoneruby
29
+ if (Gem.find_files('allinoneruby').empty?)
30
+ logErr "Need to have allinoneruby gem to release including Ruby.\nPlease install allinoneruby gem (gem install allinoneruby)."
31
+ rSuccess = false
32
+ end
33
+ end
34
+
35
+ return rSuccess
36
+ end
37
+
38
+ # Create the binary.
39
+ # This is called when the core library has been copied in the release directory.
40
+ #
41
+ # Parameters:
42
+ # * *iRootDir* (_String_): Root directory
43
+ # * *iReleaseDir* (_String_): Release directory
44
+ # * *iIncludeRuby* (_Boolean_): Do we include Ruby in the release ?
45
+ # * *iExecutableInfo* (<em>map<Symbol,Object></em>): The executable information
46
+ # Return:
47
+ # * _Boolean_: Success ?
48
+ def createBinary(iRootDir, iReleaseDir, iIncludeRuby, iExecutableInfo)
49
+ rSuccess = true
50
+
51
+ lBinSubDir = "Launch/#{RUBY_PLATFORM}/bin"
52
+ lRubyBaseBinName = 'ruby'
53
+ lBinName = "#{lRubyBaseBinName}-#{RUBY_VERSION}.bin"
54
+ if (iIncludeRuby)
55
+ # First create the binary containing all ruby
56
+ lBinDir = "#{iReleaseDir}/#{lBinSubDir}"
57
+ FileUtils::mkdir_p(lBinDir)
58
+ changeDir(lBinDir) do
59
+ lCmd = "allinoneruby #{lBinName}"
60
+ rSuccess = system(lCmd)
61
+ if (!rSuccess)
62
+ logErr "Error while executing \"#{lCmd}\""
63
+ end
64
+ end
65
+ end
66
+ if (rSuccess)
67
+ # Then create the real executable
68
+ # Generate the Shell file that launches everything for Linux
69
+ File.open("#{iReleaseDir}/#{iExecutableInfo[:ExeName]}", 'w') do |oFile|
70
+ oFile << "\#!/bin/sh
71
+ \#--
72
+ \# Copyright (c) 2009-2010 Muriel Salvan (murielsalvan@users.sourceforge.net)
73
+ \# Licensed under the terms specified in LICENSE file. No warranty is provided.
74
+ \#++
75
+
76
+ \# This file is generated by RubyPackager for Cygwin.
77
+
78
+ \# This file has to launch the correct binary. There can be several binaries dependending on the configuration.
79
+ \# This is the file that will be created as the executable to launch.
80
+
81
+ \# Test Ruby's existence
82
+ which ruby >/dev/null 2>/dev/null
83
+ if [ $? == 1 ]
84
+ then
85
+ echo 'Ruby not found on current platform. Use embedded one.'
86
+ if [ ! -d tempruby ]
87
+ then
88
+ echo 'Extracting Ruby distribution...'
89
+ mkdir tempruby
90
+ cd tempruby
91
+ ../#{lBinSubDir}/#{lBinName} --eee-justextract
92
+ cd ..
93
+ fi
94
+ \# Set the environment correctly to execute Ruby from the extracted dir
95
+ export LD_LIBRARY_PATH=`pwd`/tempruby/bin:`pwd`/tempruby/lib:`pwd`/tempruby/lib/lib1:`pwd`/tempruby/lib/lib2:`pwd`/tempruby/lib/lib3:`pwd`/tempruby/lib/lib4:${LD_LIRARY_PATH}
96
+ export RUBYOPT=
97
+ ./tempruby/bin/ruby -w #{iExecutableInfo[:StartupRBFile]}
98
+ else
99
+ echo 'Ruby found on current platform. Use it directly.'
100
+ ruby -w #{iExecutableInfo[:StartupRBFile]}
101
+ fi
102
+ "
103
+ end
104
+ File.chmod(0755, "#{iReleaseDir}/#{iExecutableInfo[:ExeName]}")
105
+ end
106
+
107
+ return rSuccess
108
+ end
109
+
110
+ end
111
+
112
+ end
@@ -1,5 +1,5 @@
1
1
  #--
2
- # Copyright (c) 2009 Muriel Salvan (murielsalvan@users.sourceforge.net)
2
+ # Copyright (c) 2009-2010 Muriel Salvan (murielsalvan@users.sourceforge.net)
3
3
  # Licensed under the terms specified in LICENSE file. No warranty is provided.
4
4
  #++
5
5
 
@@ -42,39 +42,34 @@ module RubyPackager
42
42
  # * *iRootDir* (_String_): Root directory
43
43
  # * *iReleaseDir* (_String_): Release directory
44
44
  # * *iIncludeRuby* (_Boolean_): Do we include Ruby in the release ?
45
- # * *iReleaseInfo* (_ReleaseInfo_): The release information
45
+ # * *iExecutableInfo* (<em>map<Symbol,Object></em>): The executable information
46
46
  # Return:
47
47
  # * _Boolean_: Success ?
48
- def createBinary(iRootDir, iReleaseDir, iIncludeRuby, iReleaseInfo)
48
+ def createBinary(iRootDir, iReleaseDir, iIncludeRuby, iExecutableInfo)
49
49
  rSuccess = true
50
50
 
51
51
  lBinSubDir = "Launch/#{RUBY_PLATFORM}/bin"
52
- lRubyBaseBinName = nil
53
- lRubyLaunchCmd = nil
54
52
  lRubyBaseBinName = 'ruby'
55
- lRubyLaunchCmd = 'ruby'
56
53
  lBinName = "#{lRubyBaseBinName}-#{RUBY_VERSION}.bin"
57
54
  if (iIncludeRuby)
58
55
  # First create the binary containing all ruby
59
56
  lBinDir = "#{iReleaseDir}/#{lBinSubDir}"
60
57
  FileUtils::mkdir_p(lBinDir)
61
- lOldDir = Dir.getwd
62
- Dir.chdir(lBinDir)
63
- lCmd = "allinoneruby #{lBinName}"
64
- rSuccess = system(lCmd)
65
- if (!rSuccess)
66
- logErr "Error while executing \"#{lCmd}\""
58
+ changeDir(lBinDir) do
59
+ lCmd = "allinoneruby #{lBinName}"
60
+ rSuccess = system(lCmd)
61
+ if (!rSuccess)
62
+ logErr "Error while executing \"#{lCmd}\""
63
+ end
67
64
  end
68
- Dir.chdir(lOldDir)
69
65
  end
70
66
  if (rSuccess)
71
67
  # Then create the real executable
72
68
  # Generate the Shell file that launches everything for Linux
73
- File.open("#{iReleaseDir}/#{iReleaseInfo.ExecutableInfo[:ExeName]}", 'w') do |oFile|
74
- oFile << "
75
- \#!/bin/sh
69
+ File.open("#{iReleaseDir}/#{iExecutableInfo[:ExeName]}", 'w') do |oFile|
70
+ oFile << "\#!/bin/sh
76
71
  \#--
77
- \# Copyright (c) 2009 Muriel Salvan (murielsalvan@users.sourceforge.net)
72
+ \# Copyright (c) 2009-2010 Muriel Salvan (murielsalvan@users.sourceforge.net)
78
73
  \# Licensed under the terms specified in LICENSE file. No warranty is provided.
79
74
  \#++
80
75
 
@@ -99,14 +94,14 @@ then
99
94
  \# Set the environment correctly to execute Ruby from the extracted dir
100
95
  export LD_LIBRARY_PATH=`pwd`/tempruby/bin:`pwd`/tempruby/lib:`pwd`/tempruby/lib/lib1:`pwd`/tempruby/lib/lib2:`pwd`/tempruby/lib/lib3:`pwd`/tempruby/lib/lib4:${LD_LIRARY_PATH}
101
96
  export RUBYOPT=
102
- ./tempruby/bin/ruby -w #{iReleaseInfo.ExecutableInfo[:StartupRBFile]}
97
+ ./tempruby/bin/ruby -w #{iExecutableInfo[:StartupRBFile]}
103
98
  else
104
99
  echo 'Ruby found on current platform. Use it directly.'
105
- ruby -w #{iReleaseInfo.ExecutableInfo[:StartupRBFile]}
100
+ ruby -w #{iExecutableInfo[:StartupRBFile]}
106
101
  fi
107
102
  "
108
103
  end
109
- File.chmod(0755, "#{iReleaseDir}/#{iReleaseInfo.ExecutableInfo[:ExeName]}")
104
+ File.chmod(0755, "#{iReleaseDir}/#{iExecutableInfo[:ExeName]}")
110
105
  end
111
106
 
112
107
  return rSuccess
@@ -1,5 +1,5 @@
1
1
  #--
2
- # Copyright (c) 2009 Muriel Salvan (murielsalvan@users.sourceforge.net)
2
+ # Copyright (c) 2009-2010 Muriel Salvan (murielsalvan@users.sourceforge.net)
3
3
  # Licensed under the terms specified in LICENSE file. No warranty is provided.
4
4
  #++
5
5