[kpackagekit] * Wed Dec 15 2010 Kevin Kofler <Kevin at tigcc.ticalc.org> 0.6.3-0.2.20101214 - fetch translations from

Kevin Kofler kkofler at fedoraproject.org
Wed Dec 15 06:38:56 UTC 2010


commit 7016b8fae883deeb17265399cb6f92d081a20cd3
Author: Kevin Kofler <Kevin at tigcc.ticalc.org>
Date:   Wed Dec 15 07:38:38 2010 +0100

    * Wed Dec 15 2010 Kevin Kofler <Kevin at tigcc.ticalc.org> 0.6.3-0.2.20101214
    - fetch translations from SVN

 .gitignore                          |    1 +
 create_tarball_translations_only.rb |  395 +++++++++++++++++++++++++++++++++++
 kpackagekit.spec                    |   37 +++-
 sources                             |    1 +
 4 files changed, 426 insertions(+), 8 deletions(-)
---
diff --git a/.gitignore b/.gitignore
index e2e0ecc..d0771bd 100644
--- a/.gitignore
+++ b/.gitignore
@@ -2,3 +2,4 @@ kpackagekit-0.6.0.tar.gz
 /kpackagekit-0.6.1.tar.bz2
 /kpackagekit-0.6.2.tar.bz2
 /kpackagekit-0.6.3-20101214.tar.bz2
