RubyPackager 0.1.0.20091021 → 0.1.1.20091105
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/{F:/RR/Source/rubypackager/svn/rubypackager/Releases/i386-mswin32/0.1.0.20091021/Normal/2009_10_21_19_10_02/Release/AUTHORS → AUTHORS} +0 -0
- data/ChangeLog +67 -0
- data/{F:/RR/Source/rubypackager/svn/rubypackager/Releases/i386-mswin32/0.1.0.20091021/Normal/2009_10_21_19_10_02/Release/Credits → Credits} +0 -0
- data/{F:/RR/Source/rubypackager/svn/rubypackager/Releases/i386-mswin32/0.1.0.20091021/Normal/2009_10_21_19_10_02/Release/LICENSE → LICENSE} +0 -0
- data/{F:/RR/Source/rubypackager/svn/rubypackager/Releases/i386-mswin32/0.1.0.20091021/Normal/2009_10_21_19_10_02/Release/README → README} +0 -0
- data/{F:/RR/Source/rubypackager/svn/rubypackager/Releases/i386-mswin32/0.1.0.20091021/Normal/2009_10_21_19_10_02/Release/ReleaseInfo → ReleaseInfo} +1 -1
- data/TODO +14 -0
- data/bin/Release.rb +206 -0
- data/{F:/RR/Source/rubypackager/svn/rubypackager/Releases/i386-mswin32/0.1.0.20091021/Normal/2009_10_21_19_10_02/Release/lib → lib}/RubyPackager/Distributors/SourceForge.rb +12 -9
- data/{F:/RR/Source/rubypackager/svn/rubypackager/Releases/i386-mswin32/0.1.0.20091021/Normal/2009_10_21_19_10_02/Release/lib → lib}/RubyPackager/Installers/Gem.rb +8 -13
- data/{F:/RR/Source/rubypackager/svn/rubypackager/Releases/i386-mswin32/0.1.0.20091021/Normal/2009_10_21_19_10_02/Release/lib → lib}/RubyPackager/ReleaseInfo.rb +1 -11
- data/{F:/RR/Source/rubypackager/svn/rubypackager/Releases/i386-mswin32/0.1.0.20091021/Normal/2009_10_21_19_10_02/Release/lib → lib}/RubyPackager/Releaser.rb +130 -102
- data/{F:/RR/Source/rubypackager/svn/rubypackager/Releases/i386-mswin32/0.1.0.20091021/Normal/2009_10_21_19_10_02/Release/lib → lib}/RubyPackager/Tools.rb +0 -0
- data/lib/RubyPackager/i386-linux/PlatformReleaser.rb +117 -0
- data/{F:/RR/Source/rubypackager/svn/rubypackager/Releases/i386-mswin32/0.1.0.20091021/Normal/2009_10_21_19_10_02/Release/lib → lib}/RubyPackager/i386-mswin32/Installers/NSIS.rb +3 -4
- data/{F:/RR/Source/rubypackager/svn/rubypackager/Releases/i386-mswin32/0.1.0.20091021/Normal/2009_10_21_19_10_02/Release/lib → lib}/RubyPackager/i386-mswin32/PlatformReleaser.rb +6 -9
- data/{F:/RR/Source/rubypackager/svn/rubypackager/Releases/i386-mswin32/0.1.0.20091021/Normal/2009_10_21_19_10_02/Release/lib → lib}/RubyPackager/i386-mswin32/edicon/edicon.exe +0 -0
- data/test/Common.rb +346 -0
- data/test/PlatformIndependent/CommandLine.rb +156 -0
- data/test/PlatformIndependent/Executable.rb +31 -0
- data/test/PlatformIndependent/Library.rb +31 -0
- data/test/PlatformIndependent/Misc.rb +62 -0
- data/test/PlatformIndependent/Plugins/Distributors/SourceForge.rb +81 -0
- data/test/PlatformIndependent/Plugins/Installers/Gem.rb +142 -0
- data/test/Repository/Applications/Basic/Distribution/ReleaseInfo.rb +27 -0
- data/test/Repository/Applications/Basic/Distribution/ReleaseInfo_Exe.rb +33 -0
- data/test/Repository/Applications/Basic/Distribution/ReleaseInfo_ExeTerm.rb +33 -0
- data/test/Repository/Applications/Basic/Distribution/ReleaseInfo_Gem.rb +32 -0
- data/{F:/RR/Source/rubypackager/svn/rubypackager/Releases/i386-mswin32/0.1.0.20091021/Normal/2009_10_21_19_10_02/Release/test → test/Repository}/Applications/Basic/Distribution/i386-mswin32/Icon.ico +0 -0
- data/{F:/RR/Source/rubypackager/svn/rubypackager/Releases/i386-mswin32/0.1.0.20091021/Normal/2009_10_21_19_10_02/Release/test → test/Repository}/Applications/Basic/Distribution/i386-mswin32/Installer/Icon.ico +0 -0
- data/{F:/RR/Source/rubypackager/svn/rubypackager/Releases/i386-mswin32/0.1.0.20091021/Normal/2009_10_21_19_10_02/Release/test → test/Repository}/Applications/Basic/Distribution/i386-mswin32/Installer/InstallLicense.txt +0 -0
- data/{F:/RR/Source/rubypackager/svn/rubypackager/Releases/i386-mswin32/0.1.0.20091021/Normal/2009_10_21_19_10_02/Release/test → test/Repository}/Applications/Basic/Distribution/i386-mswin32/Installer/install.nsi +0 -0
- data/{F:/RR/Source/rubypackager/svn/rubypackager/Releases/i386-mswin32/0.1.0.20091021/Normal/2009_10_21_19_10_02/Release/test → test/Repository}/Applications/Basic/Main.rb +0 -0
- data/test/Repository/Libraries/Basic/Add.rb +6 -0
- data/test/Repository/Libraries/Basic/Distribution/Icon.ico +0 -0
- data/test/Repository/Libraries/Basic/Distribution/InstallLicense.txt +31 -0
- data/test/Repository/Libraries/Basic/Distribution/ReleaseInfo.rb +24 -0
- data/test/Repository/Libraries/Basic/Distribution/ReleaseInfo_Additional.rb +27 -0
- data/test/Repository/Libraries/Basic/Distribution/ReleaseInfo_Gem.rb +29 -0
- data/test/Repository/Libraries/Basic/Distribution/ReleaseInfo_GemDep.rb +32 -0
- data/test/Repository/Libraries/Basic/Distribution/ReleaseInfo_NSIS.rb +28 -0
- data/test/Repository/Libraries/Basic/Distribution/ReleaseInfo_SF.rb +28 -0
- data/test/Repository/Libraries/Basic/Distribution/ReleaseInfo_Test.rb +27 -0
- data/test/Repository/Libraries/Basic/Distribution/ReleaseInfo_TestGem.rb +33 -0
- data/test/Repository/Libraries/Basic/Distribution/install.nsi +53 -0
- data/test/Repository/Libraries/Basic/MainLib.rb +6 -0
- data/test/Repository/Libraries/Basic/Test.rb +6 -0
- data/test/i386-linux/Executable.rb +86 -0
- data/test/i386-mswin32/Executable.rb +90 -0
- data/test/i386-mswin32/Plugins/Installers/NSIS.rb +39 -0
- data/test/run.rb +6 -2
- metadata +56 -29
- data/F:/RR/Source/rubypackager/svn/rubypackager/Releases/i386-mswin32/0.1.0.20091021/Normal/2009_10_21_19_10_02/Release/ChangeLog +0 -17
- data/F:/RR/Source/rubypackager/svn/rubypackager/Releases/i386-mswin32/0.1.0.20091021/Normal/2009_10_21_19_10_02/Release/TODO +0 -11
- data/F:/RR/Source/rubypackager/svn/rubypackager/Releases/i386-mswin32/0.1.0.20091021/Normal/2009_10_21_19_10_02/Release/test/Applications/Basic/Distribution/ReleaseInfo.rb +0 -16
- data/F:/RR/Source/rubypackager/svn/rubypackager/Releases/i386-mswin32/0.1.0.20091021/Normal/2009_10_21_19_10_02/Release/test/Common.rb +0 -50
- data/F:/RR/Source/rubypackager/svn/rubypackager/Releases/i386-mswin32/0.1.0.20091021/Normal/2009_10_21_19_10_02/Release/test/i386-mswin32/run.rb +0 -19
- data/F:/RR/Source/rubypackager/svn/rubypackager/Releases/i386-mswin32/0.1.0.20091021/Normal/2009_10_21_19_10_02/Release/test/run.rb +0 -19
@@ -34,9 +34,9 @@ module RubyPackager
|
|
34
34
|
lDestFileName = "#{iReleaseDir}/#{lRelativeName}"
|
35
35
|
FileUtils::mkdir_p(File.dirname(lDestFileName))
|
36
36
|
if (File.directory?(iFileName))
|
37
|
-
|
37
|
+
logDebug "Create directory #{lRelativeName}"
|
38
38
|
else
|
39
|
-
|
39
|
+
logDebug "Copy file #{lRelativeName}"
|
40
40
|
FileUtils::cp(iFileName, lDestFileName)
|
41
41
|
end
|
42
42
|
end
|
@@ -60,10 +60,11 @@ module RubyPackager
|
|
60
60
|
# * *iReleaseComment* (_String_): Comment accompanying this release
|
61
61
|
# * *iIncludeRuby* (_Boolean_): Do we include Ruby in the release ?
|
62
62
|
# * *iIncludeTest* (_Boolean_): Do we include test files in the release ?
|
63
|
+
# * *iGenerateRDoc* (_Boolean_): Do we generate RDoc ?
|
63
64
|
# * *iInstallers* (<em>list<String></em>): The list of installers to generate
|
64
65
|
# * *iDistributors* (<em>list<String></em>): The list of distributors to ship installers to
|
65
|
-
def initialize(iPluginsManager, iReleaseInfo, iRootDir, iReleaseBaseDir, iPlatformReleaseInfo, iReleaseVersion, iReleaseTags, iReleaseComment, iIncludeRuby, iIncludeTest, iInstallers, iDistributors)
|
66
|
-
@PluginsManager, @ReleaseInfo, @RootDir, @ReleaseBaseDir, @PlatformReleaseInfo, @ReleaseVersion, @ReleaseTags, @ReleaseComment, @IncludeRuby, @IncludeTest, @Installers, @Distributors = iPluginsManager, iReleaseInfo, iRootDir, iReleaseBaseDir, iPlatformReleaseInfo, iReleaseVersion, iReleaseTags, iReleaseComment, iIncludeRuby, iIncludeTest, iInstallers, iDistributors
|
66
|
+
def initialize(iPluginsManager, iReleaseInfo, iRootDir, iReleaseBaseDir, iPlatformReleaseInfo, iReleaseVersion, iReleaseTags, iReleaseComment, iIncludeRuby, iIncludeTest, iGenerateRDoc, iInstallers, iDistributors)
|
67
|
+
@PluginsManager, @ReleaseInfo, @RootDir, @ReleaseBaseDir, @PlatformReleaseInfo, @ReleaseVersion, @ReleaseTags, @ReleaseComment, @IncludeRuby, @IncludeTest, @GenerateRDoc, @Installers, @Distributors = iPluginsManager, iReleaseInfo, iRootDir, iReleaseBaseDir, iPlatformReleaseInfo, iReleaseVersion, iReleaseTags, iReleaseComment, iIncludeRuby, iIncludeTest, iGenerateRDoc, iInstallers, iDistributors
|
67
68
|
@GemName = "#{@ReleaseInfo.GemInfo[:GemName]}-#{@ReleaseVersion}.gem"
|
68
69
|
# Compute the release directory name
|
69
70
|
lStrOptions = 'Normal'
|
@@ -80,6 +81,10 @@ module RubyPackager
|
|
80
81
|
@InstallerDir = "#{@ReleaseDir}/Installer"
|
81
82
|
@DocDir = "#{@ReleaseDir}/Documentation"
|
82
83
|
@ReleaseDir += '/Release'
|
84
|
+
require 'fileutils'
|
85
|
+
FileUtils.mkdir_p(@ReleaseDir)
|
86
|
+
FileUtils.mkdir_p(@InstallerDir)
|
87
|
+
FileUtils.mkdir_p(@DocDir)
|
83
88
|
end
|
84
89
|
|
85
90
|
# Release
|
@@ -105,14 +110,16 @@ module RubyPackager
|
|
105
110
|
end
|
106
111
|
@Installers.each do |iInstallerName|
|
107
112
|
@PluginsManager.accessPlugin('Installers', iInstallerName) do |ioPlugin|
|
108
|
-
if (
|
113
|
+
if ((ioPlugin.respond_to?(:checkTools)) and
|
114
|
+
(!ioPlugin.checkTools))
|
109
115
|
rSuccess = false
|
110
116
|
end
|
111
117
|
end
|
112
118
|
end
|
113
119
|
@Distributors.each do |iDistributorName|
|
114
120
|
@PluginsManager.accessPlugin('Distributors', iDistributorName) do |ioPlugin|
|
115
|
-
if (
|
121
|
+
if ((ioPlugin.respond_to?(:checkTools)) and
|
122
|
+
(!ioPlugin.checkTools))
|
116
123
|
rSuccess = false
|
117
124
|
end
|
118
125
|
end
|
@@ -123,7 +130,9 @@ module RubyPackager
|
|
123
130
|
rSuccess = releaseFiles
|
124
131
|
if (rSuccess)
|
125
132
|
# Generate documentation
|
126
|
-
|
133
|
+
if (@GenerateRDoc)
|
134
|
+
rSuccess = generateRDoc
|
135
|
+
end
|
127
136
|
if (rSuccess)
|
128
137
|
# Generate Release notes
|
129
138
|
rSuccess = generateReleaseNote_HTML
|
@@ -134,9 +143,6 @@ module RubyPackager
|
|
134
143
|
# List of files generated to distribute
|
135
144
|
# list< String >
|
136
145
|
lGeneratedInstallers = []
|
137
|
-
if (!@Installers.empty?)
|
138
|
-
FileUtils::mkdir_p(@InstallerDir)
|
139
|
-
end
|
140
146
|
@Installers.each do |iInstallerName|
|
141
147
|
logOp("Create installer #{iInstallerName}") do
|
142
148
|
@PluginsManager.accessPlugin('Installers', iInstallerName) do |ioPlugin|
|
@@ -178,9 +184,9 @@ module RubyPackager
|
|
178
184
|
# * *iOperationName* (_String_): Operation name
|
179
185
|
# * *CodeBlock*: Code to call in this operation
|
180
186
|
def logOp(iOperationName)
|
181
|
-
|
187
|
+
logDebug "===== #{iOperationName} ..."
|
182
188
|
yield
|
183
|
-
|
189
|
+
logDebug "===== ... #{iOperationName}"
|
184
190
|
end
|
185
191
|
|
186
192
|
# Release files in a directory, and create the executable if needed
|
@@ -197,7 +203,7 @@ module RubyPackager
|
|
197
203
|
if (@ReleaseTags.empty?)
|
198
204
|
lStrTags = ':Tags => []'
|
199
205
|
else
|
200
|
-
lStrTags = ":Tags => [ '#{@ReleaseTags.join('\' \'')}' ]"
|
206
|
+
lStrTags = ":Tags => [ '#{@ReleaseTags.join('\', \'')}' ]"
|
201
207
|
end
|
202
208
|
File.open("#{@ReleaseDir}/ReleaseInfo", 'w') do |oFile|
|
203
209
|
oFile << "
|
@@ -222,8 +228,10 @@ module RubyPackager
|
|
222
228
|
logOp('Copy additional files') do
|
223
229
|
RubyPackager::copyFiles(@RootDir, @ReleaseDir, @ReleaseInfo.AdditionalFiles)
|
224
230
|
end
|
225
|
-
|
226
|
-
|
231
|
+
if (@IncludeTest)
|
232
|
+
logOp('Copy test files') do
|
233
|
+
RubyPackager::copyFiles(@RootDir, @ReleaseDir, @ReleaseInfo.TestFiles)
|
234
|
+
end
|
227
235
|
end
|
228
236
|
end
|
229
237
|
|
@@ -237,43 +245,50 @@ module RubyPackager
|
|
237
245
|
def generateRDoc
|
238
246
|
rSuccess = true
|
239
247
|
|
240
|
-
|
241
|
-
|
242
|
-
|
243
|
-
|
244
|
-
|
245
|
-
|
246
|
-
|
247
|
-
|
248
|
-
|
249
|
-
|
250
|
-
|
251
|
-
|
252
|
-
|
253
|
-
|
254
|
-
|
255
|
-
|
256
|
-
|
257
|
-
|
258
|
-
|
259
|
-
|
260
|
-
|
261
|
-
|
262
|
-
|
263
|
-
|
264
|
-
|
265
|
-
|
266
|
-
|
267
|
-
|
268
|
-
|
269
|
-
|
270
|
-
|
271
|
-
|
272
|
-
"--exclude=Releases",
|
273
|
-
"--output=#{@DocDir}/rdoc"
|
248
|
+
logOp('Generating RDoc') do
|
249
|
+
$ProjectInfo = {
|
250
|
+
:Name => @ReleaseInfo.ProjectInfo[:Name],
|
251
|
+
:Version => @ReleaseVersion,
|
252
|
+
:Tags => @ReleaseTags,
|
253
|
+
:Date => Time.now,
|
254
|
+
:DevStatus => @ReleaseInfo.ProjectInfo[:DevStatus],
|
255
|
+
:Author => @ReleaseInfo.AuthorInfo[:Name],
|
256
|
+
:AuthorMail => @ReleaseInfo.AuthorInfo[:EMail],
|
257
|
+
:AuthorURL => @ReleaseInfo.AuthorInfo[:WebPageURL],
|
258
|
+
:HomepageURL => @ReleaseInfo.ProjectInfo[:WebPageURL],
|
259
|
+
:ImageURL => @ReleaseInfo.ProjectInfo[:ImageURL],
|
260
|
+
# TODO: Do not hardcode SF anymore
|
261
|
+
:DownloadURL => "https://sourceforge.net/projects/#{@ReleaseInfo.SFInfo[:ProjectUnixName]}/files/#{@ReleaseVersion}/#{@GemName}/download",
|
262
|
+
:SVNBrowseURL => @ReleaseInfo.ProjectInfo[:SVNBrowseURL],
|
263
|
+
:FaviconURL => @ReleaseInfo.ProjectInfo[:FaviconURL],
|
264
|
+
# For the documentation, the Root dir is the Release dir as files have been copied there and the rdoc will be generated from there.
|
265
|
+
:RootDir => @ReleaseDir
|
266
|
+
}
|
267
|
+
gem 'rdoc'
|
268
|
+
require 'rdoc/rdoc'
|
269
|
+
lRDocOptions = [
|
270
|
+
'--line-numbers',
|
271
|
+
'--tab-width=2',
|
272
|
+
"--title=#{@ReleaseInfo.ProjectInfo[:Name].gsub(/'/,'\\\\\'')} v#{@ReleaseVersion}",
|
273
|
+
'--fileboxes',
|
274
|
+
'--exclude=.svn',
|
275
|
+
'--exclude=nbproject',
|
276
|
+
'--exclude=Done.txt',
|
277
|
+
"--exclude=Releases",
|
278
|
+
"--output=#{@DocDir}/rdoc"
|
279
|
+
]
|
274
280
|
# Bug (RDoc): Sometimes it does not change current directory correctly (not deterministic)
|
275
|
-
|
276
|
-
|
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 )
|
289
|
+
end
|
290
|
+
Dir.chdir(lOldDir)
|
291
|
+
end
|
277
292
|
|
278
293
|
return rSuccess
|
279
294
|
end
|
@@ -285,31 +300,24 @@ module RubyPackager
|
|
285
300
|
def generateReleaseNote_HTML
|
286
301
|
rSuccess = true
|
287
302
|
|
288
|
-
|
289
|
-
|
290
|
-
|
291
|
-
|
292
|
-
|
293
|
-
|
294
|
-
|
295
|
-
|
296
|
-
break
|
297
|
-
else
|
298
|
-
# We are beginning the section corresponding to the last version
|
299
|
-
lInLastVersionSection = true
|
300
|
-
end
|
301
|
-
elsif (lInLastVersionSection)
|
302
|
-
# This line belongs to the last version section
|
303
|
-
lLastChangesLines << iLine.
|
304
|
-
gsub(/\n/,"<br/>\n").
|
305
|
-
gsub(/^=== (.*)$/, '<h3>\1</h3>').
|
306
|
-
gsub(/^\* (.*)$/, '<li>\1</li>').
|
307
|
-
gsub(/Bug correction/, '<span class="Bug">Bug correction</span>')
|
308
|
-
end
|
303
|
+
logOp('Generating release note in HTML format') do
|
304
|
+
lLastChangesLines = []
|
305
|
+
getLastChangeLog.each do |iLine|
|
306
|
+
lLastChangesLines << iLine.
|
307
|
+
gsub(/\n/,"<br/>\n").
|
308
|
+
gsub(/^=== (.*)$/, '<h3>\1</h3>').
|
309
|
+
gsub(/^\* (.*)$/, '<li>\1</li>').
|
310
|
+
gsub(/Bug correction/, '<span class="Bug">Bug correction</span>')
|
309
311
|
end
|
310
|
-
|
311
|
-
|
312
|
-
|
312
|
+
lStrWhatsNew = ''
|
313
|
+
if (@ReleaseComment != nil)
|
314
|
+
lStrWhatsNew = "
|
315
|
+
<h2>What's new in this release</h2>
|
316
|
+
#{@ReleaseComment.gsub(/\n/,"<br/>\n")}
|
317
|
+
"
|
318
|
+
end
|
319
|
+
File.open("#{@DocDir}/ReleaseNote.html", 'w') do |oFile|
|
320
|
+
oFile << "
|
313
321
|
<html>
|
314
322
|
<head>
|
315
323
|
<link rel=\"shortcut icon\" href=\"#{@ReleaseInfo.ProjectInfo[:FaviconURL]}%>\" />
|
@@ -365,8 +373,7 @@ module RubyPackager
|
|
365
373
|
<a href=\"#{@ReleaseInfo.ProjectInfo[:WebPageURL]}\"><img src=\"#{@ReleaseInfo.ProjectInfo[:ImageURL]}\" align=\"right\" width=\"100px\"/></a>
|
366
374
|
<h1>Release Note for #{@ReleaseInfo.ProjectInfo[:Name]} - v. #{@ReleaseVersion}</h1>
|
367
375
|
<h2>Development status: <span class=\"Important\">#{@ReleaseInfo.ProjectInfo[:DevStatus]}</span></h2>
|
368
|
-
|
369
|
-
#{@ReleaseComment.gsub(/\n/,"<br/>\n")}
|
376
|
+
#{lStrWhatsNew}
|
370
377
|
<h2>Detailed changes with previous version</h2>
|
371
378
|
#{lLastChangesLines.join}
|
372
379
|
<h2>Useful links</h2>
|
@@ -382,6 +389,7 @@ module RubyPackager
|
|
382
389
|
</body>
|
383
390
|
</html>
|
384
391
|
"
|
392
|
+
end
|
385
393
|
end
|
386
394
|
|
387
395
|
return rSuccess
|
@@ -394,38 +402,26 @@ module RubyPackager
|
|
394
402
|
def generateReleaseNote_TXT
|
395
403
|
rSuccess = true
|
396
404
|
|
397
|
-
|
398
|
-
|
399
|
-
|
400
|
-
|
401
|
-
|
402
|
-
|
403
|
-
|
404
|
-
|
405
|
-
|
406
|
-
else
|
407
|
-
# We are beginning the section corresponding to the last version
|
408
|
-
lInLastVersionSection = true
|
409
|
-
end
|
410
|
-
elsif (lInLastVersionSection)
|
411
|
-
# This line belongs to the last version section
|
412
|
-
lLastChangesLines << iLine
|
413
|
-
end
|
405
|
+
logOp('Generating release note in TXT format') do
|
406
|
+
lStrWhatsNew = ''
|
407
|
+
if (@ReleaseComment != nil)
|
408
|
+
lStrWhatsNew = "
|
409
|
+
== What's new in this release
|
410
|
+
|
411
|
+
#{@ReleaseComment}
|
412
|
+
|
413
|
+
"
|
414
414
|
end
|
415
|
-
|
416
|
-
|
417
|
-
oFile << "
|
415
|
+
File.open("#{@DocDir}/ReleaseNote.txt", 'w') do |oFile|
|
416
|
+
oFile << "
|
418
417
|
= Release Note for #{@ReleaseInfo.ProjectInfo[:Name]} - v. #{@ReleaseVersion}
|
419
418
|
|
420
419
|
== Development status: #{@ReleaseInfo.ProjectInfo[:DevStatus]}
|
421
420
|
|
422
|
-
|
423
|
-
|
424
|
-
#{@ReleaseComment}
|
425
|
-
|
421
|
+
#{lStrWhatsNew}
|
426
422
|
== Detailed changes with previous version
|
427
423
|
|
428
|
-
#{
|
424
|
+
#{getLastChangeLog.join}
|
429
425
|
|
430
426
|
== Useful links
|
431
427
|
|
@@ -437,11 +433,43 @@ module RubyPackager
|
|
437
433
|
* View complete ChangeLog: #{@ReleaseInfo.ProjectInfo[:SVNBrowseURL]}ChangeLog?view=markup
|
438
434
|
* View README file: #{@ReleaseInfo.ProjectInfo[:SVNBrowseURL]}README?view=markup
|
439
435
|
"
|
436
|
+
end
|
440
437
|
end
|
441
438
|
|
442
439
|
return rSuccess
|
443
440
|
end
|
444
441
|
|
442
|
+
# Get the last change log
|
443
|
+
#
|
444
|
+
# Return:
|
445
|
+
# * <em>list<String></em>: The change log lines
|
446
|
+
def getLastChangeLog
|
447
|
+
rLastChangesLines = []
|
448
|
+
|
449
|
+
lChangeLogFileName = "#{@RootDir}/ChangeLog"
|
450
|
+
if (File.exists?(lChangeLogFileName))
|
451
|
+
File.open(lChangeLogFileName, 'r') do |iFile|
|
452
|
+
lInLastVersionSection = false
|
453
|
+
iFile.readlines.each do |iLine|
|
454
|
+
if (iLine.match(/^== /) != nil)
|
455
|
+
if (lInLastVersionSection)
|
456
|
+
# Nothing else to parse
|
457
|
+
break
|
458
|
+
else
|
459
|
+
# We are beginning the section corresponding to the last version
|
460
|
+
lInLastVersionSection = true
|
461
|
+
end
|
462
|
+
elsif (lInLastVersionSection)
|
463
|
+
# This line belongs to the last version section
|
464
|
+
rLastChangesLines << iLine
|
465
|
+
end
|
466
|
+
end
|
467
|
+
end
|
468
|
+
end
|
469
|
+
|
470
|
+
return rLastChangesLines
|
471
|
+
end
|
472
|
+
|
445
473
|
end
|
446
474
|
|
447
475
|
end
|
File without changes
|
@@ -0,0 +1,117 @@
|
|
1
|
+
#--
|
2
|
+
# Copyright (c) 2009 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 win32 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
|
+
# * *iReleaseInfo* (_ReleaseInfo_): The release information
|
46
|
+
# Return:
|
47
|
+
# * _Boolean_: Success ?
|
48
|
+
def createBinary(iRootDir, iReleaseDir, iIncludeRuby, iReleaseInfo)
|
49
|
+
rSuccess = true
|
50
|
+
|
51
|
+
lBinSubDir = "Launch/#{RUBY_PLATFORM}/bin"
|
52
|
+
lRubyBaseBinName = nil
|
53
|
+
lRubyLaunchCmd = nil
|
54
|
+
lRubyBaseBinName = 'ruby'
|
55
|
+
lRubyLaunchCmd = 'ruby'
|
56
|
+
lBinName = "#{lRubyBaseBinName}-#{RUBY_VERSION}.bin"
|
57
|
+
if (iIncludeRuby)
|
58
|
+
# First create the binary containing all ruby
|
59
|
+
lBinDir = "#{iReleaseDir}/#{lBinSubDir}"
|
60
|
+
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}\""
|
67
|
+
end
|
68
|
+
Dir.chdir(lOldDir)
|
69
|
+
end
|
70
|
+
if (rSuccess)
|
71
|
+
# Then create the real executable
|
72
|
+
# Generate the Shell file that launches everything for Linux
|
73
|
+
File.open("#{iReleaseDir}/#{iReleaseInfo.ExecutableInfo[:ExeName]}", 'w') do |oFile|
|
74
|
+
oFile << "
|
75
|
+
\#!/bin/sh
|
76
|
+
\#--
|
77
|
+
\# Copyright (c) 2009 Muriel Salvan (murielsalvan@users.sourceforge.net)
|
78
|
+
\# Licensed under the terms specified in LICENSE file. No warranty is provided.
|
79
|
+
\#++
|
80
|
+
|
81
|
+
\# This file is generated by RubyPackager for Linux.
|
82
|
+
|
83
|
+
\# This file has to launch the correct binary. There can be several binaries dependending on the configuration.
|
84
|
+
\# This is the file that will be created as the executable to launch.
|
85
|
+
|
86
|
+
\# Test Ruby's existence
|
87
|
+
which ruby >/dev/null 2>/dev/null
|
88
|
+
if [ $? == 1 ]
|
89
|
+
then
|
90
|
+
echo 'Ruby not found on current platform. Use embedded one.'
|
91
|
+
if [ ! -d tempruby ]
|
92
|
+
then
|
93
|
+
echo 'Extracting Ruby distribution...'
|
94
|
+
mkdir tempruby
|
95
|
+
cd tempruby
|
96
|
+
../#{lBinSubDir}/#{lBinName} --eee-justextract
|
97
|
+
cd ..
|
98
|
+
fi
|
99
|
+
\# Set the environment correctly to execute Ruby from the extracted dir
|
100
|
+
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
|
+
export RUBYOPT=
|
102
|
+
./tempruby/bin/ruby -w #{iReleaseInfo.ExecutableInfo[:StartupRBFile]}
|
103
|
+
else
|
104
|
+
echo 'Ruby found on current platform. Use it directly.'
|
105
|
+
ruby -w #{iReleaseInfo.ExecutableInfo[:StartupRBFile]}
|
106
|
+
fi
|
107
|
+
"
|
108
|
+
end
|
109
|
+
File.chmod(0755, "#{iReleaseDir}/#{iReleaseInfo.ExecutableInfo[:ExeName]}")
|
110
|
+
end
|
111
|
+
|
112
|
+
return rSuccess
|
113
|
+
end
|
114
|
+
|
115
|
+
end
|
116
|
+
|
117
|
+
end
|
@@ -18,8 +18,7 @@ module RubyPackager
|
|
18
18
|
|
19
19
|
# Check that makensis is present
|
20
20
|
if (!system('makensis /VERSION'))
|
21
|
-
|
22
|
-
puts "!!! Please download and install MakeNSIS in the PATH from http://nsis.sourceforge.net/Main_Page"
|
21
|
+
logErr "Need to have MakeNSIS installed in the system PATH to create installer.\nPlease download and install MakeNSIS in the PATH from http://nsis.sourceforge.net/Main_Page"
|
23
22
|
rSuccess = false
|
24
23
|
end
|
25
24
|
|
@@ -40,12 +39,12 @@ module RubyPackager
|
|
40
39
|
rFileName = nil
|
41
40
|
|
42
41
|
if (iReleaseInfo.InstallInfo[:NSISFileName] == nil)
|
43
|
-
|
42
|
+
logErr 'No NSISFileName specified among the Install description.'
|
44
43
|
else
|
45
44
|
lNSISOK = system("makensis /DVERSION=#{iVersion} \"/DRELEASEDIR=#{iReleaseDir.gsub(/\//,'\\')}\" \"#{iRootDir.gsub(/\//,'\\')}\\#{iReleaseInfo.InstallInfo[:NSISFileName].gsub(/\//,'\\')}\"")
|
46
45
|
if (lNSISOK)
|
47
46
|
lInstallerDir = File.dirname("#{iRootDir}/#{iReleaseInfo.InstallInfo[:NSISFileName]}")
|
48
|
-
rFileName = "#{iReleaseInfo.
|
47
|
+
rFileName = "#{iReleaseInfo.InstallInfo[:InstallerName]}_#{iVersion}_setup.exe"
|
49
48
|
FileUtils.mv("#{lInstallerDir}/setup.exe", "#{iInstallerDir}/#{rFileName}")
|
50
49
|
end
|
51
50
|
end
|
@@ -27,21 +27,18 @@ module RubyPackager
|
|
27
27
|
if (iIncludeRuby)
|
28
28
|
# We need allinoneruby
|
29
29
|
if (Gem.find_files('allinoneruby').empty?)
|
30
|
-
|
31
|
-
puts "!!! Please install allinoneruby gem (gem install allinoneruby)."
|
30
|
+
logErr "Need to have allinoneruby gem to release including Ruby.\nPlease install allinoneruby gem (gem install allinoneruby)."
|
32
31
|
rSuccess = false
|
33
32
|
end
|
34
33
|
end
|
35
34
|
# Check that edicon is present
|
36
35
|
if (!File.exists?("#{PLATFORM_DIR}/edicon/edicon.exe"))
|
37
|
-
|
38
|
-
puts "!!! Please install edicon, part of Ocra Gem (gem install ocra), and copy from the Gem directory (ocra-1.1.1/share/ocra/edicon.exe) to #{PLATFORM_DIR}/edicon/edicon.exe."
|
36
|
+
logErr "Need to have edicon.exe installed in #{PLATFORM_DIR}/edicon to set a Windows executable's icon.\nPlease install edicon, part of Ocra Gem (gem install ocra), and copy from the Gem directory (ocra-1.1.1/share/ocra/edicon.exe) to #{PLATFORM_DIR}/edicon/edicon.exe."
|
39
37
|
rSuccess = false
|
40
38
|
end
|
41
39
|
# Check that exerb is present
|
42
40
|
if (!system('exerb.bat --version'))
|
43
|
-
|
44
|
-
puts "!!! Please download and install exerb from http://exerb.sourceforge.jp/index.en.html"
|
41
|
+
logErr "Need to have exerb installed in the system PATH to create a Windows executable.\nPlease download and install exerb from http://exerb.sourceforge.jp/index.en.html"
|
45
42
|
rSuccess = false
|
46
43
|
end
|
47
44
|
|
@@ -86,7 +83,7 @@ module RubyPackager
|
|
86
83
|
end
|
87
84
|
rSuccess = system(lCmd)
|
88
85
|
if (!rSuccess)
|
89
|
-
|
86
|
+
logErr "Error while executing \"#{lCmd}\""
|
90
87
|
end
|
91
88
|
Dir.chdir(lOldDir)
|
92
89
|
end
|
@@ -158,10 +155,10 @@ end
|
|
158
155
|
lEdiconCmd = "#{PLATFORM_DIR}/edicon/edicon.exe #{iReleaseDir}/#{iReleaseInfo.ExecutableInfo[:ExeName]}.exe #{iRootDir}/#{iReleaseInfo.ExecutableInfo[:IconName]}"
|
159
156
|
rSuccess = system(lEdiconCmd)
|
160
157
|
if (!rSuccess)
|
161
|
-
|
158
|
+
logErr "Error while executing \"#{lEdiconCmd}\""
|
162
159
|
end
|
163
160
|
else
|
164
|
-
|
161
|
+
logErr "Error while executing \"exerb.bat -o #{iReleaseInfo.ExecutableInfo[:ExeName]}.exe #{lTempFileName}\""
|
165
162
|
end
|
166
163
|
end
|
167
164
|
|