RubyPackager 0.1.0.20091021 → 0.1.1.20091105
Sign up to get free protection for your applications and to get access to all the features.
- 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
|
|