From 37ff3f8f686990ee149aef4dd875417ee2a7ba7e Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Sat, 14 Apr 2012 14:33:10 +0200 Subject: [PATCH] XMLRPC: Catch some connection problems. It would not be very useful to retry on 403, 404 and 500. --- po/pakfire.pot | 211 ++-- po/pakfire.pot.orig | 1571 ++++++++++++++++++++++++++++ po/pakfire.pot.rej | 228 ++++ python/pakfire/cli.py | 22 + python/pakfire/client/base.py | 5 + python/pakfire/client/transport.py | 72 +- python/pakfire/errors.py | 16 + 7 files changed, 2024 insertions(+), 101 deletions(-) create mode 100644 po/pakfire.pot.orig create mode 100644 po/pakfire.pot.rej diff --git a/po/pakfire.pot b/po/pakfire.pot index ef8e13529..10f4e2af1 100644 --- a/po/pakfire.pot +++ b/po/pakfire.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-04-14 12:39+0200\n" +"POT-Creation-Date: 2012-04-14 14:32+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -424,11 +424,11 @@ msgstr "" msgid "Enabled" msgstr "" -#: ../python/pakfire/cli.py:348 ../python/pakfire/cli.py:1042 +#: ../python/pakfire/cli.py:348 ../python/pakfire/cli.py:1050 msgid "Priority" msgstr "" -#: ../python/pakfire/cli.py:348 ../python/pakfire/cli.py:1087 +#: ../python/pakfire/cli.py:348 ../python/pakfire/cli.py:1095 msgid "Packages" msgstr "" @@ -458,7 +458,7 @@ msgid "Give name of at least one package to build." msgstr "" #: ../python/pakfire/cli.py:456 ../python/pakfire/cli.py:760 -#: ../python/pakfire/cli.py:845 +#: ../python/pakfire/cli.py:847 msgid "Build the package for the given architecture." msgstr "" @@ -574,288 +574,305 @@ msgstr "" msgid "Pakfire client command line interface." msgstr "" -#: ../python/pakfire/cli.py:839 +#: ../python/pakfire/cli.py:841 msgid "Build a package remotely." msgstr "" -#: ../python/pakfire/cli.py:841 +#: ../python/pakfire/cli.py:843 msgid "Give name of a package to build." msgstr "" -#: ../python/pakfire/cli.py:850 +#: ../python/pakfire/cli.py:852 msgid "Print some information about this host." msgstr "" -#: ../python/pakfire/cli.py:856 +#: ../python/pakfire/cli.py:858 msgid "Check the connection to the hub." msgstr "" -#: ../python/pakfire/cli.py:861 +#: ../python/pakfire/cli.py:863 msgid "Show information about build jobs." msgstr "" -#: ../python/pakfire/cli.py:871 +#: ../python/pakfire/cli.py:873 msgid "Show a list of all active jobs." msgstr "" -#: ../python/pakfire/cli.py:876 +#: ../python/pakfire/cli.py:878 msgid "Show a list of all recently finished of failed build jobs." msgstr "" -#: ../python/pakfire/cli.py:881 +#: ../python/pakfire/cli.py:883 msgid "Show details about given build job." msgstr "" -#: ../python/pakfire/cli.py:882 +#: ../python/pakfire/cli.py:884 msgid "The ID of the build job." msgstr "" -#: ../python/pakfire/cli.py:887 +#: ../python/pakfire/cli.py:889 msgid "Show information about builds." msgstr "" -#: ../python/pakfire/cli.py:895 +#: ../python/pakfire/cli.py:897 msgid "Show details about the given build." msgstr "" -#: ../python/pakfire/cli.py:896 +#: ../python/pakfire/cli.py:898 msgid "The ID of the build." msgstr "" -#: ../python/pakfire/cli.py:944 ../python/pakfire/server.py:303 +#: ../python/pakfire/cli.py:903 +msgid "Test the connection to the hub." +msgstr "" + +#: ../python/pakfire/cli.py:904 +msgid "Error code to test." +msgstr "" + +#: ../python/pakfire/cli.py:952 ../python/pakfire/server.py:303 msgid "Hostname" msgstr "" -#: ../python/pakfire/cli.py:945 +#: ../python/pakfire/cli.py:953 msgid "Pakfire hub" msgstr "" -#: ../python/pakfire/cli.py:948 +#: ../python/pakfire/cli.py:956 msgid "Username" msgstr "" #. Hardware information -#: ../python/pakfire/cli.py:952 ../python/pakfire/server.py:307 +#: ../python/pakfire/cli.py:960 ../python/pakfire/server.py:307 msgid "Hardware information" msgstr "" -#: ../python/pakfire/cli.py:953 ../python/pakfire/server.py:308 +#: ../python/pakfire/cli.py:961 ../python/pakfire/server.py:308 msgid "CPU model" msgstr "" -#: ../python/pakfire/cli.py:954 ../python/pakfire/server.py:309 +#: ../python/pakfire/cli.py:962 ../python/pakfire/server.py:309 msgid "Memory" msgstr "" -#: ../python/pakfire/cli.py:956 ../python/pakfire/server.py:311 +#: ../python/pakfire/cli.py:964 ../python/pakfire/server.py:311 msgid "Native arch" msgstr "" -#: ../python/pakfire/cli.py:958 +#: ../python/pakfire/cli.py:966 msgid "Default arch" msgstr "" -#: ../python/pakfire/cli.py:960 ../python/pakfire/server.py:313 +#: ../python/pakfire/cli.py:968 ../python/pakfire/server.py:313 msgid "Supported arches" msgstr "" -#: ../python/pakfire/cli.py:973 +#: ../python/pakfire/cli.py:981 msgid "Your IP address" msgstr "" -#: ../python/pakfire/cli.py:978 +#: ../python/pakfire/cli.py:986 msgid "You are authenticated to the build service:" msgstr "" -#: ../python/pakfire/cli.py:984 +#: ../python/pakfire/cli.py:992 msgid "User name" msgstr "" -#: ../python/pakfire/cli.py:985 +#: ../python/pakfire/cli.py:993 msgid "Real name" msgstr "" -#: ../python/pakfire/cli.py:986 +#: ../python/pakfire/cli.py:994 msgid "Email address" msgstr "" -#: ../python/pakfire/cli.py:987 +#: ../python/pakfire/cli.py:995 msgid "Registered" msgstr "" -#: ../python/pakfire/cli.py:994 +#: ../python/pakfire/cli.py:1002 msgid "You could not be authenticated to the build service." msgstr "" -#: ../python/pakfire/cli.py:1015 +#: ../python/pakfire/cli.py:1023 msgid "No ongoing jobs found." msgstr "" -#: ../python/pakfire/cli.py:1018 +#: ../python/pakfire/cli.py:1026 msgid "Active build jobs" msgstr "" -#: ../python/pakfire/cli.py:1024 +#: ../python/pakfire/cli.py:1032 msgid "No jobs found." msgstr "" -#: ../python/pakfire/cli.py:1027 +#: ../python/pakfire/cli.py:1035 msgid "Recently processed build jobs" msgstr "" -#: ../python/pakfire/cli.py:1034 +#: ../python/pakfire/cli.py:1042 #, python-format msgid "A build with ID %s could not be found." msgstr "" -#: ../python/pakfire/cli.py:1037 +#: ../python/pakfire/cli.py:1045 #, python-format msgid "Build: %(name)s" msgstr "" -#: ../python/pakfire/cli.py:1041 ../python/pakfire/cli.py:1069 +#: ../python/pakfire/cli.py:1049 ../python/pakfire/cli.py:1077 msgid "State" msgstr "" -#: ../python/pakfire/cli.py:1045 +#: ../python/pakfire/cli.py:1053 msgid "Jobs" msgstr "" -#: ../python/pakfire/cli.py:1058 +#: ../python/pakfire/cli.py:1066 #, python-format msgid "A job with ID %s could not be found." msgstr "" -#: ../python/pakfire/cli.py:1065 +#: ../python/pakfire/cli.py:1073 #, python-format msgid "Job: %(name)s" msgstr "" -#: ../python/pakfire/cli.py:1070 ../python/pakfire/packages/base.py:107 +#: ../python/pakfire/cli.py:1078 ../python/pakfire/packages/base.py:107 #: ../python/pakfire/transaction.py:397 msgid "Arch" msgstr "" -#: ../python/pakfire/cli.py:1075 ../python/pakfire/packages/base.py:142 +#: ../python/pakfire/cli.py:1083 ../python/pakfire/packages/base.py:142 msgid "Build host" msgstr "" -#: ../python/pakfire/cli.py:1080 +#: ../python/pakfire/cli.py:1088 msgid "Time created" msgstr "" -#: ../python/pakfire/cli.py:1081 +#: ../python/pakfire/cli.py:1089 msgid "Time started" msgstr "" -#: ../python/pakfire/cli.py:1082 +#: ../python/pakfire/cli.py:1090 msgid "Time finished" msgstr "" -#: ../python/pakfire/cli.py:1083 +#: ../python/pakfire/cli.py:1091 msgid "Duration" msgstr "" -#: ../python/pakfire/cli.py:1106 +#: ../python/pakfire/cli.py:1119 +msgid "Invalid error code given." +msgstr "" + +#: ../python/pakfire/cli.py:1122 +#, python-format +msgid "Reponse from the server: %s" +msgstr "" + +#: ../python/pakfire/cli.py:1128 msgid "Pakfire daemon command line interface." msgstr "" -#: ../python/pakfire/cli.py:1139 +#: ../python/pakfire/cli.py:1161 msgid "Pakfire key command line interface." msgstr "" -#: ../python/pakfire/cli.py:1183 ../python/pakfire/cli.py:1193 +#: ../python/pakfire/cli.py:1205 ../python/pakfire/cli.py:1215 msgid "Import a key from file." msgstr "" -#: ../python/pakfire/cli.py:1185 +#: ../python/pakfire/cli.py:1207 msgid "The real name of the owner of this key." msgstr "" -#: ../python/pakfire/cli.py:1187 +#: ../python/pakfire/cli.py:1209 msgid "The email address of the owner of this key." msgstr "" -#: ../python/pakfire/cli.py:1195 +#: ../python/pakfire/cli.py:1217 msgid "Filename of that key to import." msgstr "" -#: ../python/pakfire/cli.py:1201 +#: ../python/pakfire/cli.py:1223 msgid "Export a key to a file." msgstr "" -#: ../python/pakfire/cli.py:1203 +#: ../python/pakfire/cli.py:1225 msgid "The ID of the key to export." msgstr "" -#: ../python/pakfire/cli.py:1205 +#: ../python/pakfire/cli.py:1227 msgid "Write the key to this file." msgstr "" -#: ../python/pakfire/cli.py:1211 +#: ../python/pakfire/cli.py:1233 msgid "Delete a key from the local keyring." msgstr "" -#: ../python/pakfire/cli.py:1213 +#: ../python/pakfire/cli.py:1235 msgid "The ID of the key to delete." msgstr "" -#: ../python/pakfire/cli.py:1219 +#: ../python/pakfire/cli.py:1241 msgid "List all imported keys." msgstr "" -#: ../python/pakfire/cli.py:1225 +#: ../python/pakfire/cli.py:1247 msgid "Sign one or more packages." msgstr "" -#: ../python/pakfire/cli.py:1227 +#: ../python/pakfire/cli.py:1249 msgid "Key that is used sign the package(s)." msgstr "" -#: ../python/pakfire/cli.py:1229 +#: ../python/pakfire/cli.py:1251 msgid "Package(s) to sign." msgstr "" -#: ../python/pakfire/cli.py:1235 +#: ../python/pakfire/cli.py:1257 msgid "Verify one or more packages." msgstr "" -#: ../python/pakfire/cli.py:1239 +#: ../python/pakfire/cli.py:1261 msgid "Package(s) to verify." msgstr "" -#: ../python/pakfire/cli.py:1246 +#: ../python/pakfire/cli.py:1268 msgid "Generating the key may take a moment..." msgstr "" -#: ../python/pakfire/cli.py:1294 +#: ../python/pakfire/cli.py:1316 #, python-format msgid "Signing %s..." msgstr "" -#: ../python/pakfire/cli.py:1311 +#: ../python/pakfire/cli.py:1333 #, python-format msgid "Verifying %s..." msgstr "" -#: ../python/pakfire/cli.py:1321 +#: ../python/pakfire/cli.py:1343 msgid "This signature is valid." msgstr "" -#: ../python/pakfire/cli.py:1324 +#: ../python/pakfire/cli.py:1346 msgid "Unknown key" msgstr "" -#: ../python/pakfire/cli.py:1325 +#: ../python/pakfire/cli.py:1347 msgid "Could not check if this signature is valid." msgstr "" -#: ../python/pakfire/cli.py:1328 ../python/pakfire/keyring.py:96 +#: ../python/pakfire/cli.py:1350 ../python/pakfire/keyring.py:96 #, python-format msgid "Created: %s" msgstr "" -#: ../python/pakfire/cli.py:1332 ../python/pakfire/keyring.py:99 +#: ../python/pakfire/cli.py:1354 ../python/pakfire/keyring.py:99 #, python-format msgid "Expires: %s" msgstr "" @@ -864,11 +881,39 @@ msgstr "" msgid "Less than 2GB of free space. Cannot request a new job." msgstr "" -#: ../python/pakfire/client/transport.py:85 +#. Log all XMLRPC protocol errors. +#: ../python/pakfire/client/transport.py:78 +msgid "XMLRPC protocol error:" +msgstr "" + +#: ../python/pakfire/client/transport.py:79 +#, python-format +msgid "URL: %s" +msgstr "" + +#: ../python/pakfire/client/transport.py:80 +msgid " HTTP headers:" +msgstr "" + +#: ../python/pakfire/client/transport.py:83 +#, python-format +msgid "Error code: %s" +msgstr "" + +#: ../python/pakfire/client/transport.py:84 +#, python-format +msgid "Error message: %s" +msgstr "" + +#: ../python/pakfire/client/transport.py:104 #, python-format msgid "Trying again in %(timeout)s second(s). %(tries)s tries left." msgstr "" +#: ../python/pakfire/client/transport.py:109 +msgid "Maximum number of tries was reached. Giving up." +msgstr "" + #: ../python/pakfire/compress.py:85 ../python/pakfire/compress.py:95 #, python-format msgid "Given algorithm '%s' is not supported." @@ -940,6 +985,24 @@ msgstr "" msgid "Transaction test was not successful" msgstr "" +#: ../python/pakfire/errors.py:98 +msgid "Generic XMLRPC error." +msgstr "" + +#: ../python/pakfire/errors.py:102 +msgid "" +"You are forbidden to perform this action. Maybe you need to check your " +"credentials." +msgstr "" + +#: ../python/pakfire/errors.py:106 +msgid "Could not find the requested URL." +msgstr "" + +#: ../python/pakfire/errors.py:110 +msgid "An unforseable problem on the XML-RPC transport connection occured." +msgstr "" + #: ../python/pakfire/i18n.py:54 #, python-format msgid "%(commas)s and %(last)s" diff --git a/po/pakfire.pot.orig b/po/pakfire.pot.orig new file mode 100644 index 000000000..55c02276f --- /dev/null +++ b/po/pakfire.pot.orig @@ -0,0 +1,1571 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2012-04-06 22:37+0200\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +#: ../python/pakfire/actions.py:71 +#, python-format +msgid "%s has got no signatures" +msgstr "" + +#: ../python/pakfire/actions.py:77 +#, python-format +msgid "%s has got no valid signatures" +msgstr "" + +#: ../python/pakfire/actions.py:168 +#, python-format +msgid "Cannot run scriptlet because no interpreter is available: %s" +msgstr "" + +#: ../python/pakfire/actions.py:172 +#, python-format +msgid "Cannot run scriptlet because the interpreter is not executable: %s" +msgstr "" + +#: ../python/pakfire/actions.py:211 +#, python-format +msgid "" +"The scriptlet returned an error:\n" +"%s" +msgstr "" + +#: ../python/pakfire/actions.py:214 +#, python-format +msgid "The scriptlet ran more than %s seconds and was killed." +msgstr "" + +#: ../python/pakfire/actions.py:218 +#, python-format +msgid "" +"The scriptlet returned with an unhandled error:\n" +"%s" +msgstr "" + +#: ../python/pakfire/actions.py:272 ../python/pakfire/actions.py:310 +#: ../python/pakfire/actions.py:333 ../python/pakfire/actions.py:356 +#: ../python/pakfire/actions.py:373 ../python/pakfire/actions.py:392 +#, python-format +msgid "Running transaction test for %s" +msgstr "" + +#: ../python/pakfire/actions.py:281 ../python/pakfire/actions.py:385 +msgid "Installing" +msgstr "" + +#: ../python/pakfire/actions.py:319 +msgid "Updating" +msgstr "" + +#: ../python/pakfire/actions.py:339 +msgid "Removing" +msgstr "" + +#. Cleaning up leftover files and stuff. +#: ../python/pakfire/actions.py:363 +msgid "Cleanup" +msgstr "" + +#: ../python/pakfire/actions.py:401 +msgid "Downgrading" +msgstr "" + +#: ../python/pakfire/base.py:315 +msgid "Local install repository" +msgstr "" + +#: ../python/pakfire/base.py:372 +#, python-format +msgid "Could not find any installed package providing \"%s\"." +msgstr "" + +#: ../python/pakfire/base.py:378 +#, python-format +msgid "Multiple reinstall candidates for \"%(pattern)s\": %(pkgs)s" +msgstr "" + +#: ../python/pakfire/base.py:382 ../python/pakfire/base.py:450 +#: ../python/pakfire/base.py:487 ../python/pakfire/base.py:546 +#: ../python/pakfire/base.py:567 ../python/pakfire/transaction.py:354 +msgid "Nothing to do" +msgstr "" + +#: ../python/pakfire/base.py:407 +#, python-format +msgid "Could not find package %s in a remote repository." +msgstr "" + +#: ../python/pakfire/base.py:479 +#, python-format +msgid "Excluding %s." +msgstr "" + +#: ../python/pakfire/base.py:531 +#, python-format +msgid "\"%s\" package does not seem to be installed." +msgstr "" + +#: ../python/pakfire/base.py:681 +msgid "Build command has failed." +msgstr "" + +#: ../python/pakfire/base.py:716 +msgid "New repository" +msgstr "" + +#: ../python/pakfire/base.py:752 +msgid "Everything is fine." +msgstr "" + +#: ../python/pakfire/builder.py:144 +msgid "You have not set the distribution for which you want to build." +msgstr "" + +#: ../python/pakfire/builder.py:145 +msgid "Please do so in builder.conf or on the CLI." +msgstr "" + +#: ../python/pakfire/builder.py:146 +msgid "Distribution configuration is missing." +msgstr "" + +#: ../python/pakfire/builder.py:160 +#, python-format +msgid "Cannot build for %s on this host." +msgstr "" + +#. Log the package information. +#: ../python/pakfire/builder.py:190 +msgid "Package information:" +msgstr "" + +#. Install all packages. +#: ../python/pakfire/builder.py:410 +msgid "Install packages needed for build..." +msgstr "" + +#: ../python/pakfire/builder.py:415 +msgid "Extracting" +msgstr "" + +#: ../python/pakfire/builder.py:715 +msgid "You cannot run a build when no package was given." +msgstr "" + +#: ../python/pakfire/builder.py:720 +#, python-format +msgid "Could not find makefile in build root: %s" +msgstr "" + +#: ../python/pakfire/builder.py:745 +msgid "Build failed." +msgstr "" + +#: ../python/pakfire/builder.py:747 +msgid "The build command failed. See logfile for details." +msgstr "" + +#: ../python/pakfire/builder.py:761 +msgid "Running installation test..." +msgstr "" + +#: ../python/pakfire/builder.py:767 +msgid "Installation test succeeded." +msgstr "" + +#. Create a progressbar. +#: ../python/pakfire/builder.py:804 +msgid "Signing packages..." +msgstr "" + +#: ../python/pakfire/builder.py:838 +msgid "Dumping package information:" +msgstr "" + +#. Walk through the whole tree and collect all files +#. that are on the same disk (not crossing mountpoints). +#: ../python/pakfire/builder.py:868 +msgid "Creating filelist..." +msgstr "" + +#. Create a nice progressbar. +#: ../python/pakfire/builder.py:887 +msgid "Compressing files..." +msgstr "" + +#: ../python/pakfire/builder.py:906 +#, python-format +msgid "Cache file was successfully created at %s." +msgstr "" + +#: ../python/pakfire/builder.py:907 +#, python-format +msgid " Containing %(files)s files, it has a size of %(size)s." +msgstr "" + +#. Make a nice progress bar as always. +#: ../python/pakfire/builder.py:918 +msgid "Extracting files..." +msgstr "" + +#. Update all packages. +#: ../python/pakfire/builder.py:938 +msgid "Updating packages from cache..." +msgstr "" + +#. Package the result. +#. Make all these little package from the build environment. +#: ../python/pakfire/builder.py:1076 +msgid "Creating packages:" +msgstr "" + +#. Execute the buildscript of this stage. +#: ../python/pakfire/builder.py:1090 +#, python-format +msgid "Running stage %s:" +msgstr "" + +#: ../python/pakfire/builder.py:1108 +#, python-format +msgid "Could not remove static libraries: %s" +msgstr "" + +#: ../python/pakfire/builder.py:1114 +msgid "Compressing man pages did not complete successfully." +msgstr "" + +#: ../python/pakfire/builder.py:1134 +msgid "Extracting debuginfo did not complete with success. Aborting build." +msgstr "" + +#: ../python/pakfire/cli.py:50 +msgid "Pakfire command line interface." +msgstr "" + +#: ../python/pakfire/cli.py:57 +msgid "The path where pakfire should operate in." +msgstr "" + +#: ../python/pakfire/cli.py:129 +msgid "Enable verbose output." +msgstr "" + +#: ../python/pakfire/cli.py:132 +msgid "Path to a configuration file to load." +msgstr "" + +#: ../python/pakfire/cli.py:136 +msgid "Disable a repository temporarily." +msgstr "" + +#: ../python/pakfire/cli.py:139 +msgid "Enable a repository temporarily." +msgstr "" + +#: ../python/pakfire/cli.py:143 +msgid "Run pakfire in offline mode." +msgstr "" + +#: ../python/pakfire/cli.py:148 +msgid "Install one or more packages to the system." +msgstr "" + +#: ../python/pakfire/cli.py:150 +msgid "Give name of at least one package to install." +msgstr "" + +#: ../python/pakfire/cli.py:156 +msgid "Reinstall one or more packages." +msgstr "" + +#: ../python/pakfire/cli.py:158 +msgid "Give name of at least one package to reinstall." +msgstr "" + +#: ../python/pakfire/cli.py:164 +msgid "Remove one or more packages from the system." +msgstr "" + +#: ../python/pakfire/cli.py:166 +msgid "Give name of at least one package to remove." +msgstr "" + +#: ../python/pakfire/cli.py:172 +msgid "Give a name of a package to update or leave emtpy for all." +msgstr "" + +#: ../python/pakfire/cli.py:174 +msgid "Exclude package from update." +msgstr "" + +#: ../python/pakfire/cli.py:176 ../python/pakfire/cli.py:201 +msgid "Allow changing the vendor of packages." +msgstr "" + +#: ../python/pakfire/cli.py:178 ../python/pakfire/cli.py:203 +msgid "Allow changing the architecture of packages." +msgstr "" + +#: ../python/pakfire/cli.py:183 +msgid "Update the whole system or one specific package." +msgstr "" + +#: ../python/pakfire/cli.py:190 +msgid "Check, if there are any updates available." +msgstr "" + +#: ../python/pakfire/cli.py:197 +msgid "Downgrade one or more packages." +msgstr "" + +#: ../python/pakfire/cli.py:199 +msgid "Give a name of a package to downgrade." +msgstr "" + +#: ../python/pakfire/cli.py:209 +msgid "Print some information about the given package(s)." +msgstr "" + +#: ../python/pakfire/cli.py:211 +msgid "Give at least the name of one package." +msgstr "" + +#: ../python/pakfire/cli.py:217 +msgid "Search for a given pattern." +msgstr "" + +#: ../python/pakfire/cli.py:219 +msgid "A pattern to search for." +msgstr "" + +#: ../python/pakfire/cli.py:225 +msgid "Get a list of packages that provide a given file or feature." +msgstr "" + +#: ../python/pakfire/cli.py:227 +msgid "File or feature to search for." +msgstr "" + +#: ../python/pakfire/cli.py:233 +msgid "Get list of packages that belong to the given group." +msgstr "" + +#: ../python/pakfire/cli.py:235 +msgid "Group name to search for." +msgstr "" + +#: ../python/pakfire/cli.py:241 +msgid "Install all packages that belong to the given group." +msgstr "" + +#: ../python/pakfire/cli.py:243 +msgid "Group name." +msgstr "" + +#: ../python/pakfire/cli.py:249 +msgid "List all currently enabled repositories." +msgstr "" + +#: ../python/pakfire/cli.py:253 +msgid "Cleanup commands." +msgstr "" + +#: ../python/pakfire/cli.py:261 +msgid "Cleanup all temporary files." +msgstr "" + +#: ../python/pakfire/cli.py:267 +msgid "Check the system for any errors." +msgstr "" + +#: ../python/pakfire/cli.py:273 +msgid "Check the dependencies for a particular package." +msgstr "" + +#: ../python/pakfire/cli.py:275 +msgid "Give name of at least one package to check." +msgstr "" + +#: ../python/pakfire/cli.py:348 ../python/pakfire/transaction.py:363 +msgid "Repository" +msgstr "" + +#: ../python/pakfire/cli.py:348 +msgid "Enabled" +msgstr "" + +#: ../python/pakfire/cli.py:348 ../python/pakfire/cli.py:1042 +msgid "Priority" +msgstr "" + +#: ../python/pakfire/cli.py:348 ../python/pakfire/cli.py:1087 +msgid "Packages" +msgstr "" + +#: ../python/pakfire/cli.py:360 +msgid "Cleaning up everything..." +msgstr "" + +#: ../python/pakfire/cli.py:381 +msgid "You cannot run pakfire-builder in a pakfire chroot." +msgstr "" + +#: ../python/pakfire/cli.py:384 ../python/pakfire/cli.py:734 +msgid "Pakfire builder command line interface." +msgstr "" + +#: ../python/pakfire/cli.py:444 +msgid "Update the package indexes." +msgstr "" + +#: ../python/pakfire/cli.py:450 ../python/pakfire/cli.py:754 +msgid "Build one or more packages." +msgstr "" + +#: ../python/pakfire/cli.py:452 ../python/pakfire/cli.py:643 +#: ../python/pakfire/cli.py:756 +msgid "Give name of at least one package to build." +msgstr "" + +#: ../python/pakfire/cli.py:456 ../python/pakfire/cli.py:760 +#: ../python/pakfire/cli.py:845 +msgid "Build the package for the given architecture." +msgstr "" + +#: ../python/pakfire/cli.py:458 ../python/pakfire/cli.py:488 +#: ../python/pakfire/cli.py:762 +msgid "Path were the output files should be copied to." +msgstr "" + +#: ../python/pakfire/cli.py:460 ../python/pakfire/cli.py:477 +#: ../python/pakfire/cli.py:764 +msgid "Mode to run in. Is either 'release' or 'development' (default)." +msgstr "" + +#: ../python/pakfire/cli.py:462 +msgid "Run a shell after a successful build." +msgstr "" + +#: ../python/pakfire/cli.py:464 +msgid "Do not perform the install test." +msgstr "" + +#: ../python/pakfire/cli.py:469 +msgid "Go into a shell." +msgstr "" + +#: ../python/pakfire/cli.py:471 +msgid "Give name of a package." +msgstr "" + +#: ../python/pakfire/cli.py:475 +msgid "Emulated architecture in the shell." +msgstr "" + +#: ../python/pakfire/cli.py:482 +msgid "Generate a source package." +msgstr "" + +#: ../python/pakfire/cli.py:484 +msgid "Give name(s) of a package(s)." +msgstr "" + +#: ../python/pakfire/cli.py:493 +msgid "Create a build environment cache." +msgstr "" + +#: ../python/pakfire/cli.py:503 +msgid "Create a new build environment cache." +msgstr "" + +#: ../python/pakfire/cli.py:508 +msgid "Remove all cached build environments." +msgstr "" + +#: ../python/pakfire/cli.py:588 +#, python-format +msgid "Removing environment cache file: %s..." +msgstr "" + +#: ../python/pakfire/cli.py:594 +#, python-format +msgid "Could not remove file: %s" +msgstr "" + +#: ../python/pakfire/cli.py:600 +msgid "Pakfire server command line interface." +msgstr "" + +#: ../python/pakfire/cli.py:641 +msgid "Send a scrach build job to the server." +msgstr "" + +#: ../python/pakfire/cli.py:645 +msgid "Limit build to only these architecture(s)." +msgstr "" + +#: ../python/pakfire/cli.py:651 +msgid "Send a keepalive to the server." +msgstr "" + +#: ../python/pakfire/cli.py:658 +msgid "Update all repositories." +msgstr "" + +#: ../python/pakfire/cli.py:664 +msgid "Repository management commands." +msgstr "" + +#: ../python/pakfire/cli.py:672 +msgid "Create a new repository index." +msgstr "" + +#: ../python/pakfire/cli.py:674 +msgid "Path to the packages." +msgstr "" + +#: ../python/pakfire/cli.py:676 +msgid "Path to input packages." +msgstr "" + +#: ../python/pakfire/cli.py:678 +msgid "Key to sign the repository with." +msgstr "" + +#: ../python/pakfire/cli.py:683 +msgid "Dump some information about this machine." +msgstr "" + +#: ../python/pakfire/cli.py:766 +msgid "Do not verify build dependencies." +msgstr "" + +#: ../python/pakfire/cli.py:799 +msgid "Pakfire client command line interface." +msgstr "" + +#: ../python/pakfire/cli.py:839 +msgid "Build a package remotely." +msgstr "" + +#: ../python/pakfire/cli.py:841 +msgid "Give name of a package to build." +msgstr "" + +#: ../python/pakfire/cli.py:850 +msgid "Print some information about this host." +msgstr "" + +#: ../python/pakfire/cli.py:856 +msgid "Check the connection to the hub." +msgstr "" + +#: ../python/pakfire/cli.py:861 +msgid "Show information about build jobs." +msgstr "" + +#: ../python/pakfire/cli.py:871 +msgid "Show a list of all active jobs." +msgstr "" + +#: ../python/pakfire/cli.py:876 +msgid "Show a list of all recently finished of failed build jobs." +msgstr "" + +#: ../python/pakfire/cli.py:881 +msgid "Show details about given build job." +msgstr "" + +#: ../python/pakfire/cli.py:882 +msgid "The ID of the build job." +msgstr "" + +#: ../python/pakfire/cli.py:887 +msgid "Show information about builds." +msgstr "" + +#: ../python/pakfire/cli.py:895 +msgid "Show details about the given build." +msgstr "" + +#: ../python/pakfire/cli.py:896 +msgid "The ID of the build." +msgstr "" + +#: ../python/pakfire/cli.py:944 ../python/pakfire/server.py:303 +msgid "Hostname" +msgstr "" + +#: ../python/pakfire/cli.py:945 +msgid "Pakfire hub" +msgstr "" + +#: ../python/pakfire/cli.py:948 +msgid "Username" +msgstr "" + +#. Hardware information +#: ../python/pakfire/cli.py:952 ../python/pakfire/server.py:307 +msgid "Hardware information" +msgstr "" + +#: ../python/pakfire/cli.py:953 ../python/pakfire/server.py:308 +msgid "CPU model" +msgstr "" + +#: ../python/pakfire/cli.py:954 ../python/pakfire/server.py:309 +msgid "Memory" +msgstr "" + +#: ../python/pakfire/cli.py:956 ../python/pakfire/server.py:311 +msgid "Native arch" +msgstr "" + +#: ../python/pakfire/cli.py:958 +msgid "Default arch" +msgstr "" + +#: ../python/pakfire/cli.py:960 ../python/pakfire/server.py:313 +msgid "Supported arches" +msgstr "" + +#: ../python/pakfire/cli.py:973 +msgid "Your IP address" +msgstr "" + +#: ../python/pakfire/cli.py:978 +msgid "You are authenticated to the build service:" +msgstr "" + +#: ../python/pakfire/cli.py:984 +msgid "User name" +msgstr "" + +#: ../python/pakfire/cli.py:985 +msgid "Real name" +msgstr "" + +#: ../python/pakfire/cli.py:986 +msgid "Email address" +msgstr "" + +#: ../python/pakfire/cli.py:987 +msgid "Registered" +msgstr "" + +#: ../python/pakfire/cli.py:994 +msgid "You could not be authenticated to the build service." +msgstr "" + +#: ../python/pakfire/cli.py:1015 +msgid "No ongoing jobs found." +msgstr "" + +#: ../python/pakfire/cli.py:1018 +msgid "Active build jobs" +msgstr "" + +#: ../python/pakfire/cli.py:1024 +msgid "No jobs found." +msgstr "" + +#: ../python/pakfire/cli.py:1027 +msgid "Recently processed build jobs" +msgstr "" + +#: ../python/pakfire/cli.py:1034 +#, python-format +msgid "A build with ID %s could not be found." +msgstr "" + +#: ../python/pakfire/cli.py:1037 +#, python-format +msgid "Build: %(name)s" +msgstr "" + +#: ../python/pakfire/cli.py:1041 ../python/pakfire/cli.py:1069 +msgid "State" +msgstr "" + +#: ../python/pakfire/cli.py:1045 +msgid "Jobs" +msgstr "" + +#: ../python/pakfire/cli.py:1058 +#, python-format +msgid "A job with ID %s could not be found." +msgstr "" + +#: ../python/pakfire/cli.py:1065 +#, python-format +msgid "Job: %(name)s" +msgstr "" + +#: ../python/pakfire/cli.py:1070 ../python/pakfire/packages/base.py:107 +#: ../python/pakfire/transaction.py:362 +msgid "Arch" +msgstr "" + +#: ../python/pakfire/cli.py:1075 ../python/pakfire/packages/base.py:142 +msgid "Build host" +msgstr "" + +#: ../python/pakfire/cli.py:1080 +msgid "Time created" +msgstr "" + +#: ../python/pakfire/cli.py:1081 +msgid "Time started" +msgstr "" + +#: ../python/pakfire/cli.py:1082 +msgid "Time finished" +msgstr "" + +#: ../python/pakfire/cli.py:1083 +msgid "Duration" +msgstr "" + +#: ../python/pakfire/cli.py:1106 +msgid "Pakfire daemon command line interface." +msgstr "" + +#: ../python/pakfire/cli.py:1139 +msgid "Pakfire key command line interface." +msgstr "" + +#: ../python/pakfire/cli.py:1185 +msgid "Initialize the local keyring." +msgstr "" + +#: ../python/pakfire/cli.py:1191 ../python/pakfire/cli.py:1201 +msgid "Import a key from file." +msgstr "" + +#: ../python/pakfire/cli.py:1193 +msgid "The real name of the owner of this key." +msgstr "" + +#: ../python/pakfire/cli.py:1195 +msgid "The email address of the owner of this key." +msgstr "" + +#: ../python/pakfire/cli.py:1203 +msgid "Filename of that key to import." +msgstr "" + +#: ../python/pakfire/cli.py:1209 +msgid "Export a key to a file." +msgstr "" + +#: ../python/pakfire/cli.py:1211 +msgid "The ID of the key to export." +msgstr "" + +#: ../python/pakfire/cli.py:1213 +msgid "Write the key to this file." +msgstr "" + +#: ../python/pakfire/cli.py:1219 +msgid "Delete a key from the local keyring." +msgstr "" + +#: ../python/pakfire/cli.py:1221 +msgid "The ID of the key to delete." +msgstr "" + +#: ../python/pakfire/cli.py:1227 +msgid "List all imported keys." +msgstr "" + +#: ../python/pakfire/cli.py:1233 +msgid "Sign one or more packages." +msgstr "" + +#: ../python/pakfire/cli.py:1235 +msgid "Key that is used sign the package(s)." +msgstr "" + +#: ../python/pakfire/cli.py:1237 +msgid "Package(s) to sign." +msgstr "" + +#: ../python/pakfire/cli.py:1243 +msgid "Verify one or more packages." +msgstr "" + +#: ../python/pakfire/cli.py:1247 +msgid "Package(s) to verify." +msgstr "" + +#: ../python/pakfire/cli.py:1258 +msgid "Generating the key may take a moment..." +msgstr "" + +#: ../python/pakfire/cli.py:1306 +#, python-format +msgid "Signing %s..." +msgstr "" + +#: ../python/pakfire/cli.py:1323 +#, python-format +msgid "Verifying %s..." +msgstr "" + +#: ../python/pakfire/cli.py:1333 +msgid "This signature is valid." +msgstr "" + +#: ../python/pakfire/cli.py:1336 +msgid "Unknown key" +msgstr "" + +#: ../python/pakfire/cli.py:1337 +msgid "Could not check if this signature is valid." +msgstr "" + +#: ../python/pakfire/cli.py:1340 ../python/pakfire/keyring.py:114 +#, python-format +msgid "Created: %s" +msgstr "" + +#: ../python/pakfire/cli.py:1344 ../python/pakfire/keyring.py:117 +#, python-format +msgid "Expires: %s" +msgstr "" + +#: ../python/pakfire/client/builder.py:173 +msgid "Less than 2GB of free space. Cannot request a new job." +msgstr "" + +#: ../python/pakfire/client/transport.py:85 +#, python-format +msgid "Trying again in %(timeout)s second(s). %(tries)s tries left." +msgstr "" + +#: ../python/pakfire/compress.py:85 ../python/pakfire/compress.py:95 +#, python-format +msgid "Given algorithm '%s' is not supported." +msgstr "" + +#: ../python/pakfire/config.py:191 +#, python-format +msgid "Unhandled configuration update: %s" +msgstr "" + +#: ../python/pakfire/config.py:205 +msgid "Configuration:" +msgstr "" + +#: ../python/pakfire/config.py:207 +#, python-format +msgid "Section: %s" +msgstr "" + +#: ../python/pakfire/config.py:212 +msgid "No settings in this section." +msgstr "" + +#: ../python/pakfire/config.py:214 +msgid "Loaded from files:" +msgstr "" + +#: ../python/pakfire/downloader.py:155 +msgid "Downloading source files:" +msgstr "" + +#: ../python/pakfire/downloader.py:158 +msgid "Cannot download source code in offline mode." +msgstr "" + +#: ../python/pakfire/downloader.py:181 +#, python-format +msgid "Downloaded empty file: %s" +msgstr "" + +#: ../python/pakfire/errors.py:30 +msgid "An unhandled error occured." +msgstr "" + +#: ../python/pakfire/errors.py:46 +msgid "Could not compress/decompress data." +msgstr "" + +#: ../python/pakfire/errors.py:58 +msgid "One or more dependencies could not been resolved." +msgstr "" + +#: ../python/pakfire/errors.py:61 +msgid "An error occured when pakfire tried to download files." +msgstr "" + +#: ../python/pakfire/errors.py:74 +msgid "" +"The requested action cannot be done on offline mode.\n" +"Please connect your system to the network, remove --offline from the command " +"line and try again." +msgstr "" + +#: ../python/pakfire/errors.py:86 +msgid "Running pakfire-build in a pakfire container?" +msgstr "" + +#: ../python/pakfire/errors.py:94 ../python/pakfire/transaction.py:433 +msgid "Transaction test was not successful" +msgstr "" + +#: ../python/pakfire/i18n.py:54 +#, python-format +msgid "%(commas)s and %(last)s" +msgstr "" + +#: ../python/pakfire/keyring.py:86 +msgid "The local keyring is already initialized. Aborting." +msgstr "" + +#: ../python/pakfire/keyring.py:89 +msgid "Initializing local keyring..." +msgstr "" + +#: ../python/pakfire/keyring.py:102 +#, python-format +msgid "Fingerprint: %s" +msgstr "" + +#: ../python/pakfire/keyring.py:106 +#, python-format +msgid "Subkey: %s" +msgstr "" + +#: ../python/pakfire/keyring.py:108 +msgid "This key has expired!" +msgstr "" + +#: ../python/pakfire/keyring.py:111 +msgid "This is a secret key." +msgstr "" + +#: ../python/pakfire/keyring.py:119 +msgid "This key does not expire." +msgstr "" + +#: ../python/pakfire/keyring.py:172 +#, python-format +msgid "Generating new key for %(realname)s <%(email)s>..." +msgstr "" + +#: ../python/pakfire/keyring.py:173 +msgid "This may take a while..." +msgstr "" + +#: ../python/pakfire/keyring.py:192 +#, python-format +msgid "Successfully import key %s." +msgstr "" + +#: ../python/pakfire/keyring.py:212 +msgid "Host key:" +msgstr "" + +#: ../python/pakfire/keyring.py:215 +msgid "No host key available." +msgstr "" + +#: ../python/pakfire/packages/base.py:99 +msgid "Name" +msgstr "" + +#: ../python/pakfire/packages/base.py:110 ../python/pakfire/transaction.py:362 +msgid "Version" +msgstr "" + +#: ../python/pakfire/packages/base.py:111 +msgid "Release" +msgstr "" + +#: ../python/pakfire/packages/base.py:115 ../python/pakfire/transaction.py:363 +msgid "Size" +msgstr "" + +#: ../python/pakfire/packages/base.py:119 +msgid "Repo" +msgstr "" + +#: ../python/pakfire/packages/base.py:122 +msgid "Summary" +msgstr "" + +#: ../python/pakfire/packages/base.py:123 +msgid "Groups" +msgstr "" + +#: ../python/pakfire/packages/base.py:124 +msgid "URL" +msgstr "" + +#: ../python/pakfire/packages/base.py:125 +msgid "License" +msgstr "" + +#: ../python/pakfire/packages/base.py:128 +msgid "Description" +msgstr "" + +#: ../python/pakfire/packages/base.py:135 +msgid "Maintainer" +msgstr "" + +#: ../python/pakfire/packages/base.py:137 +msgid "Vendor" +msgstr "" + +#: ../python/pakfire/packages/base.py:139 +msgid "UUID" +msgstr "" + +#: ../python/pakfire/packages/base.py:140 +msgid "Build ID" +msgstr "" + +#: ../python/pakfire/packages/base.py:141 +msgid "Build date" +msgstr "" + +#: ../python/pakfire/packages/base.py:144 +msgid "Signatures" +msgstr "" + +#: ../python/pakfire/packages/base.py:149 +msgid "Provides" +msgstr "" + +#: ../python/pakfire/packages/base.py:154 +msgid "Pre-requires" +msgstr "" + +#: ../python/pakfire/packages/base.py:159 +msgid "Requires" +msgstr "" + +#: ../python/pakfire/packages/base.py:164 +msgid "Conflicts" +msgstr "" + +#: ../python/pakfire/packages/base.py:169 +msgid "Obsoletes" +msgstr "" + +#: ../python/pakfire/packages/base.py:177 +msgid "File" +msgstr "" + +#: ../python/pakfire/packages/base.py:367 +msgid "Not set" +msgstr "" + +#: ../python/pakfire/packages/base.py:528 +#, python-format +msgid "Config file saved as %s." +msgstr "" + +#: ../python/pakfire/packages/file.py:93 +#, python-format +msgid "Could not extract file: /%(src)s - %(dst)s" +msgstr "" + +#: ../python/pakfire/packages/file.py:159 +#, python-format +msgid "Filename: %s" +msgstr "" + +#: ../python/pakfire/packages/file.py:256 +#, python-format +msgid "File in archive is missing in file metadata: %s. Skipping." +msgstr "" + +#: ../python/pakfire/packages/file.py:312 +#, python-format +msgid "Config file created as %s" +msgstr "" + +#: ../python/pakfire/packages/file.py:326 +#, python-format +msgid "Could not remove file: /%s" +msgstr "" + +#: ../python/pakfire/packages/lexer.py:722 +#, python-format +msgid "Template does not exist: %s" +msgstr "" + +#: ../python/pakfire/packages/make.py:80 +msgid "Package name is undefined." +msgstr "" + +#: ../python/pakfire/packages/make.py:83 +msgid "Package version is undefined." +msgstr "" + +#: ../python/pakfire/packages/make.py:420 +#, python-format +msgid "Searching for automatic dependencies for %s..." +msgstr "" + +#: ../python/pakfire/packages/make.py:474 +#, python-format +msgid "Regular experession is invalid and has been skipped: %s" +msgstr "" + +#. Let the user know what has been done. +#: ../python/pakfire/packages/make.py:490 +#, python-format +msgid "Filter '%(pattern)s' filtered %(dep)s." +msgstr "" + +#. Load progressbar. +#: ../python/pakfire/packages/packager.py:380 +#: ../python/pakfire/packages/packager.py:668 +msgid "Packaging" +msgstr "" + +#: ../python/pakfire/packages/packager.py:696 +#, python-format +msgid "Building source package %s:" +msgstr "" + +#: ../python/pakfire/repository/database.py:116 +msgid "The format of the database is not supported by this version of pakfire." +msgstr "" + +#: ../python/pakfire/repository/database.py:224 +#, python-format +msgid "Cannot use database with version greater than %s." +msgstr "" + +#: ../python/pakfire/repository/database.py:226 +#, python-format +msgid "Migrating database from format %(old)s to %(new)s." +msgstr "" + +#. Create progress bar. +#: ../python/pakfire/repository/local.py:102 +#: ../python/pakfire/repository/local.py:272 +#, python-format +msgid "%s: Adding packages..." +msgstr "" + +#. Make a nice progress bar. +#: ../python/pakfire/repository/local.py:205 +msgid "Compressing database..." +msgstr "" + +#: ../python/pakfire/repository/remote.py:122 +msgid "You cannot force to update metadata in offline mode." +msgstr "" + +#: ../python/pakfire/repository/remote.py:147 +#, python-format +msgid "No metadata available for repository %s. Cannot download any." +msgstr "" + +#: ../python/pakfire/repository/remote.py:172 +#, python-format +msgid "Could not update metadata for %s from any mirror server" +msgstr "" + +#: ../python/pakfire/repository/remote.py:181 +msgid "The downloaded metadata was less recent than the current one." +msgstr "" + +#: ../python/pakfire/repository/remote.py:220 +#, python-format +msgid "Cannot download package database for %s in offline mode." +msgstr "" + +#: ../python/pakfire/repository/remote.py:231 +#, python-format +msgid "%s: package database" +msgstr "" + +#: ../python/pakfire/repository/remote.py:305 +#, python-format +msgid "Cannot download this file in offline mode: %s" +msgstr "" + +#: ../python/pakfire/repository/remote.py:325 +msgid "The checksum of the downloaded file did not match." +msgstr "" + +#: ../python/pakfire/repository/remote.py:326 +msgid "Trying an other mirror." +msgstr "" + +#: ../python/pakfire/satsolver.py:230 ../python/pakfire/satsolver.py:256 +msgid "The solver returned one problem:" +msgstr "" + +#. Ask the user if he or she want to modify the request. If not, just exit. +#: ../python/pakfire/satsolver.py:272 +msgid "Do you want to manually alter the request?" +msgstr "" + +#: ../python/pakfire/satsolver.py:275 +msgid "You can now try to satisfy the solver by modifying your request." +msgstr "" + +#: ../python/pakfire/satsolver.py:280 +msgid "Which problem to you want to resolve?" +msgstr "" + +#: ../python/pakfire/satsolver.py:282 +msgid "Press enter to try to re-solve the request." +msgstr "" + +#: ../python/pakfire/satsolver.py:313 +#, python-format +msgid " Solution: %s" +msgstr "" + +#: ../python/pakfire/satsolver.py:322 +msgid " Solutions:" +msgstr "" + +#: ../python/pakfire/server.py:279 ../python/pakfire/system.py:125 +msgid "Could not be determined" +msgstr "" + +#: ../python/pakfire/transaction.py:95 +#, python-format +msgid "file %(name)s from %(pkg1)s conflicts with file from package %(pkg2)s" +msgstr "" + +#: ../python/pakfire/transaction.py:101 +#, python-format +msgid "file %(name)s from %(pkg)s conflicts with files from %(pkgs)s" +msgstr "" + +#: ../python/pakfire/transaction.py:109 +#, python-format +msgid "" +"There is not enough space left on %(name)s. Need at least %(size)s to " +"perform transaction." +msgstr "" + +#: ../python/pakfire/transaction.py:295 +#, python-format +msgid "Not enough space to download %s of packages." +msgstr "" + +#: ../python/pakfire/transaction.py:298 +msgid "Downloading packages:" +msgstr "" + +#: ../python/pakfire/transaction.py:362 +msgid "Package" +msgstr "" + +#: ../python/pakfire/transaction.py:367 +msgid "Installing:" +msgstr "" + +#: ../python/pakfire/transaction.py:368 +msgid "Reinstalling:" +msgstr "" + +#: ../python/pakfire/transaction.py:369 +msgid "Updating:" +msgstr "" + +#: ../python/pakfire/transaction.py:370 +msgid "Downgrading:" +msgstr "" + +#: ../python/pakfire/transaction.py:371 +msgid "Removing:" +msgstr "" + +#: ../python/pakfire/transaction.py:377 +msgid "Transaction Summary" +msgstr "" + +#: ../python/pakfire/transaction.py:384 +msgid "package" +msgstr "" + +#: ../python/pakfire/transaction.py:390 +#, python-format +msgid "Total download size: %s" +msgstr "" + +#: ../python/pakfire/transaction.py:394 +#, python-format +msgid "Installed size: %s" +msgstr "" + +#: ../python/pakfire/transaction.py:397 +#, python-format +msgid "Freed size: %s" +msgstr "" + +#: ../python/pakfire/transaction.py:408 +msgid "Is this okay?" +msgstr "" + +#: ../python/pakfire/transaction.py:414 +msgid "Running Transaction Test" +msgstr "" + +#: ../python/pakfire/transaction.py:426 +msgid "Transaction Test Succeeded" +msgstr "" + +#. Make a nice progressbar. +#: ../python/pakfire/transaction.py:459 +msgid "Verifying signatures..." +msgstr "" + +#: ../python/pakfire/transaction.py:491 +#, python-format +msgid "Found %s signature error(s)!" +msgstr "" + +#: ../python/pakfire/transaction.py:496 +msgid "Going on because we are running in permissive mode." +msgstr "" + +#: ../python/pakfire/transaction.py:497 +msgid "This is dangerous!" +msgstr "" + +#: ../python/pakfire/transaction.py:518 +msgid "Running transaction" +msgstr "" + +#: ../python/pakfire/util.py:68 +#, python-format +msgid "%s [y/N]" +msgstr "" + +#: ../python/pakfire/util.py:260 +msgid "Killing orphans..." +msgstr "" + +#: ../python/pakfire/util.py:267 +#, python-format +msgid "Process ID %s is still running in chroot. Killing..." +msgstr "" + +#: ../python/pakfire/util.py:279 +msgid "Waiting for processes to terminate..." +msgstr "" + +#: ../python/src/problem.c:159 +#, c-format +msgid "%s does not belong to a distupgrade repository" +msgstr "" + +#: ../python/src/problem.c:166 +#, c-format +msgid "%s has inferior architecture" +msgstr "" + +#: ../python/src/problem.c:173 +#, c-format +msgid "problem with installed package %s" +msgstr "" + +#: ../python/src/problem.c:179 +#, c-format +msgid "conflicting requests" +msgstr "" + +#: ../python/src/problem.c:184 +#, c-format +msgid "nothing provides requested %s" +msgstr "" + +#: ../python/src/problem.c:190 +#, c-format +msgid "some dependency problem" +msgstr "" + +#: ../python/src/problem.c:195 +#, c-format +msgid "package %s is not installable" +msgstr "" + +#: ../python/src/problem.c:202 +#, c-format +msgid "nothing provides %s needed by %s" +msgstr "" + +#: ../python/src/problem.c:209 +#, c-format +msgid "cannot install both %s and %s" +msgstr "" + +#: ../python/src/problem.c:216 +#, c-format +msgid "package %s conflicts with %s provided by %s" +msgstr "" + +#: ../python/src/problem.c:224 +#, c-format +msgid "package %s obsoletes %s provided by %s" +msgstr "" + +#: ../python/src/problem.c:232 +#, c-format +msgid "installed package %s obsoletes %s provided by %s" +msgstr "" + +#: ../python/src/problem.c:240 +#, c-format +msgid "package %s implicitely obsoletes %s provided by %s" +msgstr "" + +#: ../python/src/problem.c:248 +#, c-format +msgid "package %s requires %s, but none of the providers can be installed" +msgstr "" + +#: ../python/src/problem.c:255 +#, c-format +msgid "package %s conflicts with %s provided by itself" +msgstr "" + +#: ../python/src/problem.c:264 +#, c-format +msgid "bad rule type" +msgstr "" + +#: ../python/src/solution.c:86 +#, c-format +msgid "do not keep %s installed" +msgstr "" + +#: ../python/src/solution.c:89 +#, c-format +msgid "do not install a solvable %s" +msgstr "" + +#: ../python/src/solution.c:92 +#, c-format +msgid "do not install %s" +msgstr "" + +#: ../python/src/solution.c:98 +#, c-format +msgid "do not forbid installation of %s" +msgstr "" + +#: ../python/src/solution.c:101 +#, c-format +msgid "do not deinstall all solvables %s" +msgstr "" + +#: ../python/src/solution.c:104 +#, c-format +msgid "do not deinstall %s" +msgstr "" + +#: ../python/src/solution.c:109 +#, c-format +msgid "do not install most recent version of %s" +msgstr "" + +#: ../python/src/solution.c:114 +#, c-format +msgid "do not lock %s" +msgstr "" + +#: ../python/src/solution.c:119 +#, c-format +msgid "do something different" +msgstr "" + +#: ../python/src/solution.c:126 +#, c-format +msgid "keep %s despite the inferior architecture" +msgstr "" + +#: ../python/src/solution.c:129 +#, c-format +msgid "install %s despite the inferior architecture" +msgstr "" + +#: ../python/src/solution.c:135 +#, c-format +msgid "keep obsolete %s" +msgstr "" + +#: ../python/src/solution.c:138 +#, c-format +msgid "install %s from excluded repository" +msgstr "" + +#: ../python/src/solution.c:150 +#, c-format +msgid "allow downgrade of %s to %s" +msgstr "" + +#: ../python/src/solution.c:154 +#, c-format +msgid "allow architecture change of %s to %s" +msgstr "" + +#: ../python/src/solution.c:159 +#, c-format +msgid "allow vendor change from '%s' (%s) to '%s' (%s)" +msgstr "" + +#: ../python/src/solution.c:163 +#, c-format +msgid "allow vendor change from '%s' (%s) to no vendor (%s)" +msgstr "" + +#: ../python/src/solution.c:169 +#, c-format +msgid "allow replacement of %s with %s" +msgstr "" + +#. XXX Maybe we can make a more beautiful message here?! +#: ../tools/pakfire-multicall.py:25 +msgid "" +"There has been an error when trying to import one or more of the modules, " +"that are required to run Pakfire." +msgstr "" + +#: ../tools/pakfire-multicall.py:27 +msgid "Please check your installation of Pakfire." +msgstr "" + +#: ../tools/pakfire-multicall.py:29 +msgid "The error that lead to this:" +msgstr "" + +#: ../tools/pakfire-multicall.py:70 +msgid "An error has occured when running Pakfire." +msgstr "" + +#: ../tools/pakfire-multicall.py:73 +msgid "Error message:" +msgstr "" + +#: ../tools/pakfire-multicall.py:80 +msgid "Further description:" +msgstr "" diff --git a/po/pakfire.pot.rej b/po/pakfire.pot.rej new file mode 100644 index 000000000..8f93f64a9 --- /dev/null +++ b/po/pakfire.pot.rej @@ -0,0 +1,228 @@ +--- po/pakfire.pot ++++ po/pakfire.pot +@@ -8,7 +8,7 @@ + msgstr "" + "Project-Id-Version: PACKAGE VERSION\n" + "Report-Msgid-Bugs-To: \n" +-"POT-Creation-Date: 2012-04-05 18:51+0200\n" ++"POT-Creation-Date: 2012-04-06 23:28+0200\n" + "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" + "Last-Translator: FULL NAME \n" + "Language-Team: LANGUAGE \n" +@@ -84,50 +84,50 @@ + msgid "Downgrading" + msgstr "" + +-#: ../python/pakfire/base.py:316 ++#: ../python/pakfire/base.py:315 + msgid "Local install repository" + msgstr "" + +-#: ../python/pakfire/base.py:373 ++#: ../python/pakfire/base.py:372 + #, python-format + msgid "Could not find any installed package providing \"%s\"." + msgstr "" + +-#: ../python/pakfire/base.py:379 ++#: ../python/pakfire/base.py:378 + #, python-format + msgid "Multiple reinstall candidates for \"%(pattern)s\": %(pkgs)s" + msgstr "" + +-#: ../python/pakfire/base.py:383 ../python/pakfire/base.py:451 +-#: ../python/pakfire/base.py:488 ../python/pakfire/base.py:547 +-#: ../python/pakfire/base.py:568 ../python/pakfire/transaction.py:354 ++#: ../python/pakfire/base.py:382 ../python/pakfire/base.py:450 ++#: ../python/pakfire/base.py:487 ../python/pakfire/base.py:546 ++#: ../python/pakfire/base.py:567 ../python/pakfire/transaction.py:354 + msgid "Nothing to do" + msgstr "" + +-#: ../python/pakfire/base.py:408 ++#: ../python/pakfire/base.py:407 + #, python-format + msgid "Could not find package %s in a remote repository." + msgstr "" + +-#: ../python/pakfire/base.py:480 ++#: ../python/pakfire/base.py:479 + #, python-format + msgid "Excluding %s." + msgstr "" + +-#: ../python/pakfire/base.py:532 ++#: ../python/pakfire/base.py:531 + #, python-format + msgid "\"%s\" package does not seem to be installed." + msgstr "" + +-#: ../python/pakfire/base.py:682 ++#: ../python/pakfire/base.py:681 + msgid "Build command has failed." + msgstr "" + +-#: ../python/pakfire/base.py:717 ++#: ../python/pakfire/base.py:716 + msgid "New repository" + msgstr "" + +-#: ../python/pakfire/base.py:753 ++#: ../python/pakfire/base.py:752 + msgid "Everything is fine." + msgstr "" + +@@ -400,7 +400,7 @@ + msgid "Give name of at least one package to check." + msgstr "" + +-#: ../python/pakfire/cli.py:348 ../python/pakfire/transaction.py:362 ++#: ../python/pakfire/cli.py:348 ../python/pakfire/transaction.py:363 + msgid "Repository" + msgstr "" + +@@ -716,7 +716,7 @@ + msgstr "" + + #: ../python/pakfire/cli.py:1070 ../python/pakfire/packages/base.py:107 +-#: ../python/pakfire/transaction.py:361 ++#: ../python/pakfire/transaction.py:362 + msgid "Arch" + msgstr "" + +@@ -924,11 +924,11 @@ + msgid "Running pakfire-build in a pakfire container?" + msgstr "" + +-#: ../python/pakfire/errors.py:94 ../python/pakfire/transaction.py:432 ++#: ../python/pakfire/errors.py:94 ../python/pakfire/transaction.py:433 + msgid "Transaction test was not successful" + msgstr "" + +-#: ../python/pakfire/i18n.py:54 ++#: ../python/pakfire/i18n.py:56 + #, python-format + msgid "%(commas)s and %(last)s" + msgstr "" +@@ -989,7 +989,7 @@ + msgid "Name" + msgstr "" + +-#: ../python/pakfire/packages/base.py:110 ../python/pakfire/transaction.py:361 ++#: ../python/pakfire/packages/base.py:110 ../python/pakfire/transaction.py:362 + msgid "Version" + msgstr "" + +@@ -997,7 +997,7 @@ + msgid "Release" + msgstr "" + +-#: ../python/pakfire/packages/base.py:115 ../python/pakfire/transaction.py:362 ++#: ../python/pakfire/packages/base.py:115 ../python/pakfire/transaction.py:363 + msgid "Size" + msgstr "" + +@@ -1274,84 +1274,84 @@ + msgid "Downloading packages:" + msgstr "" + +-#: ../python/pakfire/transaction.py:361 ++#: ../python/pakfire/transaction.py:362 + msgid "Package" + msgstr "" + +-#: ../python/pakfire/transaction.py:366 ++#: ../python/pakfire/transaction.py:367 + msgid "Installing:" + msgstr "" + +-#: ../python/pakfire/transaction.py:367 ++#: ../python/pakfire/transaction.py:368 + msgid "Reinstalling:" + msgstr "" + +-#: ../python/pakfire/transaction.py:368 ++#: ../python/pakfire/transaction.py:369 + msgid "Updating:" + msgstr "" + +-#: ../python/pakfire/transaction.py:369 ++#: ../python/pakfire/transaction.py:370 + msgid "Downgrading:" + msgstr "" + +-#: ../python/pakfire/transaction.py:370 ++#: ../python/pakfire/transaction.py:371 + msgid "Removing:" + msgstr "" + +-#: ../python/pakfire/transaction.py:376 ++#: ../python/pakfire/transaction.py:377 + msgid "Transaction Summary" + msgstr "" + +-#: ../python/pakfire/transaction.py:383 ++#: ../python/pakfire/transaction.py:384 + msgid "package" + msgstr "" + +-#: ../python/pakfire/transaction.py:389 ++#: ../python/pakfire/transaction.py:390 + #, python-format + msgid "Total download size: %s" + msgstr "" + +-#: ../python/pakfire/transaction.py:393 ++#: ../python/pakfire/transaction.py:394 + #, python-format + msgid "Installed size: %s" + msgstr "" + +-#: ../python/pakfire/transaction.py:396 ++#: ../python/pakfire/transaction.py:397 + #, python-format + msgid "Freed size: %s" + msgstr "" + +-#: ../python/pakfire/transaction.py:407 ++#: ../python/pakfire/transaction.py:408 + msgid "Is this okay?" + msgstr "" + +-#: ../python/pakfire/transaction.py:413 ++#: ../python/pakfire/transaction.py:414 + msgid "Running Transaction Test" + msgstr "" + +-#: ../python/pakfire/transaction.py:425 ++#: ../python/pakfire/transaction.py:426 + msgid "Transaction Test Succeeded" + msgstr "" + + #. Make a nice progressbar. +-#: ../python/pakfire/transaction.py:458 ++#: ../python/pakfire/transaction.py:459 + msgid "Verifying signatures..." + msgstr "" + +-#: ../python/pakfire/transaction.py:490 ++#: ../python/pakfire/transaction.py:491 + #, python-format + msgid "Found %s signature error(s)!" + msgstr "" + +-#: ../python/pakfire/transaction.py:495 ++#: ../python/pakfire/transaction.py:496 + msgid "Going on because we are running in permissive mode." + msgstr "" + +-#: ../python/pakfire/transaction.py:496 ++#: ../python/pakfire/transaction.py:497 + msgid "This is dangerous!" + msgstr "" + +-#: ../python/pakfire/transaction.py:517 ++#: ../python/pakfire/transaction.py:518 + msgid "Running transaction" + msgstr "" + diff --git a/python/pakfire/cli.py b/python/pakfire/cli.py index cccd9868f..31d5b6d8b 100644 --- a/python/pakfire/cli.py +++ b/python/pakfire/cli.py @@ -809,6 +809,7 @@ class CliClient(Cli): self.parse_command_info() self.parse_command_jobs() self.parse_command_builds() + self.parse_command_test() # Finally parse all arguments from the command line and save them. self.args = self.parser.parse_args() @@ -821,6 +822,7 @@ class CliClient(Cli): "jobs_active" : self.handle_jobs_active, "jobs_latest" : self.handle_jobs_latest, "builds_show" : self.handle_builds_show, + "test" : self.handle_test, } # Read configuration for the pakfire client. @@ -896,6 +898,12 @@ class CliClient(Cli): sub_show.add_argument("build_id", nargs=1, help=_("The ID of the build.")) sub_show.add_argument("action", action="store_const", const="builds_show") + def parse_command_test(self): + sub_test = self.sub_commands.add_parser("test", + help=_("Test the connection to the hub.")) + sub_test.add_argument("error_code", nargs=1, help=_("Error code to test.")) + sub_test.add_argument("action", action="store_const", const="test") + def handle_build(self): (package,) = self.args.package @@ -1099,6 +1107,20 @@ class CliClient(Cli): print " ", line print # New line. + def handle_test(self): + error_code = self.args.error_code[0] + + try: + error_code = int(error_code) + except ValueError: + error_code = 0 + + if error_code < 100 or error_code > 999: + raise Error, _("Invalid error code given.") + + res = self.client.test_code(error_code) + print _("Reponse from the server: %s") % res + class CliDaemon(Cli): def __init__(self): diff --git a/python/pakfire/client/base.py b/python/pakfire/client/base.py index 9c2e12794..ab9ecd974 100644 --- a/python/pakfire/client/base.py +++ b/python/pakfire/client/base.py @@ -64,6 +64,11 @@ class PakfireClient(object): """ return self.conn.noop() + def test_code(self, error_code): + assert error_code >= 100 and error_code <= 999 + + return self.conn.test_code(error_code) + def get_my_address(self): """ Get my own address (as seen by the hub). diff --git a/python/pakfire/client/transport.py b/python/pakfire/client/transport.py index 1a424fdf9..c5036ce99 100644 --- a/python/pakfire/client/transport.py +++ b/python/pakfire/client/transport.py @@ -45,32 +45,51 @@ class XMLRPCMixin: try: ret = xmlrpclib.Transport.single_request(self, *args, **kwargs) - except (socket.error, ssl.SSLError, httplib.BadStatusLine, \ - xmlrpclib.Fault, xmlrpclib.ProtocolError, xmlrpclib.ResponseError), error_code: + # Catch errors related to the connection. Just try again. + except (socket.error, ssl.SSLError): pass - #except socket.error, e: - # # These kinds of errors are not fatal, but they can happen on - # # a bad internet connection or whatever. - # # 32 Broken pipe - # # 110 Connection timeout - # # 111 Connection refused - # if not e.errno in (32, 110, 111,): - # raise - # - # log.warning(_("Socket error: %s") % e) - # - #except xmlrpclib.ProtocolError, e: - # # Log all XMLRPC protocol errors. - # log.error("XMLRPC protocol error:") - # log.error(" URL: %s" % e.url) - # log.error(" HTTP headers:") - # for header in e.headers.items(): - # log.error(" %s: %s" % header) - # log.error(" Error code: %s" % e.errcode) - # log.error(" Error message: %s" % e.errmsg) - # raise - # + # Presumably, the server closed the connection before sending anything. + except httplib.BadStatusLine: + pass + + # The XML reponse could not be parsed. + except xmlrpclib.ResponseError: + pass + + except xmlrpclib.ProtocolError, e: + if e.errcode == 403: + # Possibly, the user credentials are invalid. + # Cannot go on. + raise XMLRPCForbiddenError(e) + + elif e.errcode == 404: + # Some invalid URL was called. + # Cannot go on. + raise XMLRPCNotFoundError(e) + + elif e.errcode == 503: + # Possibly the hub is not running but the SSL proxy + # is. Just try again in a short time. + pass + + else: + # Log all XMLRPC protocol errors. + log.error(_("XMLRPC protocol error:")) + log.error(" %s" % _("URL: %s") % e.url) + log.error(" %s" % _(" HTTP headers:")) + for header in e.headers.items(): + log.error(" %s: %s" % header) + log.error(" %s" % _("Error code: %s") % e.errcode) + log.error(" %s" % _("Error message: %s") % e.errmsg) + + # If an unhandled error code appeared, we raise an + # error. + raise + + except xmlrpclib.Fault: + raise + else: # If request was successful, we can break the loop. break @@ -87,13 +106,12 @@ class XMLRPCMixin: time.sleep(timeout) else: - log.error("Maximum number of tries was reached. Giving up.") - # XXX need better exception here. - raise Exception, "Could not fulfill request." + raise XMLRPCTransportError, _("Maximum number of tries was reached. Giving up.") return ret + class XMLRPCTransport(XMLRPCMixin, xmlrpclib.Transport): """ Handles the XMLRPC connection over HTTP. diff --git a/python/pakfire/errors.py b/python/pakfire/errors.py index 2017b65e7..c0f711fc0 100644 --- a/python/pakfire/errors.py +++ b/python/pakfire/errors.py @@ -92,3 +92,19 @@ class SignatureError(Error): class TransactionCheckError(Error): message = _("Transaction test was not successful") + + +class XMLRPCError(Error): + message = _("Generic XMLRPC error.") + + +class XMLRPCForbiddenError(XMLRPCError): + message = _("You are forbidden to perform this action. Maybe you need to check your credentials.") + + +class XMLRPCNotFoundError(XMLRPCError): + message = _("Could not find the requested URL.") + + +class XMLRPCTransportError(XMLRPCError): + message = _("An unforseable problem on the XML-RPC transport connection occured.") -- 2.39.5