From: Michael Tremer Date: Sat, 31 Mar 2012 16:57:05 +0000 (+0200) Subject: Remove localinstall command and unify install command. X-Git-Tag: 0.9.22~41 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=4fffe3c4506bbe17c63496b8f2952cf1c46a9b14;p=pakfire.git Remove localinstall command and unify install command. --- diff --git a/po/pakfire.pot b/po/pakfire.pot index 1d83e6d3c..db0168811 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-03-29 18:01+0200\n" +"POT-Creation-Date: 2012-03-31 18:53+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -88,51 +88,50 @@ msgstr "" msgid "Ignored arguments:" msgstr "" -#: ../python/pakfire/base.py:295 ../python/pakfire/base.py:343 -#: ../python/pakfire/base.py:397 ../python/pakfire/base.py:465 -#: ../python/pakfire/base.py:500 ../python/pakfire/base.py:558 -#: ../python/pakfire/base.py:578 -msgid "Nothing to do" -msgstr "" - -#: ../python/pakfire/base.py:332 -msgid "There are no packages to install." +#: ../python/pakfire/base.py:316 +msgid "Local install repository" msgstr "" -#: ../python/pakfire/base.py:387 +#: ../python/pakfire/base.py:373 #, python-format msgid "Could not find any installed package providing \"%s\"." msgstr "" -#: ../python/pakfire/base.py:393 +#: ../python/pakfire/base.py:379 #, python-format msgid "Multiple reinstall candidates for \"%(pattern)s\": %(pkgs)s" msgstr "" -#: ../python/pakfire/base.py:422 +#: ../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 +msgid "Nothing to do" +msgstr "" + +#: ../python/pakfire/base.py:408 #, python-format msgid "Could not find package %s in a remote repository." msgstr "" -#: ../python/pakfire/base.py:492 +#: ../python/pakfire/base.py:480 #, python-format msgid "Excluding %s." msgstr "" -#: ../python/pakfire/base.py:544 +#: ../python/pakfire/base.py:532 #, python-format msgid "\"%s\" package does not seem to be installed." msgstr "" -#: ../python/pakfire/base.py:690 +#: ../python/pakfire/base.py:682 msgid "Build command has failed." msgstr "" -#: ../python/pakfire/base.py:725 +#: ../python/pakfire/base.py:717 msgid "New repository" msgstr "" -#: ../python/pakfire/base.py:761 +#: ../python/pakfire/base.py:753 msgid "Everything is fine." msgstr "" @@ -167,86 +166,93 @@ msgstr "" msgid "Extracting" msgstr "" -#: ../python/pakfire/builder.py:690 +#: ../python/pakfire/builder.py:682 msgid "You cannot run a build when no package was given." msgstr "" -#: ../python/pakfire/builder.py:695 +#: ../python/pakfire/builder.py:687 #, python-format msgid "Could not find makefile in build root: %s" msgstr "" -#: ../python/pakfire/builder.py:716 +#: ../python/pakfire/builder.py:712 msgid "Build failed." msgstr "" -#: ../python/pakfire/builder.py:718 +#: ../python/pakfire/builder.py:714 msgid "The build command failed. See logfile for details." msgstr "" +#: ../python/pakfire/builder.py:728 +msgid "Running installation test..." +msgstr "" + +#: ../python/pakfire/builder.py:734 +msgid "Installation test succeeded." +msgstr "" + #. Create a progressbar. -#: ../python/pakfire/builder.py:769 -#, python-format -msgid "Signing files (%s)" +#: ../python/pakfire/builder.py:771 +msgid "Signing packages..." msgstr "" -#: ../python/pakfire/builder.py:801 +#: ../python/pakfire/builder.py:805 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:831 +#: ../python/pakfire/builder.py:835 msgid "Creating filelist..." msgstr "" #. Create a nice progressbar. -#: ../python/pakfire/builder.py:850 +#: ../python/pakfire/builder.py:854 msgid "Compressing files..." msgstr "" -#: ../python/pakfire/builder.py:869 +#: ../python/pakfire/builder.py:873 #, python-format msgid "Cache file was successfully created at %s." msgstr "" -#: ../python/pakfire/builder.py:870 +#: ../python/pakfire/builder.py:874 #, 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:881 +#: ../python/pakfire/builder.py:885 msgid "Extracting files..." msgstr "" #. Update all packages. -#: ../python/pakfire/builder.py:901 +#: ../python/pakfire/builder.py:905 msgid "Updating packages from cache..." msgstr "" #. Package the result. #. Make all these little package from the build environment. -#: ../python/pakfire/builder.py:1029 +#: ../python/pakfire/builder.py:1033 msgid "Creating packages:" msgstr "" #. Execute the buildscript of this stage. -#: ../python/pakfire/builder.py:1043 +#: ../python/pakfire/builder.py:1047 #, python-format msgid "Running stage %s:" msgstr "" -#: ../python/pakfire/builder.py:1061 +#: ../python/pakfire/builder.py:1065 #, python-format msgid "Could not remove static libraries: %s" msgstr "" -#: ../python/pakfire/builder.py:1067 +#: ../python/pakfire/builder.py:1071 msgid "Compressing man pages did not complete successfully." msgstr "" -#: ../python/pakfire/builder.py:1087 +#: ../python/pakfire/builder.py:1091 msgid "Extracting debuginfo did not complete with success. Aborting build." msgstr "" @@ -258,594 +264,590 @@ msgstr "" msgid "The path where pakfire should operate in." msgstr "" -#: ../python/pakfire/cli.py:129 +#: ../python/pakfire/cli.py:127 msgid "Enable verbose output." msgstr "" -#: ../python/pakfire/cli.py:132 +#: ../python/pakfire/cli.py:130 msgid "Path to a configuration file to load." msgstr "" -#: ../python/pakfire/cli.py:136 +#: ../python/pakfire/cli.py:134 msgid "Disable a repository temporarily." msgstr "" -#: ../python/pakfire/cli.py:139 +#: ../python/pakfire/cli.py:137 msgid "Enable a repository temporarily." msgstr "" -#: ../python/pakfire/cli.py:143 +#: ../python/pakfire/cli.py:141 msgid "Run pakfire in offline mode." msgstr "" -#: ../python/pakfire/cli.py:148 +#: ../python/pakfire/cli.py:146 msgid "Install one or more packages to the system." msgstr "" -#: ../python/pakfire/cli.py:150 +#: ../python/pakfire/cli.py:148 msgid "Give name of at least one package to install." msgstr "" -#: ../python/pakfire/cli.py:156 -msgid "Install one or more packages from the filesystem." -msgstr "" - -#: ../python/pakfire/cli.py:158 -msgid "Give filename of at least one package." -msgstr "" - -#: ../python/pakfire/cli.py:164 +#: ../python/pakfire/cli.py:154 msgid "Reinstall one or more packages." msgstr "" -#: ../python/pakfire/cli.py:166 +#: ../python/pakfire/cli.py:156 msgid "Give name of at least one package to reinstall." msgstr "" -#: ../python/pakfire/cli.py:172 +#: ../python/pakfire/cli.py:162 msgid "Remove one or more packages from the system." msgstr "" -#: ../python/pakfire/cli.py:174 +#: ../python/pakfire/cli.py:164 msgid "Give name of at least one package to remove." msgstr "" -#: ../python/pakfire/cli.py:180 +#: ../python/pakfire/cli.py:170 msgid "Give a name of a package to update or leave emtpy for all." msgstr "" -#: ../python/pakfire/cli.py:182 +#: ../python/pakfire/cli.py:172 msgid "Exclude package from update." msgstr "" -#: ../python/pakfire/cli.py:184 ../python/pakfire/cli.py:209 +#: ../python/pakfire/cli.py:174 ../python/pakfire/cli.py:199 msgid "Allow changing the vendor of packages." msgstr "" -#: ../python/pakfire/cli.py:186 ../python/pakfire/cli.py:211 +#: ../python/pakfire/cli.py:176 ../python/pakfire/cli.py:201 msgid "Allow changing the architecture of packages." msgstr "" -#: ../python/pakfire/cli.py:191 +#: ../python/pakfire/cli.py:181 msgid "Update the whole system or one specific package." msgstr "" -#: ../python/pakfire/cli.py:198 +#: ../python/pakfire/cli.py:188 msgid "Check, if there are any updates available." msgstr "" -#: ../python/pakfire/cli.py:205 +#: ../python/pakfire/cli.py:195 msgid "Downgrade one or more packages." msgstr "" -#: ../python/pakfire/cli.py:207 +#: ../python/pakfire/cli.py:197 msgid "Give a name of a package to downgrade." msgstr "" -#: ../python/pakfire/cli.py:217 +#: ../python/pakfire/cli.py:207 msgid "Print some information about the given package(s)." msgstr "" -#: ../python/pakfire/cli.py:219 +#: ../python/pakfire/cli.py:209 msgid "Give at least the name of one package." msgstr "" -#: ../python/pakfire/cli.py:225 +#: ../python/pakfire/cli.py:215 msgid "Search for a given pattern." msgstr "" -#: ../python/pakfire/cli.py:227 +#: ../python/pakfire/cli.py:217 msgid "A pattern to search for." msgstr "" -#: ../python/pakfire/cli.py:233 +#: ../python/pakfire/cli.py:223 msgid "Get a list of packages that provide a given file or feature." msgstr "" -#: ../python/pakfire/cli.py:235 +#: ../python/pakfire/cli.py:225 msgid "File or feature to search for." msgstr "" -#: ../python/pakfire/cli.py:241 +#: ../python/pakfire/cli.py:231 msgid "Get list of packages that belong to the given group." msgstr "" -#: ../python/pakfire/cli.py:243 +#: ../python/pakfire/cli.py:233 msgid "Group name to search for." msgstr "" -#: ../python/pakfire/cli.py:249 +#: ../python/pakfire/cli.py:239 msgid "Install all packages that belong to the given group." msgstr "" -#: ../python/pakfire/cli.py:251 +#: ../python/pakfire/cli.py:241 msgid "Group name." msgstr "" -#: ../python/pakfire/cli.py:257 +#: ../python/pakfire/cli.py:247 msgid "List all currently enabled repositories." msgstr "" -#: ../python/pakfire/cli.py:261 +#: ../python/pakfire/cli.py:251 msgid "Cleanup commands." msgstr "" -#: ../python/pakfire/cli.py:269 +#: ../python/pakfire/cli.py:259 msgid "Cleanup all temporary files." msgstr "" -#: ../python/pakfire/cli.py:275 +#: ../python/pakfire/cli.py:265 msgid "Check the system for any errors." msgstr "" -#: ../python/pakfire/cli.py:281 +#: ../python/pakfire/cli.py:271 msgid "Check the dependencies for a particular package." msgstr "" -#: ../python/pakfire/cli.py:283 +#: ../python/pakfire/cli.py:273 msgid "Give name of at least one package to check." msgstr "" -#: ../python/pakfire/cli.py:359 ../python/pakfire/transaction.py:359 +#: ../python/pakfire/cli.py:346 ../python/pakfire/transaction.py:359 msgid "Repository" msgstr "" -#: ../python/pakfire/cli.py:359 +#: ../python/pakfire/cli.py:346 msgid "Enabled" msgstr "" -#: ../python/pakfire/cli.py:359 ../python/pakfire/cli.py:1039 +#: ../python/pakfire/cli.py:346 ../python/pakfire/cli.py:1036 msgid "Priority" msgstr "" -#: ../python/pakfire/cli.py:359 ../python/pakfire/cli.py:1084 +#: ../python/pakfire/cli.py:346 ../python/pakfire/cli.py:1081 msgid "Packages" msgstr "" -#: ../python/pakfire/cli.py:371 +#: ../python/pakfire/cli.py:358 msgid "Cleaning up everything..." msgstr "" -#: ../python/pakfire/cli.py:392 +#: ../python/pakfire/cli.py:379 msgid "You cannot run pakfire-builder in a pakfire chroot." msgstr "" -#: ../python/pakfire/cli.py:395 ../python/pakfire/cli.py:737 +#: ../python/pakfire/cli.py:382 ../python/pakfire/cli.py:728 msgid "Pakfire builder command line interface." msgstr "" -#: ../python/pakfire/cli.py:453 +#: ../python/pakfire/cli.py:440 msgid "Update the package indexes." msgstr "" -#: ../python/pakfire/cli.py:459 ../python/pakfire/cli.py:757 +#: ../python/pakfire/cli.py:446 ../python/pakfire/cli.py:748 msgid "Build one or more packages." msgstr "" -#: ../python/pakfire/cli.py:461 ../python/pakfire/cli.py:646 -#: ../python/pakfire/cli.py:759 +#: ../python/pakfire/cli.py:448 ../python/pakfire/cli.py:637 +#: ../python/pakfire/cli.py:750 msgid "Give name of at least one package to build." msgstr "" -#: ../python/pakfire/cli.py:465 ../python/pakfire/cli.py:763 -#: ../python/pakfire/cli.py:842 +#: ../python/pakfire/cli.py:452 ../python/pakfire/cli.py:754 +#: ../python/pakfire/cli.py:839 msgid "Build the package for the given architecture." msgstr "" -#: ../python/pakfire/cli.py:467 ../python/pakfire/cli.py:495 -#: ../python/pakfire/cli.py:765 +#: ../python/pakfire/cli.py:454 ../python/pakfire/cli.py:484 +#: ../python/pakfire/cli.py:756 msgid "Path were the output files should be copied to." msgstr "" -#: ../python/pakfire/cli.py:469 ../python/pakfire/cli.py:484 -#: ../python/pakfire/cli.py:767 +#: ../python/pakfire/cli.py:456 ../python/pakfire/cli.py:473 +#: ../python/pakfire/cli.py:758 msgid "Mode to run in. Is either 'release' or 'development' (default)." msgstr "" -#: ../python/pakfire/cli.py:471 +#: ../python/pakfire/cli.py:458 msgid "Run a shell after a successful build." msgstr "" -#: ../python/pakfire/cli.py:476 +#: ../python/pakfire/cli.py:460 +msgid "Do not perform the install test." +msgstr "" + +#: ../python/pakfire/cli.py:465 msgid "Go into a shell." msgstr "" -#: ../python/pakfire/cli.py:478 +#: ../python/pakfire/cli.py:467 msgid "Give name of a package." msgstr "" -#: ../python/pakfire/cli.py:482 +#: ../python/pakfire/cli.py:471 msgid "Emulated architecture in the shell." msgstr "" -#: ../python/pakfire/cli.py:489 +#: ../python/pakfire/cli.py:478 msgid "Generate a source package." msgstr "" -#: ../python/pakfire/cli.py:491 +#: ../python/pakfire/cli.py:480 msgid "Give name(s) of a package(s)." msgstr "" -#: ../python/pakfire/cli.py:501 +#: ../python/pakfire/cli.py:489 msgid "Create a build environment cache." msgstr "" -#: ../python/pakfire/cli.py:511 +#: ../python/pakfire/cli.py:499 msgid "Create a new build environment cache." msgstr "" -#: ../python/pakfire/cli.py:516 +#: ../python/pakfire/cli.py:504 msgid "Remove all cached build environments." msgstr "" -#: ../python/pakfire/cli.py:593 +#: ../python/pakfire/cli.py:584 #, python-format msgid "Removing environment cache file: %s..." msgstr "" -#: ../python/pakfire/cli.py:599 +#: ../python/pakfire/cli.py:590 #, python-format msgid "Could not remove file: %s" msgstr "" -#: ../python/pakfire/cli.py:605 +#: ../python/pakfire/cli.py:596 msgid "Pakfire server command line interface." msgstr "" -#: ../python/pakfire/cli.py:644 +#: ../python/pakfire/cli.py:635 msgid "Send a scrach build job to the server." msgstr "" -#: ../python/pakfire/cli.py:648 +#: ../python/pakfire/cli.py:639 msgid "Limit build to only these architecture(s)." msgstr "" -#: ../python/pakfire/cli.py:654 +#: ../python/pakfire/cli.py:645 msgid "Send a keepalive to the server." msgstr "" -#: ../python/pakfire/cli.py:661 +#: ../python/pakfire/cli.py:652 msgid "Update all repositories." msgstr "" -#: ../python/pakfire/cli.py:667 +#: ../python/pakfire/cli.py:658 msgid "Repository management commands." msgstr "" -#: ../python/pakfire/cli.py:675 +#: ../python/pakfire/cli.py:666 msgid "Create a new repository index." msgstr "" -#: ../python/pakfire/cli.py:677 +#: ../python/pakfire/cli.py:668 msgid "Path to the packages." msgstr "" -#: ../python/pakfire/cli.py:679 +#: ../python/pakfire/cli.py:670 msgid "Path to input packages." msgstr "" -#: ../python/pakfire/cli.py:681 +#: ../python/pakfire/cli.py:672 msgid "Key to sign the repository with." msgstr "" -#: ../python/pakfire/cli.py:686 +#: ../python/pakfire/cli.py:677 msgid "Dump some information about this machine." msgstr "" -#: ../python/pakfire/cli.py:769 +#: ../python/pakfire/cli.py:760 msgid "Do not verify build dependencies." msgstr "" -#: ../python/pakfire/cli.py:796 +#: ../python/pakfire/cli.py:793 msgid "Pakfire client command line interface." msgstr "" -#: ../python/pakfire/cli.py:836 +#: ../python/pakfire/cli.py:833 msgid "Build a package remotely." msgstr "" -#: ../python/pakfire/cli.py:838 +#: ../python/pakfire/cli.py:835 msgid "Give name of a package to build." msgstr "" -#: ../python/pakfire/cli.py:847 +#: ../python/pakfire/cli.py:844 msgid "Print some information about this host." msgstr "" -#: ../python/pakfire/cli.py:853 +#: ../python/pakfire/cli.py:850 msgid "Check the connection to the hub." msgstr "" -#: ../python/pakfire/cli.py:858 +#: ../python/pakfire/cli.py:855 msgid "Show information about build jobs." msgstr "" -#: ../python/pakfire/cli.py:868 +#: ../python/pakfire/cli.py:865 msgid "Show a list of all active jobs." msgstr "" -#: ../python/pakfire/cli.py:873 +#: ../python/pakfire/cli.py:870 msgid "Show a list of all recently finished of failed build jobs." msgstr "" -#: ../python/pakfire/cli.py:878 +#: ../python/pakfire/cli.py:875 msgid "Show details about given build job." msgstr "" -#: ../python/pakfire/cli.py:879 +#: ../python/pakfire/cli.py:876 msgid "The ID of the build job." msgstr "" -#: ../python/pakfire/cli.py:884 +#: ../python/pakfire/cli.py:881 msgid "Show information about builds." msgstr "" -#: ../python/pakfire/cli.py:892 +#: ../python/pakfire/cli.py:889 msgid "Show details about the given build." msgstr "" -#: ../python/pakfire/cli.py:893 +#: ../python/pakfire/cli.py:890 msgid "The ID of the build." msgstr "" -#: ../python/pakfire/cli.py:941 ../python/pakfire/server.py:303 +#: ../python/pakfire/cli.py:938 ../python/pakfire/server.py:303 msgid "Hostname" msgstr "" -#: ../python/pakfire/cli.py:942 +#: ../python/pakfire/cli.py:939 msgid "Pakfire hub" msgstr "" -#: ../python/pakfire/cli.py:945 +#: ../python/pakfire/cli.py:942 msgid "Username" msgstr "" #. Hardware information -#: ../python/pakfire/cli.py:949 ../python/pakfire/server.py:307 +#: ../python/pakfire/cli.py:946 ../python/pakfire/server.py:307 msgid "Hardware information" msgstr "" -#: ../python/pakfire/cli.py:950 ../python/pakfire/server.py:308 +#: ../python/pakfire/cli.py:947 ../python/pakfire/server.py:308 msgid "CPU model" msgstr "" -#: ../python/pakfire/cli.py:951 ../python/pakfire/server.py:309 +#: ../python/pakfire/cli.py:948 ../python/pakfire/server.py:309 msgid "Memory" msgstr "" -#: ../python/pakfire/cli.py:953 ../python/pakfire/server.py:311 +#: ../python/pakfire/cli.py:950 ../python/pakfire/server.py:311 msgid "Native arch" msgstr "" -#: ../python/pakfire/cli.py:955 +#: ../python/pakfire/cli.py:952 msgid "Default arch" msgstr "" -#: ../python/pakfire/cli.py:957 ../python/pakfire/server.py:313 +#: ../python/pakfire/cli.py:954 ../python/pakfire/server.py:313 msgid "Supported arches" msgstr "" -#: ../python/pakfire/cli.py:970 +#: ../python/pakfire/cli.py:967 msgid "Your IP address" msgstr "" -#: ../python/pakfire/cli.py:975 +#: ../python/pakfire/cli.py:972 msgid "You are authenticated to the build service:" msgstr "" -#: ../python/pakfire/cli.py:981 +#: ../python/pakfire/cli.py:978 msgid "User name" msgstr "" -#: ../python/pakfire/cli.py:982 +#: ../python/pakfire/cli.py:979 msgid "Real name" msgstr "" -#: ../python/pakfire/cli.py:983 +#: ../python/pakfire/cli.py:980 msgid "Email address" msgstr "" -#: ../python/pakfire/cli.py:984 +#: ../python/pakfire/cli.py:981 msgid "Registered" msgstr "" -#: ../python/pakfire/cli.py:991 +#: ../python/pakfire/cli.py:988 msgid "You could not be authenticated to the build service." msgstr "" -#: ../python/pakfire/cli.py:1012 +#: ../python/pakfire/cli.py:1009 msgid "No ongoing jobs found." msgstr "" -#: ../python/pakfire/cli.py:1015 +#: ../python/pakfire/cli.py:1012 msgid "Active build jobs" msgstr "" -#: ../python/pakfire/cli.py:1021 +#: ../python/pakfire/cli.py:1018 msgid "No jobs found." msgstr "" -#: ../python/pakfire/cli.py:1024 +#: ../python/pakfire/cli.py:1021 msgid "Recently processed build jobs" msgstr "" -#: ../python/pakfire/cli.py:1031 +#: ../python/pakfire/cli.py:1028 #, python-format msgid "A build with ID %s could not be found." msgstr "" -#: ../python/pakfire/cli.py:1034 +#: ../python/pakfire/cli.py:1031 #, python-format msgid "Build: %(name)s" msgstr "" -#: ../python/pakfire/cli.py:1038 ../python/pakfire/cli.py:1066 +#: ../python/pakfire/cli.py:1035 ../python/pakfire/cli.py:1063 msgid "State" msgstr "" -#: ../python/pakfire/cli.py:1042 +#: ../python/pakfire/cli.py:1039 msgid "Jobs" msgstr "" -#: ../python/pakfire/cli.py:1055 +#: ../python/pakfire/cli.py:1052 #, python-format msgid "A job with ID %s could not be found." msgstr "" -#: ../python/pakfire/cli.py:1062 +#: ../python/pakfire/cli.py:1059 #, python-format msgid "Job: %(name)s" msgstr "" -#: ../python/pakfire/cli.py:1067 ../python/pakfire/packages/base.py:107 +#: ../python/pakfire/cli.py:1064 ../python/pakfire/packages/base.py:107 #: ../python/pakfire/transaction.py:358 msgid "Arch" msgstr "" -#: ../python/pakfire/cli.py:1072 ../python/pakfire/packages/base.py:142 +#: ../python/pakfire/cli.py:1069 ../python/pakfire/packages/base.py:142 msgid "Build host" msgstr "" -#: ../python/pakfire/cli.py:1077 +#: ../python/pakfire/cli.py:1074 msgid "Time created" msgstr "" -#: ../python/pakfire/cli.py:1078 +#: ../python/pakfire/cli.py:1075 msgid "Time started" msgstr "" -#: ../python/pakfire/cli.py:1079 +#: ../python/pakfire/cli.py:1076 msgid "Time finished" msgstr "" -#: ../python/pakfire/cli.py:1080 +#: ../python/pakfire/cli.py:1077 msgid "Duration" msgstr "" -#: ../python/pakfire/cli.py:1103 +#: ../python/pakfire/cli.py:1100 msgid "Pakfire daemon command line interface." msgstr "" -#: ../python/pakfire/cli.py:1136 +#: ../python/pakfire/cli.py:1133 msgid "Pakfire key command line interface." msgstr "" -#: ../python/pakfire/cli.py:1182 +#: ../python/pakfire/cli.py:1179 msgid "Initialize the local keyring." msgstr "" -#: ../python/pakfire/cli.py:1188 ../python/pakfire/cli.py:1198 +#: ../python/pakfire/cli.py:1185 ../python/pakfire/cli.py:1195 msgid "Import a key from file." msgstr "" -#: ../python/pakfire/cli.py:1190 +#: ../python/pakfire/cli.py:1187 msgid "The real name of the owner of this key." msgstr "" -#: ../python/pakfire/cli.py:1192 +#: ../python/pakfire/cli.py:1189 msgid "The email address of the owner of this key." msgstr "" -#: ../python/pakfire/cli.py:1200 +#: ../python/pakfire/cli.py:1197 msgid "Filename of that key to import." msgstr "" -#: ../python/pakfire/cli.py:1206 +#: ../python/pakfire/cli.py:1203 msgid "Export a key to a file." msgstr "" -#: ../python/pakfire/cli.py:1208 +#: ../python/pakfire/cli.py:1205 msgid "The ID of the key to export." msgstr "" -#: ../python/pakfire/cli.py:1210 +#: ../python/pakfire/cli.py:1207 msgid "Write the key to this file." msgstr "" -#: ../python/pakfire/cli.py:1216 +#: ../python/pakfire/cli.py:1213 msgid "Delete a key from the local keyring." msgstr "" -#: ../python/pakfire/cli.py:1218 +#: ../python/pakfire/cli.py:1215 msgid "The ID of the key to delete." msgstr "" -#: ../python/pakfire/cli.py:1224 +#: ../python/pakfire/cli.py:1221 msgid "List all imported keys." msgstr "" -#: ../python/pakfire/cli.py:1230 +#: ../python/pakfire/cli.py:1227 msgid "Sign one or more packages." msgstr "" -#: ../python/pakfire/cli.py:1232 +#: ../python/pakfire/cli.py:1229 msgid "Key that is used sign the package(s)." msgstr "" -#: ../python/pakfire/cli.py:1234 +#: ../python/pakfire/cli.py:1231 msgid "Package(s) to sign." msgstr "" -#: ../python/pakfire/cli.py:1240 +#: ../python/pakfire/cli.py:1237 msgid "Verify one or more packages." msgstr "" -#: ../python/pakfire/cli.py:1244 +#: ../python/pakfire/cli.py:1241 msgid "Package(s) to verify." msgstr "" -#: ../python/pakfire/cli.py:1255 +#: ../python/pakfire/cli.py:1252 msgid "Generating the key may take a moment..." msgstr "" -#: ../python/pakfire/cli.py:1303 +#: ../python/pakfire/cli.py:1300 #, python-format msgid "Signing %s..." msgstr "" -#: ../python/pakfire/cli.py:1320 +#: ../python/pakfire/cli.py:1317 #, python-format msgid "Verifying %s..." msgstr "" -#: ../python/pakfire/cli.py:1330 +#: ../python/pakfire/cli.py:1327 msgid "This signature is valid." msgstr "" -#: ../python/pakfire/cli.py:1333 +#: ../python/pakfire/cli.py:1330 msgid "Unknown key" msgstr "" -#: ../python/pakfire/cli.py:1334 +#: ../python/pakfire/cli.py:1331 msgid "Could not check if this signature is valid." msgstr "" -#: ../python/pakfire/cli.py:1337 ../python/pakfire/keyring.py:114 +#: ../python/pakfire/cli.py:1334 ../python/pakfire/keyring.py:114 #, python-format msgid "Created: %s" msgstr "" -#: ../python/pakfire/cli.py:1341 ../python/pakfire/keyring.py:117 +#: ../python/pakfire/cli.py:1338 ../python/pakfire/keyring.py:117 #, python-format msgid "Expires: %s" msgstr "" @@ -917,7 +919,7 @@ msgstr "" msgid "Running pakfire-build in a pakfire container?" msgstr "" -#: ../python/pakfire/errors.py:94 ../python/pakfire/transaction.py:427 +#: ../python/pakfire/errors.py:94 ../python/pakfire/transaction.py:425 msgid "Transaction test was not successful" msgstr "" @@ -1166,35 +1168,40 @@ msgstr "" msgid "Compressing database..." msgstr "" -#: ../python/pakfire/repository/remote.py:154 +#: ../python/pakfire/repository/remote.py:155 #, python-format msgid "Cannot update repository metadata for %s when in offline mode." msgstr "" -#: ../python/pakfire/repository/remote.py:173 +#: ../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:212 +#: ../python/pakfire/repository/remote.py:220 #, python-format msgid "Cannot download package database for %s in offline mode." msgstr "" -#: ../python/pakfire/repository/remote.py:220 +#: ../python/pakfire/repository/remote.py:228 #, python-format msgid "%s: package database" msgstr "" -#: ../python/pakfire/repository/remote.py:294 +#: ../python/pakfire/repository/remote.py:302 #, python-format msgid "Cannot download this file in offline mode: %s" msgstr "" -#: ../python/pakfire/repository/remote.py:314 +#: ../python/pakfire/repository/remote.py:322 msgid "The checksum of the downloaded file did not match." msgstr "" -#: ../python/pakfire/repository/remote.py:315 +#: ../python/pakfire/repository/remote.py:323 msgid "Trying an other mirror." msgstr "" @@ -1305,37 +1312,37 @@ msgstr "" msgid "Freed size: %s" msgstr "" -#: ../python/pakfire/transaction.py:402 +#: ../python/pakfire/transaction.py:400 msgid "Is this okay?" msgstr "" -#: ../python/pakfire/transaction.py:408 +#: ../python/pakfire/transaction.py:406 msgid "Running Transaction Test" msgstr "" -#: ../python/pakfire/transaction.py:420 +#: ../python/pakfire/transaction.py:418 msgid "Transaction Test Succeeded" msgstr "" #. Make a nice progressbar. -#: ../python/pakfire/transaction.py:449 +#: ../python/pakfire/transaction.py:451 msgid "Verifying signatures..." msgstr "" -#: ../python/pakfire/transaction.py:481 +#: ../python/pakfire/transaction.py:483 #, python-format msgid "Found %s signature error(s)!" msgstr "" -#: ../python/pakfire/transaction.py:486 +#: ../python/pakfire/transaction.py:488 msgid "Going on because we are running in permissive mode." msgstr "" -#: ../python/pakfire/transaction.py:487 +#: ../python/pakfire/transaction.py:489 msgid "This is dangerous!" msgstr "" -#: ../python/pakfire/transaction.py:507 +#: ../python/pakfire/transaction.py:509 msgid "Running transaction" msgstr "" diff --git a/python/pakfire/actions.py b/python/pakfire/actions.py index 18d9fc4f4..1e37f6069 100644 --- a/python/pakfire/actions.py +++ b/python/pakfire/actions.py @@ -349,7 +349,7 @@ class ActionCleanup(Action): Action.__init__(self, *args, **kwargs) # XXX This is ugly, but works for the moment. - self.pkg = self.local.index.db.get_package_from_solv(self.pkg_solv) + self.pkg = self.local.db.get_package_from_solv(self.pkg_solv) assert self.pkg def check(self, check): diff --git a/python/pakfire/api.py b/python/pakfire/api.py index e4a278b23..9e57edd7a 100644 --- a/python/pakfire/api.py +++ b/python/pakfire/api.py @@ -36,11 +36,6 @@ def resolvdep(pkgs, **pakfire_args): return pakfire.resolvdep(pkgs) -def localinstall(files, **pakfire_args): - pakfire = Pakfire(**pakfire_args) - - return pakfire.localinstall(files) - def reinstall(pkgs, **pakfire_args): pakfire = Pakfire(**pakfire_args) diff --git a/python/pakfire/base.py b/python/pakfire/base.py index 80c398ae7..e9beb59c7 100644 --- a/python/pakfire/base.py +++ b/python/pakfire/base.py @@ -280,88 +280,71 @@ class Pakfire(object): # Return the solver so one can do stuff with it... return solver - def install(self, requires, interactive=True, logger=None, **kwargs): + def install(self, requires, interactive=True, logger=None, signatures_mode=None, **kwargs): if not logger: logger = logging.getLogger("pakfire") - # Do the solving. - request = self.create_request(install=requires) - solver = self.solv(request, logger=logger, interactive=interactive, **kwargs) - - if not solver.status: - if not interactive: - raise DependencyError - - logger.info(_("Nothing to do")) - return - - # Create the transaction. - t = solver.transaction - - if interactive: - # Ask if the user acknowledges the transaction. - if not t.cli_yesno(): - return - - else: - t.dump(logger=logger) + # Pointer to temporary repository. + repo = None - # Run the transaction. - t.run(logger=logger) + # Sort out what we got... + files = [] + relations = [] - def localinstall(self, files, yes=None, allow_uninstall=False, logger=None): - if logger is None: - logger = logging.getLogger("pakfire") + for req in requires: + if isinstance(req, packages.Package): + relations.append(req) + continue - repo_name = repo_desc = "localinstall" + # This looks like a file. + if req.endswith(".%s" % PACKAGE_EXTENSION) and os.path.exists(req): + files.append(req) + continue - # Create a new repository that holds all packages we passed on - # the commandline. - repo = repository.RepositoryDir(self, repo_name, repo_desc, - os.path.join(LOCAL_TMP_PATH, "repo_%s" % util.random_string())) + # We treat the rest as relations. The solver will return any errors. + relations.append(req) - # Register the repository. - self.repos.add_repo(repo) + # Redefine requires, which will be the list that will be passed to the + # solver. + requires = relations try: - # Add all packages to the repository index. - repo.add_packages(*files) + # If we have got files to install, we need to create a temporary repository + # called 'localinstall'. + # XXX FIX TMP PATH + if files: + repo = repository.RepositoryDir(self, "localinstall", _("Local install repository"), + os.path.join(LOCAL_TMP_PATH, "repo_%s" % util.random_string())) - # Break if no packages were added at all. - if not len(repo): - log.critical(_("There are no packages to install.")) - return + # Register the repository. + self.repos.add_repo(repo) - # Create a new request that installs all solvables from the - # repository. - request = self.create_request(install=repo) + # Add all packages to the repository index. + repo.add_packages(*files) - solver = self.solv(request, logger=logger, uninstall=allow_uninstall) + # Add all packages to the requires. + requires += repo - # If solving was not possible, we exit here. - if not solver.status: - logger.info(_("Nothing to do")) - return + # Do the solving. + request = self.create_request(install=requires) + solver = self.solv(request, logger=logger, interactive=interactive, **kwargs) - # Create transaction. + # Create the transaction. t = solver.transaction + t.dump(logger=logger) - if yes is None: - # Ask the user if this is okay. - if not t.cli_yesno(): - return - elif yes: - t.dump(logger=logger) - else: + # Ask if the user acknowledges the transaction. + if interactive and not t.cli_yesno(): return - # If okay, run the transcation. - t.run(logger=logger) + # Run the transaction. + t.run(logger=logger, signatures_mode=signatures_mode) finally: - # Remove the temporary copy of the repository we have created earlier. - repo.remove() - self.repos.rem_repo(repo) + if repo: + # Remove the temporary repository we have created earlier. + repo.remove() + self.repos.rem_repo(repo) def reinstall(self, pkgs, strict=False): """ @@ -370,6 +353,9 @@ class Pakfire(object): If strict is True, only a package with excatly the same UUID will replace the currently installed one. """ + if logger is None: + logger = logging.getLogger("pakfire") + # XXX it is possible to install packages without fulfulling # all dependencies. @@ -384,17 +370,17 @@ class Pakfire(object): _pkgs.append(pkg) if not _pkgs: - log.warning(_("Could not find any installed package providing \"%s\".") \ + logger.warning(_("Could not find any installed package providing \"%s\".") \ % pattern) elif len(_pkgs) == 1: reinstall_pkgs.append(_pkgs[0]) #t.add("reinstall", _pkgs[0]) else: - log.warning(_("Multiple reinstall candidates for \"%(pattern)s\": %(pkgs)s") \ + logger.warning(_("Multiple reinstall candidates for \"%(pattern)s\": %(pkgs)s") \ % { "pattern" : pattern, "pkgs" : ", ".join(p.friendly_name for p in sorted(_pkgs)) }) if not reinstall_pkgs: - log.info(_("Nothing to do")) + logger.info(_("Nothing to do")) return # Packages we want to replace. @@ -419,7 +405,7 @@ class Pakfire(object): _pkgs.append(_pkg) if not _pkgs: - log.warning(_("Could not find package %s in a remote repository.") % \ + logger.warning(_("Could not find package %s in a remote repository.") % \ pkg.friendly_name) else: # Sort packages to reflect repository priorities, etc... @@ -462,13 +448,15 @@ class Pakfire(object): t.sort() if not t: - log.info(_("Nothing to do")) + logger.info(_("Nothing to do")) return + t.dump(logger=logger) + if not t.cli_yesno(): return - t.run() + t.run(logger=logger) def update(self, pkgs=None, check=False, excludes=None, interactive=True, logger=None, **kwargs): """ @@ -508,10 +496,10 @@ class Pakfire(object): # Create the transaction. t = solver.transaction + t.dump(logger=logger) # Just exit here, because we won't do the transaction in this mode. if check: - t.dump(logger=logger) return # Ask the user if the transaction is okay. @@ -553,6 +541,7 @@ class Pakfire(object): # Create the transaction. t = solver.transaction + t.dump(logger=logger) if not t: log.info(_("Nothing to do")) @@ -573,6 +562,7 @@ class Pakfire(object): # Create the transaction. t = solver.transaction + t.dump() if not t: log.info(_("Nothing to do")) @@ -658,6 +648,7 @@ class Pakfire(object): try: # Build the package. b.build(install_test=install_test) + except BuildError: # Raise the error, if the user does not want to # have a shell. @@ -686,6 +677,7 @@ class Pakfire(object): try: b.build() + except Error: raise BuildError, _("Build command has failed.") @@ -763,6 +755,7 @@ class Pakfire(object): # Create the transaction. t = solver.transaction + t.dump() # Ask the user if okay. if not t.cli_yesno(): diff --git a/python/pakfire/builder.py b/python/pakfire/builder.py index d595a10b8..81fe54888 100644 --- a/python/pakfire/builder.py +++ b/python/pakfire/builder.py @@ -384,7 +384,7 @@ class BuildEnviron(object): if self.pkg: self.pkg.extract(_("Extracting"), prefix=self.build_dir) - def install(self, requires): + def install(self, requires, **kwargs): """ Install everything that is required in requires. """ @@ -392,24 +392,16 @@ class BuildEnviron(object): if not requires: return - try: - self.pakfire.install(requires, interactive=False, - allow_downgrade=True, logger=self.log) - - # Catch dependency errors and log it. - except DependencyError, e: - raise - - def install_test(self): - try: - self.pakfire.localinstall(self.find_result_packages(), yes=True, allow_uninstall=True, logger=self.log) + kwargs.update({ + "interactive" : False, + "logger" : self.log, + }) - # Dependency errors when trying to install the result packages are build errors. - except DependencyError, e: - # Dump all packages (for debugging). - self.dump() + if not kwargs.has_key("allow_downgrade"): + kwargs["allow_downgrade"] = True - raise BuildError, e + # Install everything. + self.pakfire.install(requires, **kwargs) def chrootPath(self, *args): # Remove all leading slashes @@ -712,6 +704,10 @@ class BuildEnviron(object): try: self.do(" ".join(build_command), logger=self.log) + # Perform the install test after the actual build. + if install_test: + self.install_test() + except Error: self.log.error(_("Build failed."), exc_info=True) @@ -725,13 +721,19 @@ class BuildEnviron(object): # Do the signing... self.sign(host_key) - # Perform install test. - if install_test: - self.install_test() - # Dump package information. self.dump() + def install_test(self): + self.log.info(_("Running installation test...")) + + # Install all packages that were built. + self.install(self.find_result_packages(), + uninstall=True, signatures_mode="disabled") + + self.log.info(_("Installation test succeeded.")) + self.log.info("") + def shell(self, args=[]): if not util.cli_is_interactive(): self.log.warning("Cannot run shell on non-interactive console.") @@ -766,7 +768,8 @@ class BuildEnviron(object): files = self.find_result_packages() # Create a progressbar. - p = util.make_progress(_("Signing files (%s)") % keyfp, len(files)) + print _("Signing packages...") + p = util.make_progress(keyfp, len(files)) i = 0 for file in files: @@ -784,6 +787,7 @@ class BuildEnviron(object): # Close progressbar. if p: p.finish() + print "" # Print an empty line. def dump(self): pkgs = [] diff --git a/python/pakfire/cli.py b/python/pakfire/cli.py index 04c7b8a27..2353b84cc 100644 --- a/python/pakfire/cli.py +++ b/python/pakfire/cli.py @@ -60,7 +60,6 @@ class Cli(object): self.sub_commands = self.parser.add_subparsers() self.parse_command_install() - self.parse_command_localinstall() self.parse_command_reinstall() self.parse_command_remove() self.parse_command_info() @@ -81,7 +80,6 @@ class Cli(object): self.action2func = { "install" : self.handle_install, - "localinstall" : self.handle_localinstall, "reinstall" : self.handle_reinstall, "remove" : self.handle_remove, "check_update" : self.handle_check_update, @@ -150,14 +148,6 @@ class Cli(object): help=_("Give name of at least one package to install.")) sub_install.add_argument("action", action="store_const", const="install") - def parse_command_localinstall(self): - # Implement the "localinstall" command. - sub_install = self.sub_commands.add_parser("localinstall", - help=_("Install one or more packages from the filesystem.")) - sub_install.add_argument("package", nargs="+", - help=_("Give filename of at least one package.")) - sub_install.add_argument("action", action="store_const", const="localinstall") - def parse_command_reinstall(self): # Implement the "reinstall" command. sub_install = self.sub_commands.add_parser("reinstall", @@ -327,9 +317,6 @@ class Cli(object): def handle_install(self): pakfire.install(self.args.package, **self.pakfire_args) - def handle_localinstall(self): - pakfire.localinstall(self.args.package, **self.pakfire_args) - def handle_reinstall(self): pakfire.reinstall(self.args.package, **self.pakfire_args) @@ -469,6 +456,8 @@ class CliBuilder(Cli): help=_("Mode to run in. Is either 'release' or 'development' (default).")) sub_build.add_argument("--after-shell", action="store_true", help=_("Run a shell after a successful build.")) + sub_build.add_argument("--no-install-test", action="store_true", + help=_("Do not perform the install test.")) def parse_command_shell(self): # Implement the "shell" command. @@ -494,7 +483,6 @@ class CliBuilder(Cli): sub_dist.add_argument("--resultdir", nargs="?", help=_("Path were the output files should be copied to.")) - def parse_command_cache(self): # Implement the "cache" command. sub_cache = self.sub_commands.add_parser("cache", @@ -530,7 +518,10 @@ class CliBuilder(Cli): else: raise FileNotFoundError, pkg - pakfire.build(pkg, builder_mode=self.args.mode, + # Check whether to enable the install test. + install_test = not self.args.no_install_test + + pakfire.build(pkg, builder_mode=self.args.mode, install_test=install_test, arch=self.args.arch, resultdirs=[self.args.resultdir,], shell=True, after_shell=self.args.after_shell, **self.pakfire_args) @@ -785,9 +776,15 @@ class CliBuilderIntern(Cli): else: disable_repos = None - pakfire._build(pkg, builder_mode=self.args.mode, config=conf, - disable_repos=disable_repos, arch=self.args.arch, - resultdir=self.args.resultdir) + kwargs = { + "arch" : self.args.arch, + "builder_mode" : self.args.mode, + "config" : conf, + "disable_repos" : disable_repos, + "resultdir" : self.args.resultdir, + } + + pakfire._build(pkg, **kwargs) class CliClient(Cli): diff --git a/python/pakfire/keyring.py b/python/pakfire/keyring.py index 598908ddb..af2ad7c3d 100644 --- a/python/pakfire/keyring.py +++ b/python/pakfire/keyring.py @@ -240,6 +240,8 @@ class Keyring(object): return signature.getvalue() def verify(self, signature, cleartext): + assert signature, "Empty signature?" + signature = io.BytesIO(signature) cleartext = io.BytesIO(cleartext) diff --git a/python/pakfire/packages/__init__.py b/python/pakfire/packages/__init__.py index c1c8cb022..9aabddccb 100644 --- a/python/pakfire/packages/__init__.py +++ b/python/pakfire/packages/__init__.py @@ -21,6 +21,7 @@ import tarfile +from base import Package from file import BinaryPackage, FilePackage, InnerTarFile, SourcePackage from installed import DatabasePackage, InstalledPackage from solv import SolvPackage diff --git a/python/pakfire/packages/base.py b/python/pakfire/packages/base.py index 464315d89..e27c3f77b 100644 --- a/python/pakfire/packages/base.py +++ b/python/pakfire/packages/base.py @@ -355,7 +355,7 @@ class Package(object): @property def signatures(self): - raise NotImplementedError + return [] @property def build_date(self): diff --git a/python/pakfire/packages/file.py b/python/pakfire/packages/file.py index 412f7ca2a..4f5696080 100644 --- a/python/pakfire/packages/file.py +++ b/python/pakfire/packages/file.py @@ -543,9 +543,12 @@ class FilePackage(Package): # Get the content of the signature file. f = a.extractfile(member.name) - ret[key_id] = f.read() + signature = f.read() f.close() + if signature: + ret[key_id] = signature + # Close the archive. a.close() diff --git a/python/pakfire/packages/solv.py b/python/pakfire/packages/solv.py index 66d4f37c4..84c127d5a 100644 --- a/python/pakfire/packages/solv.py +++ b/python/pakfire/packages/solv.py @@ -248,8 +248,3 @@ class SolvPackage(base.Package): def get_scriptlet(self, type): # XXX TODO return None - - #@property - #def signatures(self): - # # Solv packages do not have any signatures. - # return [] diff --git a/python/pakfire/transaction.py b/python/pakfire/transaction.py index 0ab7b8c77..98b3cd468 100644 --- a/python/pakfire/transaction.py +++ b/python/pakfire/transaction.py @@ -396,9 +396,7 @@ class Transaction(object): for line in s: logger.info(line) - def cli_yesno(self, logger=None): - self.dump(logger) - + def cli_yesno(self): return util.ask_user(_("Is this okay?")) def check(self, logger=None): @@ -426,11 +424,15 @@ class Transaction(object): raise TransactionCheckError, _("Transaction test was not successful") - def verify_signatures(self, logger): + def verify_signatures(self, mode=None, logger=None): """ Check the downloaded files for valid signatures. """ - mode = self.pakfire.config.get("signatures", "mode", "strict") + if not logger: + logger = log.getLogger("pakfire") + + if mode is None: + mode = self.pakfire.config.get("signatures", "mode", "strict") # If this disabled, we do nothing. if mode == "disabled": @@ -487,7 +489,7 @@ class Transaction(object): logger.warning(_("This is dangerous!")) logger.warning("") - def run(self, logger=None): + def run(self, logger=None, signatures_mode=None): assert not self.__need_sort, "Did you forget to sort the transaction?" if logger is None: @@ -499,7 +501,7 @@ class Transaction(object): self.download() # Verify signatures. - self.verify_signatures(logger=logger) + self.verify_signatures(mode=signatures_mode, logger=logger) # Run the transaction test self.check(logger=logger)