+/kpackagekit-translations-20101214.tar.bz2
diff --git a/create_tarball_translations_only.rb b/create_tarball_translations_only.rb
new file mode 100755
index 0000000..bc684a0
--- /dev/null
+++ b/create_tarball_translations_only.rb
@@ -0,0 +1,395 @@
+#!/usr/bin/ruby
+
+#
+# Ruby script for generating amaroK tarball releases from KDE SVN
+#
+# (c) 2005 Mark Kretschmann <markey at web.de>
+# (c) 2006-2008 Tom Albers <tomalbers at kde.nl>
+# (c) 2007 Angelo Naselli <anaselli at linux.it> (command line parameters) 
+# Some parts of this code taken from cvs2dist
+# License: GNU General Public License V2
+
+require 'optparse'
+require 'ostruct'
+require 'find'
+
+# check command line parameters
+options = OpenStruct.new
+options.help  = false
+options.https = false
+options.ask   = true
+
+opts = OptionParser.new do |opts|
+  opts.on("-u", "--user USERNAME", "svn account") do |u|
+    options.username = u
+  end
+  opts.on("-w", "--https", "Using https instead of svn+ssh") do |w|
+    options.https = w
+  end
+  opts.on("-n", "--noaccount", "Using svn://anonsvn.kde.org/ instead of svn+ssh") do |n|
+    options.anonsvn = n
+  end
+  opts.on("-a", "--application APPL", "Application name (all for all, kde_release for apps that have kde_release=yes)") do |a|
+    options.application = a
+    options.ask = false
+  end
+  opts.on("-v", "--version VER", "Overwrite package version set in config.ini") do |v|
+    options.ver = v
+  end
+  opts.on_tail("-h", "--help", "Show this usage statement") do |h|
+    options.help = true
+  end
+end
+
+begin
+  opts.parse!(ARGV)
+rescue Exception => e
+  puts e, "", opts
+  puts
+  exit
+end
+
+if (options.username)
+  username = options.username + "@"
+end
+
+if (options.application)
+  apps = Array.new
+  apps << options.application
+end
+
+if (options.https)
+  if (username)
+    svnbase    = "https://#{username}svn.kde.org/home/kde"
+  else
+    puts opts
+    puts
+    puts "Username is mandatory with https"
+    exit
+  end
+else
+  svnbase    = "svn+ssh://#{username}svn.kde.org/home/kde"
+end
+
+if (options.anonsvn)
+  if (options.https)
+     puts opts
+     puts
+     puts "https or anonsvn please, not both"
+     exit
+   end
+   svnbase    = "svn://anonsvn.kde.org/home/kde"
+end
+
+if (options.help)
+  puts opts
+  exit
+end
+
+############# START #############
+
+svnroot    = "#{svnbase}/trunk"
+kde_version  = `svn ls svn://anonsvn.kde.org/home/kde/tags/KDE | sort | tail -n1 | cut -d "/" -f1`.chomp
+#kde_version = '4.0.4'
+
+#----------------------------------------------------------------
+# initiate. 
+#----------------------------------------------------------------
+
+f = File.new("config.ini")
+app = Array.new
+begin
+    while (line = f.readline)
+        aline = line.chomp
+        if aline[0,1] == "[" 
+            app << aline[1,(aline.length-2)]
+        end
+    end
+rescue EOFError
+    f.close
+end
+
+puts "Last KDE version found: " + kde_version
+if (options.ask)
+    puts "Which apps (multiple sep by space, posibilities: all kde_release " + app.join(" ") + ")?"
+    apps = gets.split(" ")
+end
+
+kde_release = false;
+if apps[0] == "all"
+    apps = app
+elsif apps[0] == "kde_release"
+    apps = app
+    kde_release = true;
+end
+
+puts "-> Considering " + apps.join(" & ")
+if kde_release
+    puts " -> Only applications which have kde_release = yes in config "
+end
+puts
+
+#----------------------------------------------------------------
+# retrieve apps. 
+#----------------------------------------------------------------
+
+apps.each do |app|
+    puts
+    puts "-> Processing " + app 
+
+    found = false;
+    appdata = Hash.new 
+    f = File.new("config.ini")
+    begin
+        while (line = f.readline)
+            aline = line.chomp
+            if aline == "[" + app + "]"
+                found = true; 
+            elsif aline.length > 0 && found
+                data = aline.split("=");
+                temp = { data[0].strip => data[1].strip }
+                appdata = appdata.merge(temp)
+            else
+                found = false
+            end
+        end
+        rescue EOFError
+        f.close
+    end
+
+    if (kde_release && appdata["kde_release"] != "yes")
+      puts "  -> Skipping because kde_release is not set in the config.ini"
+      next
+    end
+
+    if (options.ver)
+      temp = { "version" => options.ver }
+      appdata = appdata.merge(temp)
+    else
+      if !appdata["version"]
+        temp = { "version" => kde_version }
+        appdata = appdata.merge(temp)
+      else
+        if kde_release
+           temp = { "version" => appdata["version"] + "-kde" + kde_version }
+           appdata = appdata.merge(temp)
+        end
+      end
+    end
+
+    if !appdata["name"]
+        temp = { "name" => app }
+        appdata = appdata.merge(temp)
+    end
+
+    if appdata["folder"]
+        app = appdata["folder"]
+    end 
+
+    if !appdata["folder"] || appdata["name"]
+        temp = { "folder" => appdata["name"] + "-" + appdata["version"] }
+    else
+        temp = { "folder" => appdata["folder"] + "-" + appdata["version"] }
+    end
+    appdata = appdata.merge(temp)
+
+    if appdata["addPo"] && appdata["addPo"].length > 0
+        temp = { "addPo" =>  (appdata["addPo"]+" "+app).split(" ") }
+    else
+        temp = { "addPo" =>  app }
+    end
+    appdata = appdata.merge(temp)
+
+    if appdata["addDocs"] && appdata["addDocs"].length > 0
+        temp = { "addDocs" =>  (appdata["addDocs"]+" "+app).split(" ") }
+    else
+        temp = { "addDocs" =>  app }
+    end
+    appdata = appdata.merge(temp)
+
+    if appdata["submodule"] && appdata["submodule"].length > 0
+        temp = { "submodulepath" => appdata["submodule"] + "/", "l10nmodule" => appdata["mainmodule"] + "-" + appdata["submodule"] }
+    else
+        temp = { "submodulepath" => "", "l10nmodule" => appdata["mainmodule"] }
+    end
+    appdata = appdata.merge(temp)
+
+    # Preparing
+    puts "-> Fetching " + appdata["mainmodule"] + "/" + appdata["submodulepath"] + app + " into " + appdata["folder"] + "..."
+    # Remove old folder, if exists
+    `rm -rf #{appdata["folder"]} 2> /dev/null`
+    `rm -rf #{appdata["folder"]}.tar.bz2 2> /dev/null`
+    Dir.mkdir( appdata["folder"] )
+    Dir.chdir( appdata["folder"] )
+
+    # Do the main checkouts.
+#    if appdata["wholeModule"]
+#        `svn co #{svnroot}/#{appdata["mainmodule"]}/#{appdata["submodulepath"]} #{app}-tmp`
+#    else
+#        `svn co #{svnroot}/#{appdata["mainmodule"]}/#{appdata["submodulepath"]}#{app} #{app}-tmp`
+#    end
+    Dir.mkdir( app + "-tmp" )
+    Dir.chdir( app + "-tmp" )
+
+#    if appdata["docs"] != "no"
+#        `svn co #{svnroot}/#{appdata["mainmodule"]}/#{appdata["submodulepath"]}doc/#{app} doc`
+#    end
+
+    # Move them to the toplevel
+    `/bin/mv * ..`
+    Dir.chdir( ".." )
+
+    `find -name ".svn" | xargs rm -rf`
+    `rm -rf #{app}-tmp`
+
+    if appdata["translations"] != "no"
+        puts "-> Fetching l10n docs for #{appdata["submodulepath"]}#{app}..."
+
+        i18nlangs = `svn cat #{svnroot}/l10n-kde4/subdirs`.split
+        i18nlangsCleaned = []
+        for lang in i18nlangs
+            l = lang.chomp
+            if (l != "x-test")
+                i18nlangsCleaned += [l];
+            end
+        end
+        i18nlangs = i18nlangsCleaned
+
+        Dir.mkdir( "doc-translations" )
+        topmakefile = File.new( "doc-translations/CMakeLists.txt", File::CREAT | File::RDWR | File::TRUNC )
+
+        Dir.mkdir( "l10n" )
+        Dir.chdir( "l10n" )
+
+        # docs
+        for lang in i18nlangs
+            lang.chomp!
+
+            for dg in appdata["addDocs"].split
+                dg.chomp!
+                `rm -rf #{dg}`
+                docdirname = "l10n-kde4/#{lang}/docs/#{appdata["l10nmodule"]}/#{dg}"
+                if ( appdata["docs"] != "no" )
+                    puts "  -> Checking if #{lang} has translated documentation...\n"
+                    `svn co -q #{svnroot}/#{docdirname} > /dev/null 2>&1`
+                end
+                next unless FileTest.exists?( dg + '/index.docbook' )
+
+                print "    -> Copying #{lang}'s #{dg} documentation over...  "
+                Dir.mkdir( "../doc-translations/#{lang}_#{dg}/" )
+                `cp -R #{dg}/ ../doc-translations/#{lang}_#{dg}/#{dg}`
+                topmakefile << "add_subdirectory( #{lang}_#{dg}/#{dg} )\n"
+
+                makefile = File.new( "../doc-translations/#{lang}_#{dg}/#{dg}/CMakeLists.txt", File::CREAT | File::RDWR | File::TRUNC )
+                makefile << "kde4_create_handbook( index.docbook INSTALL_DESTINATION ${HTML_INSTALL_DIR}/#{lang}/)\n"
+                Dir.chdir( "../doc-translations/#{lang}_#{dg}/#{dg}")
+                `find -name ".svn" | xargs rm -rf`
+                Find.find( "." ) do |path|
+                    if File.basename(path)[0] == ?.
+                        # skip this one...
+                    else
+                        if FileTest.directory?(path)
+                            makefile << "add_subdirectory( " + File.basename(path) + " )\n"
+                            submakefile = File.new(  File.basename(path) + "/CMakeLists.txt", File::CREAT | File::RDWR | File::TRUNC )
+                            submakefile << "kde4_create_handbook( index.docbook INSTALL_DESTINATION ${HTML_INSTALL_DIR}/#{lang}/#{dg}/)\n"
+                            submakefile.close()
+                            Find.prune
+                        end
+                    end
+                end
+                Dir.chdir( "../../../l10n")
+                makefile.close()
+
+                puts( "done.\n" )
+            end
+        end
+        topmakefile.close()
+
+        # app translations
+        puts "-> Fetching l10n po for #{appdata["submodulepath"]}#{app}...\n"
+
+        Dir.chdir( ".." ) # in submodule now
+
+        $subdirs = false
+        Dir.mkdir( "po" )
+
+        topmakefile = File.new( "po/CMakeLists.txt", File::CREAT | File::RDWR | File::TRUNC )
+        for lang in i18nlangs
+            lang.chomp!
+            dest = "po/#{lang}"
+
+            for dg in appdata["addPo"].split
+                dg.chomp!
+                if appdata["wholeModule"]
+                    print "  -> Copying #{lang}'s over ..\n"
+                    pofolder = "l10n-kde4/#{lang}/messages/#{appdata["l10nmodule"]}"
+                    `svn co #{svnroot}/#{pofolder} #{dest}`
+                    if FileTest.exist?( dest )
+                      topmakefile << "add_subdirectory( #{lang} )\n"
+                    end
+                    next if !FileTest.exist?( dest )
+				
+                elsif appdata["custompo"]
+		                valid = false
+                    for sp in appdata["custompo"].split(/,/)
+		    	              pofilename = "l10n-kde4/#{lang}/messages/#{appdata["l10nmodule"]}/#{sp}.po"
+                    	  `svn cat #{svnroot}/#{pofilename} 2> /dev/null | tee l10n/#{sp}.po`
+                    	  if not FileTest.size( "l10n/#{sp}.po" ) == 0
+	   		                valid=true
+                    	  if !FileTest.exist?( dest )
+                            Dir.mkdir( dest )
+                            topmakefile << "add_subdirectory( #{lang} )\n"
+                    	  end
+                    	  print "\n  -> Copying #{lang}'s #{sp}.po over ..  "
+                    	  `mv l10n/#{sp}.po #{dest}`
+			              end
+                end
+		            next if not valid
+                else
+                    pofilename = "l10n-kde4/#{lang}/messages/#{appdata["l10nmodule"]}/#{dg}.po"
+                    `svn cat #{svnroot}/#{pofilename} 2> /dev/null | tee l10n/#{dg}.po`
+                    next if FileTest.size( "l10n/#{dg}.po" ) == 0
+                    
+                    if !FileTest.exist?( dest )
+                        Dir.mkdir( dest )
+                        topmakefile << "add_subdirectory( #{lang} )\n"
+                    end
+
+                    print "  -> Copying #{lang}'s #{dg}.po over ..  "
+                    `mv l10n/#{dg}.po #{dest}`
+                    puts( "done.\n" )
+                end
+
+                makefile = File.new( "#{dest}/CMakeLists.txt", File::CREAT | File::RDWR | File::TRUNC )
+                makefile << "file(GLOB _po_files *.po)\n"
+                makefile << "GETTEXT_PROCESS_PO_FILES( #{lang} ALL INSTALL_DESTINATION ${LOCALE_INSTALL_DIR} ${_po_files} )\n"
+                makefile.close()
+            end
+        end
+        topmakefile.close()
+
+        `rm -rf l10n`
+
+        # add l10n to compilation.
+        `echo "find_package(Msgfmt REQUIRED)" >> CMakeLists.txt`
+        `echo "find_package(Gettext REQUIRED)" >> CMakeLists.txt`
+        `echo "add_subdirectory( po )" >> CMakeLists.txt`
+        `echo "add_subdirectory( doc-translations )" >> CMakeLists.txt`
+        if FileTest.exist?( "doc" )
+            `echo "add_subdirectory( doc )" >> CMakeLists.txt`
+        end
+    end
+
+    # Remove cruft 
+    `find -name ".svn" | xargs rm -rf`
+    if ( appdata["remove"] != "")
+        `/bin/rm -rf #{appdata["remove"]}`
+    end
+
+    print "-> Compressing ..  "
+    Dir.chdir( ".." ) # root folder
+    `tar -jcf #{appdata["folder"]}.tar.bz2 #{appdata["folder"]}`
+    #`rm -rf #{appdata["folder"]}`
+    puts " done."
+end 
+
diff --git a/kpackagekit.spec b/kpackagekit.spec
index 0bf6b57..11d5474 100644
--- a/kpackagekit.spec
+++ b/kpackagekit.spec
@@ -7,13 +7,25 @@
 
 Name:	  	kpackagekit
 Version:	0.6.3
