summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTor Lillqvist <tml@iki.fi>2013-08-08 23:10:16 +0300
committerAndras Timar <andras.timar@collabora.com>2013-11-26 06:33:52 -0600
commitd43126696d87fb74ac33b0e54987ebfa7186da39 (patch)
treeaab7e4f01f55a4a30bddfece061a13251b1a9fb2
parent5677b7a9e4d33d07e1f5ad9e5d591beb242c2dd6 (diff)
fdo#62442: Move the InfoPlist.strings files into the app from langpacks
The digital signature of an app bundle includes an integrity check for the Resources subtree. This is the normal place for Mac apps to have their read-only non-code "resources". In LibreOffice it is currently not much used, though. The signature thus breaks when a lang pack installer is run and plops its InfoPlist.strings file into the "Resources" subtree. This file contains translations of strings in the app's Info.plist file. For LibreOffice, it contains translations only for some of the file type names in Info.plist. (Why only some, I don't know.) Files installed by a lang pack insaller into other locations in the app bundle don't harm the signature. Making the InfoPlist.strings files be distributed as part of the main app bundle instead of in langpacks should keep the signature valid even if a lang pack is installed. The InfoPlist.strings files are small so the size of the main app should not grow significantly. This required introduction of a new functionality in scp2: The possibility to generate a list of several complete File or Directory stanzas, one for each language for which translations are being built. (This is different from the existing functionality, used for files that go into lang packs, where a stanza contains several Name or HostName attributes (or whatever the term is) where the attribute names are qualified with the language code in parens.) Change-Id: I3afd9b08944fe1bccb5f0c881d740d260f589e39 Reviewed-on: https://gerrit.libreoffice.org/6251 Reviewed-by: Tor Lillqvist <tml@collabora.com> Tested-by: Tor Lillqvist <tml@collabora.com> Reviewed-by: Andras Timar <andras.timar@collabora.com> Tested-by: Andras Timar <andras.timar@collabora.com>
-rw-r--r--scp2/macros/macro.pl37
-rw-r--r--scp2/source/ooo/directory_ooo.scp5
-rw-r--r--scp2/source/ooo/file_ooo.scp7
3 files changed, 38 insertions, 11 deletions
diff --git a/scp2/macros/macro.pl b/scp2/macros/macro.pl
index e86623c454d4..3ebeabeeea76 100644
--- a/scp2/macros/macro.pl
+++ b/scp2/macros/macro.pl
@@ -21,6 +21,7 @@ my $destfile;
my $config_stamp;
my $lastcompletelangiso_var;
my $completelangiso_var = $ENV{COMPLETELANGISO_VAR};
+my $help_langs_var = $ENV{HELP_LANGS};
if ( !defined $completelangiso_var) {
print STDERR "ERROR: No language defined!\n";
@@ -33,13 +34,15 @@ if (!args_require_build()) {
}
my @completelangiso = split " +", $completelangiso_var;
-my @helplangs = split " +", $ENV{HELP_LANGS};
+my @helplangs = split " +", $help_langs_var;
open OUTFILE, ">$outfile" or die "$0 ERROR: cannot open $outfile for writing!\n";
print OUTFILE "// generated file, do not edit\n\n";
print OUTFILE "// languages used for last time generation\n";
print OUTFILE "// completelangiso: $completelangiso_var\n\n";
+print OUTFILE "// help_langs: $help_langs_var\n\n";
+write_ITERATE_ALL_LANG();
write_ALL_LANG();
write_OTHER_LANGS();
write_DIR_ISOLANGUAGE_ALL_LANG_2();
@@ -57,6 +60,38 @@ close OUTFILE;
rename $outfile, $destfile;
+sub write_ITERATE_ALL_LANG
+{
+ print OUTFILE "#define ITERATE_ALL_LANG_FILE(gid,dir,macro,name,ext) ";
+ foreach $lang (@helplangs) {
+ my $shortlang = $lang;
+ $shortlang = "en" if $shortlang eq "en-US";
+ my $speciallang = $lang;
+ $speciallang =~ s/-/_/;
+ print OUTFILE "\\\nFile CONCAT3(gid_File_,gid,_$speciallang)";
+ print OUTFILE "\\\n\tDir = CONCAT3(gid_Dir_,dir,_$speciallang);";
+ print OUTFILE "\\\n\tmacro;";
+ print OUTFILE "\\\n\tName = STRING(CONCAT3(name,_$lang,ext)); ";
+ print OUTFILE "\\\nEnd ";
+ print OUTFILE "\\\n";
+ }
+ print OUTFILE "\n\n";
+
+ print OUTFILE "#define ITERATE_ALL_LANG_DIR_LPROJ(gid,parent) ";
+ foreach $lang (@helplangs) {
+ my $shortlang = $lang;
+ $shortlang = "en" if $shortlang eq "en-US";
+ my $speciallang = $lang;
+ $speciallang =~ s/-/_/;
+ print OUTFILE "\\\nDirectory CONCAT3(gid_Dir_,gid,_$speciallang)";
+ print OUTFILE "\\\n\tParentID = CONCAT2(gid_Dir_,parent);";
+ print OUTFILE "\\\n\tDosName = \"$shortlang.lproj\"; ";
+ print OUTFILE "\\\nEnd ";
+ print OUTFILE "\\\n";
+ }
+ print OUTFILE "\n\n";
+}
+
sub write_ALL_LANG
{
print OUTFILE "#define ALL_LANG(ident, resid) ";
diff --git a/scp2/source/ooo/directory_ooo.scp b/scp2/source/ooo/directory_ooo.scp
index 6037330d8fbd..26475611a666 100644
--- a/scp2/source/ooo/directory_ooo.scp
+++ b/scp2/source/ooo/directory_ooo.scp
@@ -26,10 +26,7 @@ End
#endif
#ifdef MACOSX
-Directory gid_Dir_Bundle_Contents_Resources_Lang
- ParentID = gid_Dir_Bundle_Contents_Resources;
- DIR_ISOLANGUAGE_ALL_LANG_LPROJ;
-End
+ITERATE_ALL_LANG_DIR_LPROJ(Bundle_Contents_Resources_Lang,Bundle_Contents_Resources)
#endif
#ifdef MACOSX
diff --git a/scp2/source/ooo/file_ooo.scp b/scp2/source/ooo/file_ooo.scp
index 003f92ef7815..a44ff7a47ce6 100644
--- a/scp2/source/ooo/file_ooo.scp
+++ b/scp2/source/ooo/file_ooo.scp
@@ -766,12 +766,7 @@ End
#endif
#ifdef MACOSX
-File gid_File_InfoPlist_Lang
- Dir = gid_Dir_Bundle_Contents_Resources_Lang;
- ARCHIVE_TXT_FILE_BODY;
- Styles = (ARCHIVE);
- EXTRA_ALL_LANG(InfoPlist,zip);
-End
+ITERATE_ALL_LANG_FILE(InfoPlist_Lang,Bundle_Contents_Resources_Lang,ARCHIVE_TXT_FILE_BODY,InfoPlist,.zip)
#endif
#ifdef MACOSX