This might be the "right way" to fix the issue - mark our exported classes as
[kdeedu-porting.git] / release_app.rb
bloba544e2b73f3bb7488ceb3c64c7cd2078252e1272
1 #!/usr/bin/env ruby
3 # Ruby script for generating tarball releases from SVN
5 # (c) 2005 Mark Kretschmann <markey@web.de>
6 # modified by Carsten Niehaus
7 # Some parts of this code taken from cvs2dist
8 # License: GPL V2
10 require 'getoptlong'
12 opts = GetoptLong.new(
13         [ "--noi18n", "-i",     GetoptLong::NO_ARGUMENT ],
14         [ "--nogpg", "-g",      GetoptLong::NO_ARGUMENT ],
15         [ "--libkdeedu", "-l",  GetoptLong::NO_ARGUMENT ],
16         [ "--widgets", "-w",    GetoptLong::NO_ARGUMENT ],
17         [ "--appname", "-a",    GetoptLong::REQUIRED_ARGUMENT  ],
18         [ "--help", "-h",       GetoptLong::NO_ARGUMENT ]
21 doi18n = "yes"
22 dogpg = "yes"
23 packlibkdeedu = "no"
24 packwidgets = "no"
25 name = ""
27 #check if there are arguments
28 opts.each do |opt, arg|
29         if opt == "--noi18n"
30                 doi18n = "no"
31         elsif opt == "--nogpg"
32                 dogpg = "no"
33         elsif opt == "--libkdeedu"
34                 packlibkdeedu = "yes"
35         elsif opt == "--widgets"
36                 packwidgets = "yes"
37         elsif opt == "--appname"
38                 name = arg
39         elsif opt == "--help"
40                 puts "Usage:\n
41                 Optional:\n
42                 --noi18n to disable the packaging of translations and documentation\n
43                 --nogpg to disable signing with GnuPG\n
44                 --libkdeedu to enable packing libkdeedu\n
45                 --widgets to enable packing the KDEEDU-Widgets"
46                 exit()
47         end
48 end
50 if name.empty?
51         name     = `kdialog --combobox "Select an application:" Kalzium  KBruch  KHangMan Kig Kiten KPercentage KmPlot KStars KTouch KTurtle KVerbos KVoctrain KWordQuiz`.chomp!.downcase
52 end
54 if name.empty?
55         exit()
56 end
58 version     = `kdialog --title "Version number" --inputbox "Enter the version number"`.chomp!
59 if version.empty?
60         version = "preview"
61 end
63 puts "Start packing #{name}".center(40, " - ")
65 folder   = "#{name}-#{version}"
67 # Some helper methods
68 def svn( command, dir )
69         `svn #{command} svn://anonsvn.kde.org/home/kde/#{dir}`
70 end
72 # Prevent using unsermake
73 oldmake = ENV["UNSERMAKE"]
74 ENV["UNSERMAKE"] = "no"
76 # Remove old folder, if exists
77 `rm -rf #{folder} 2> /dev/null`
78 `rm -rf folder.tar.bz2 2> /dev/null`
80 Dir.mkdir( folder )
81 Dir.chdir( folder )
83 if packlibkdeedu == "yes"
84         svn( "co -N", "/trunk/KDE/kdeedu/" )
85         Dir.chdir( "kdeedu")
86         puts "Checking out libkdeedu".center(40, " - ")
87         `svn up libkdeedu`
88 end
89 if  packwidgets == "yes"
90         svn( "co -N", "/trunk/playground/edu/" )
91         Dir.chdir( "playground/edu")
92         puts "Checking out the kdeedu-widgets".center(40, " - ")
93         svn( "co", "/trunk/playground/edu/widgets/")
94 end
96 puts "Checking out #{name}".center(40," - ")
97 `svn up #{name}`
99 puts "Checking out kde-commons/admin".center(40, " - ")
100 svn( "co", "/trunk/KDE/kde-common/admin")
102 # we check out kde-l10n...
103 if doi18n == "yes"
104         puts "\n"
105         puts "l10n".center(40, " - ")
106         puts "\n"
108         Dir.mkdir( "doc" )
110         i18nlangs = `svn cat https://svn.kde.org/home/kde/trunk/l10n/subdirs`
111         Dir.mkdir( "l10n" )
112         Dir.chdir( "l10n" )
114         # docs
115         for lang in i18nlangs
116                 lang.chomp!
117                 `rm -rf ../doc/#{lang}`
118                 `rm -rf #{name}`
119                 docdirname = "l10n/#{lang}/docs/kdeedu/#{name}"
120         `svn co -q https://svn.kde.org/home/kde/trunk/#{docdirname} > /dev/null 2>&1`
121                 next unless FileTest.exists?( "#{name}" )
122                 `cp -R #{name}/ ../doc/#{lang}`
124                 # we don't want KDE_DOCS = AUTO, cause that makes the
125                 # build system assume that the name of the app is the
126                 # same as the name of the dir the Makefile.am is in.
127                 # Instead, we explicitly pass the name..
128                 makefile = File.new( "../doc/#{lang}/Makefile.am", File::CREAT | File::RDWR | File::TRUNC )
129                 makefile << "KDE_LANG = #{lang}\n"
130                 makefile << "KDE_DOCS = #{name}\n"
131                 makefile.close()
133                 puts( "#{lang} done.\n" )
134         end
136         #now create the Makefile.am so that the docs will be build
137         makefile = File.new( "../doc/Makefile.am", File::CREAT | File::RDWR | File::TRUNC )
138         makefile << "KDE_LANG = en\n"
139         makefile << "KDE_DOCS = AUTO\n"
140         makefile << "SUBDIRS = $(AUTODIRS)\n"
141         makefile.close()
143         Dir.chdir( ".." ) # multimedia
144         puts "\n"
146         $subdirs = false
147         Dir.mkdir( "po" )
149         for lang in i18nlangs
150                 lang.chomp!
151                 pofilename = "l10n/#{lang}/messages/kdeedu/#{name}.po"
152                 `svn cat https://svn.kde.org/home/kde/trunk/#{pofilename} 2> /dev/null | tee l10n/#{name}.po`
153                 next if FileTest.size( "l10n/#{name}.po" ) == 0
155                 dest = "po/#{lang}"
156                 Dir.mkdir( dest )
157                 print "Copying #{lang}'s #{name}.po over ..  "
158                 `mv l10n/#{name}.po #{dest}`
159                 puts( "done.\n" )
161                 makefile = File.new( "#{dest}/Makefile.am", File::CREAT | File::RDWR | File::TRUNC )
162                 makefile << "KDE_LANG = #{lang}\n"
163                 makefile << "SUBDIRS  = $(AUTODIRS)\n"
164                 makefile << "POFILES  = AUTO\n"
165                 makefile.close()
167                 $subdirs = true
168         end
170         if $subdirs
171                 makefile = File.new( "po/Makefile.am", File::CREAT | File::RDWR | File::TRUNC )
172                 makefile << "SUBDIRS = $(AUTODIRS)\n"
173                 makefile.close()
174         else
175                 puts "Removing po-subdirectory"
176                 `rm -Rf po`
177         end
179         `rm -rf l10n`
182 puts "\n"
184 puts "Removing svn-history files"
185 `find -name ".svn" | xargs rm -rf`
187 Dir.chdir( "#{name}" )
189 `rm -rf debian`
191 Dir.chdir( ".." ) # kdeedu 
192 puts( "\n" )
194 `find | xargs touch`
197 puts "Generating Makefiles".center(40, " - ")
198 `make -f Makefile.cvs`
199 puts "done.\n"
201 `rm -rf autom4te.cache`
202 `rm stamp-h.in`
205 puts "Compressing".center(40, " - ")
206 `mv * ..`
207 Dir.chdir( ".." ) 
208 `rm -rf kde-common`
209 `rm -rf kdeedu` # after the moving of the directory this is empty
210 Dir.chdir( ".." ) # root folder
211 `tar -cf #{folder}.tar #{folder}`
212 `bzip2 #{folder}.tar`
213 `rm -rf #{folder}`
214 puts "done.\n"
217 ENV["UNSERMAKE"] = oldmake
219 if dogpg == "yes"
220         puts "Signing with your GnuPG-key".center(40, " - ")
221         `gpg --detach-sign #{folder}.tar.bz2`
225 puts "\n"
226 puts "====================================================="
227 puts "Congratulations :) #{name} #{version} tarball generated.\n"
228 puts "\n"
229 puts "MD5 checksum: " + `md5sum #{folder}.tar.bz2`
230 if dogpg == "yes"
231         puts "The user can verify this package with "
232         puts "\n"
233         puts "gpg --verify #{folder}.tar.bz2.sig #{folder}.tar.bz2"
235 puts "\n"
236 puts "\n"