-Release:	0.1.%{snap}%{?dist}
+Release:	0.2.%{snap}%{?dist}
 Summary:	KDE interface for PackageKit
 
 License:	GPLv2+
 Group:		Applications/System
-Source0:	kpackagekit-%{version}-%{snap}.tar.bz2
-Source1:	kpackagekit_snapshot.sh
+Source0:	kpackagekit-%{version}%{?snap:-%{snap}}.tar.bz2
+%if 0%{?snap}
+Source1:	kpackagekit-translations-%{snap}.tar.bz2
+Source2:	kpackagekit_snapshot.sh
+# Patched create_tarball.rb for translations only. Use this config:
+# [kpackagekit]
+# mainmodule   = playground
+# submodule    = sysadmin
+# kde_release  = no
+# version      = translations-%{snap}
+# docs         = no
+# translations = yes
+Source3:	create_tarball_translations_only.rb
+%endif
 URL:		http://www.kde-apps.org/content/show.php/KPackageKit?content=84745
 BuildRoot:	%{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
 
@@ -41,8 +53,15 @@ KDE interface for PackageKit.
 
 
 %prep
-
-%setup -q -n kpackagekit-%{version}
+%setup -q -n kpackagekit-%{version} %{?snap:-a 1}
+
+%if 0%{?snap}
+cat kpackagekit-translations-%{snap}/CMakeLists.txt >>CMakeLists.txt
+rm -f kpackagekit-translations-%{snap}/CMakeLists.txt
+mv -f kpackagekit-translations-%{snap}/po po
+mv -f kpackagekit-translations-%{snap}/doc-translations doc-translations
+rmdir kpackagekit-translations-%{snap}
+%endif
 
 %patch50 -p1 -b .InstallPrinterDrivers
 
@@ -63,8 +82,7 @@ rm -rf $RPM_BUILD_ROOT
 
 make install/fast DESTDIR=${RPM_BUILD_ROOT} -C %{_target_platform}
 
-## FIXME, current snapshots have no translations
-%{?!snap:%find_lang kpackagekit}
+%find_lang kpackagekit
 
 # hack around gnome-packagekit conflict
 mv $RPM_BUILD_ROOT%{_datadir}/dbus-1/services/org.freedesktop.PackageKit.service \
@@ -79,7 +97,7 @@ desktop-file-validate $RPM_BUILD_ROOT%{_kde4_datadir}/applications/kde4/kpackage
 rm -rf $RPM_BUILD_ROOT
 
 
-%files %{?!snap: -f kpackagekit.lang}
+%files -f kpackagekit.lang
 %defattr(-,root,root,-)
 %{_kde4_bindir}/kpackagekit
 %{_kde4_libdir}/libkpackagekitlib.so
@@ -101,6 +119,9 @@ rm -rf $RPM_BUILD_ROOT
 
 
 %changelog
+* Wed Dec 15 2010 Kevin Kofler <Kevin at tigcc.ticalc.org> 0.6.3-0.2.20101214
+- fetch translations from SVN
+
 * Tue Dec 14 2010 Rex Dieter <rdieter at fedoraproject.org> 0.6.3-0.1.20101214
 - 0.6.3 snapshot (sans translations)
 
diff --git a/sources b/sources
index 0f73062..024bd6e 100644
--- a/sources
+++ b/sources
@@ -1 +1,2 @@
 0c25aa7b96905e5a1cda31e66b4b0ef7  kpackagekit-0.6.3-20101214.tar.bz2
+2008b5b2dc93bc292e6d62f2b3e837b5  kpackagekit-translations-20101214.tar.bz2


More information about the scm-commits mailing list