From 2cdadea157f1aa696f8322af391f9dbd18143baa Mon Sep 17 00:00:00 2001 From: DongHun Kwak Date: Mon, 2 Sep 2019 16:15:38 +0900 Subject: [PATCH] Imported Upstream version 17.4.0 --- VERSION.cmake | 6 +- package/libzypp.changes | 9 + po/ca.po | 17 +- po/da.po | 12 +- po/el.po | 247 ++++++++++----------- tests/zypp/Fetcher_test.cc | 4 +- .../complexdir-broken/subdir1/subdir1-file1.txt | 2 +- .../complexdir-broken/subdir1/subdir1-file2.txt | 2 +- tools/zypp-NameReqPrv.cc | 20 ++ zypp/Fetcher.cc | 236 ++++++++------------ zypp/KeyManager.cc | 98 ++++---- zypp/MediaSetAccess.h | 30 +++ zypp/PathInfo.h | 2 +- zypp/ZConfig.cc | 22 +- zypp/ZConfig.h | 25 ++- zypp/base/Flags.h | 2 +- zypp/misc/CheckAccessDeleted.cc | 6 +- zypp/target/TargetImpl.cc | 2 +- zypp/target/rpm/RpmDb.h | 4 +- 19 files changed, 405 insertions(+), 341 deletions(-) diff --git a/VERSION.cmake b/VERSION.cmake index 460b3e8..384393c 100644 --- a/VERSION.cmake +++ b/VERSION.cmake @@ -60,9 +60,9 @@ # SET(LIBZYPP_MAJOR "17") SET(LIBZYPP_COMPATMINOR "2") -SET(LIBZYPP_MINOR "3") -SET(LIBZYPP_PATCH "1") +SET(LIBZYPP_MINOR "4") +SET(LIBZYPP_PATCH "0") # -# LAST RELEASED: 17.3.1 (2) +# LAST RELEASED: 17.4.0 (2) # (The number in parenthesis is LIBZYPP_COMPATMINOR) #======= diff --git a/package/libzypp.changes b/package/libzypp.changes index ffe6595..b3534c0 100644 --- a/package/libzypp.changes +++ b/package/libzypp.changes @@ -1,4 +1,13 @@ ------------------------------------------------------------------- +Mon Jun 25 10:48:55 CEST 2018 - ma@suse.de + +- Flags: make it std=c++14 ready +- Replace 'redhat-release' with generic 'system-release' (#120) +- Ignore /var, /tmp and /proc in zypper ps (bsc#1096617) +- Show GPGME version in log +- version 17.4.0 (2) + +------------------------------------------------------------------- Thu Apr 26 18:07:11 CEST 2018 - ma@suse.de - Avoid zombie tar processes (bsc#1076192) diff --git a/po/ca.po b/po/ca.po index 92467b5..4ad0ec6 100644 --- a/po/ca.po +++ b/po/ca.po @@ -9,7 +9,7 @@ msgstr "" "Project-Id-Version: YaST (@memory@)\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2018-04-09 13:14+0200\n" -"PO-Revision-Date: 2018-04-09 14:41+0000\n" +"PO-Revision-Date: 2018-05-23 22:01+0000\n" "Last-Translator: David Medina \n" "Language-Team: Catalan " "\n" @@ -4204,8 +4204,7 @@ msgstr "No es pot obrir el fitxer %s per a l'escriptura." #: zypp/RepoManager.cc:865 #, boost-format msgid "Unknown service '%1%': Removing orphaned service repository '%2%'" -msgstr "" -"Servei desconegut \"%1%\": Eliminant el repositori de serveis orfes %2%" +msgstr "Servei desconegut \"%1%\": suprimint el repositori de serveis orfe %2%" #. we will throw this later if no URL checks out fine #: zypp/RepoManager.cc:1092 @@ -4274,7 +4273,7 @@ msgstr "Nom de repositori no vàlid a \"%s\"" #: zypp/RepoManager.cc:1746 #, c-format, boost-format msgid "Removing repository '%s'" -msgstr "Eliminant el repositori %s" +msgstr "Suprimint el repositori %s" #: zypp/RepoManager.cc:1765 zypp/RepoManager.cc:1843 msgid "Can't figure out where the repo is stored." @@ -4640,7 +4639,7 @@ msgstr "La comprovació de l'applydeltarpm ha fallat." #: zypp/repo/PackageProvider.cc:559 msgid "applydeltarpm failed." -msgstr "Ha fallat l'aplicació del Delta rpm." +msgstr "ha fallat aplicar de l'RPM delta." #: zypp/repo/RepoException.cc:129 msgid "Service plugin does not support changing an attribute." @@ -4904,7 +4903,7 @@ msgstr "%s necessita %s, però aquest requeriment no es pot satisfer" #: zypp/solver/detail/SATResolver.cc:1074 msgid "deleted providers: " -msgstr "proveïdors esborrats: " +msgstr "proveïdors suprimits: " #. translators: 'uninstallable' == 'not installable' #: zypp/solver/detail/SATResolver.cc:1085 @@ -4923,7 +4922,7 @@ msgstr "proveïdors no desinstal·lables: " #: zypp/solver/detail/SATResolver.cc:1145 #, c-format, boost-format msgid "remove lock to allow removal of %s" -msgstr "suprimeix el bloqueig per permetre l'eliminació de %s" +msgstr "suprimeix el bloqueig per permetre la supressió de %s" #: zypp/solver/detail/SATResolver.cc:1150 #: zypp/solver/detail/SATResolver.cc:1186 @@ -4960,7 +4959,7 @@ msgstr "no demanis instal·lar un resoluble que proporcioni %s" #: zypp/solver/detail/SATResolver.cc:1249 #, c-format, boost-format msgid "do not ask to delete all solvables providing %s" -msgstr "no demanis eliminar tots els resolubles que proporcionin %s" +msgstr "no demanis suprimir tots els resolubles que proporcionin %s" #: zypp/solver/detail/SATResolver.cc:1262 #, c-format, boost-format @@ -5120,7 +5119,7 @@ msgstr "Error a l'hora d'importar la clau pública %1%" #: zypp/target/rpm/RpmDb.cc:1218 #, boost-format msgid "Failed to remove public key %1%" -msgstr "Error en eliminar la clau pública %1%" +msgstr "Ha fallat suprimir la clau pública %1%" #: zypp/target/rpm/RpmDb.cc:1599 msgid "Package is not signed!" diff --git a/po/da.po b/po/da.po index 87a270f..1088c96 100644 --- a/po/da.po +++ b/po/da.po @@ -7,16 +7,16 @@ msgstr "" "Project-Id-Version: libzypp\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2018-04-09 13:14+0200\n" -"PO-Revision-Date: 2017-12-04 22:13+0000\n" +"PO-Revision-Date: 2018-04-30 04:01+0000\n" "Last-Translator: scootergrisen \n" -"Language-Team: Danish \n" +"Language-Team: Danish " +"\n" "Language: da\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 2.17.1\n" +"X-Generator: Weblate 2.18\n" #: zypp/target/hal/HalException.h:46 zypp/target/hal/HalException.h:55 #: zypp/target/hal/HalException.h:64 @@ -4613,13 +4613,13 @@ msgstr "afinstallation af %s" #: zypp/target/RpmPostTransCollector.cc:103 #, boost-format msgid "Executing %%posttrans script '%1%'" -msgstr "" +msgstr "Udfører %%posttrans-scriptet '%1%'" #. show a final message #: zypp/target/RpmPostTransCollector.cc:160 #, c-format, boost-format msgid "Executing %posttrans scripts" -msgstr "" +msgstr "Udfører %posttrans-scripts" #: zypp/target/TargetImpl.cc:310 msgid " executed" diff --git a/po/el.po b/po/el.po index fc5fb90..0d2c4bf 100644 --- a/po/el.po +++ b/po/el.po @@ -1,34 +1,18 @@ -# translation of zypp.el.po to Ελληνικά -# Greek message file for YaST2 (@memory@). -# Copyright (C) 2005 SUSE Linux Products GmbH. -# Copyright (C) 2002 SuSE Linux AG. -# Copyright (C) 2001 SuSE GmbH. -# -# Bill Giannakopoulos , 2001. -# Vasileios Giannakopoulos , 2007. -# Kostas Boukouvalas , 2007. -# Vasileios Giannakopoulos , 2008. -# Kostas Koudaras , 2011. -# Dimitris Papapoulios , 2011. -# John Tzonevrakis , 2013. -# Efstathios Agrapidis , 2014. -# Efstathios Iosifidis , 2011, 2012, 2013, 2014, 2015. -# msgid "" msgstr "" -"Project-Id-Version: zypp.el\n" +"Project-Id-Version: Greek (libzypp)\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-04-09 13:14+0200\n" -"PO-Revision-Date: 2016-07-16 11:02+0000\n" -"Last-Translator: Michail Vourlakos \n" -"Language-Team: Greek \n" +"POT-Creation-Date: 2018-04-27 14:53+0000\n" +"PO-Revision-Date: 2018-04-29 12:02+0000\n" +"Last-Translator: Konstantina Tsolakoglou \n" +"Language-Team: Greek " +"\n" "Language: el\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 2.6\n" +"X-Generator: Weblate 2.18\n" #: zypp/target/hal/HalException.h:46 zypp/target/hal/HalException.h:55 #: zypp/target/hal/HalException.h:64 @@ -49,7 +33,7 @@ msgstr "Άγνωστη χώρα: " #. Defined LanguageCode constants #: zypp/CountryCode.cc:149 zypp/LanguageCode.cc:148 msgid "No Code" -msgstr "Όχι Κώδικας" +msgstr "Κανένας κώδικας" #: zypp/CountryCode.cc:158 msgid "Andorra" @@ -334,7 +318,7 @@ msgstr "Δανία" #. :DNK:208: #: zypp/CountryCode.cc:215 msgid "Dominica" -msgstr "Dominica" +msgstr "Δομινίκα" #. :DMA:212: #: zypp/CountryCode.cc:216 @@ -592,7 +576,7 @@ msgstr "Ιταλία" #. :ITA:380: #: zypp/CountryCode.cc:267 msgid "Jersey" -msgstr "Jersey" +msgstr "Τζέρσεϋ" #: zypp/CountryCode.cc:268 msgid "Jamaica" @@ -736,7 +720,7 @@ msgstr "Μολδαβία" #. :MDA:498: #: zypp/CountryCode.cc:296 msgid "Montenegro" -msgstr "Montenegro" +msgstr "Μαυροβούνιο" #: zypp/CountryCode.cc:297 msgid "Saint Martin" @@ -880,7 +864,7 @@ msgstr "Νεπάλ" #. language code: nau na #: zypp/CountryCode.cc:325 zypp/LanguageCode.cc:781 msgid "Nauru" -msgstr "Nauru" +msgstr "Ναουρού" #. :NRU:520: #: zypp/CountryCode.cc:326 @@ -1323,25 +1307,23 @@ msgstr "Αδυναμία ανοίγματος διασωλήνωσης (%s)." #: zypp/ExternalProgram.cc:353 #, c-format, boost-format msgid "Can't chroot to '%s' (%s)." -msgstr "Δεν μπορεί να κάνει chroot σε '%s' (%s)." +msgstr "Αδυναμία chroot σε '%s' (%s)." #: zypp/ExternalProgram.cc:363 #, c-format, boost-format msgid "Can't chdir to '%s' inside chroot '%s' (%s)." -msgstr "" -"Αδυναμία αλλαγής καταλόγου στο '%s' μέσα σε περιβάλλον αλλαγμένου καταλόγου " -"ρίζας '%s' (%s)." +msgstr "Αδυναμία chdir στο '%s' μέσα σε chroot '%s' (%s)." #: zypp/ExternalProgram.cc:364 #, c-format, boost-format msgid "Can't chdir to '%s' (%s)." -msgstr "Αδυναμία αλλαγής καταλόγου στο '%s' (%s)." +msgstr "Αδυναμία chdir στο '%s' (%s)." #. don't want to get here #: zypp/ExternalProgram.cc:376 #, c-format, boost-format msgid "Can't exec '%s' (%s)." -msgstr "Μη δυνατή εκτέλεση του '%s' (%s)." +msgstr "Αδυναμία εκτέλεσης του '%s' (%s)." #: zypp/ExternalProgram.cc:384 #, c-format, boost-format @@ -1369,9 +1351,8 @@ msgid "Tried to import not existent key %s into keyring %s" msgstr "Προσπάθεια εισαγωγής μη υπάρχοντος κλειδιού %s στην κλειδοθήκη %s" #: zypp/KeyRing.cc:530 zypp/KeyRing.cc:534 -#, fuzzy msgid "Failed to import key." -msgstr "Απέτυχε να εισάγει το δημόσιο κλειδί από το αρχείο %1%" +msgstr "Αποτυχία εισαγωγής κλειδιού." #: zypp/KeyRing.cc:541 zypp/KeyRing.cc:545 zypp/KeyRing.cc:549 msgid "Failed to delete key." @@ -1389,12 +1370,12 @@ msgstr "Άγνωστη γλώσσα: " #. language code: aar aa #: zypp/LanguageCode.cc:161 msgid "Afar" -msgstr "Afar" +msgstr "Αφάρ" #. language code: abk ab #: zypp/LanguageCode.cc:163 msgid "Abkhazian" -msgstr "Abkhazian" +msgstr "Αμπχαζία" #. language code: ace #: zypp/LanguageCode.cc:165 @@ -1445,7 +1426,7 @@ msgstr "Akan" #. language code: akk #: zypp/LanguageCode.cc:183 msgid "Akkadian" -msgstr "Akkadian" +msgstr "Ακκαδική γλώσσα" #. language code: alb sqi sq #: zypp/LanguageCode.cc:185 zypp/LanguageCode.cc:187 @@ -1465,17 +1446,17 @@ msgstr "Γλώσσες Algonquian" #. language code: alt #: zypp/LanguageCode.cc:193 msgid "Southern Altai" -msgstr "Southern Altai" +msgstr "Νότια Αλτάι" #. language code: amh am #: zypp/LanguageCode.cc:195 msgid "Amharic" -msgstr "Amharic" +msgstr "Αμχαρική γλώσσα" #. language code: ang #: zypp/LanguageCode.cc:197 msgid "English, Old (ca.450-1100)" -msgstr "Αγγλικά, Παλαιά (450-110 μ.Χ.)" +msgstr "Αγγλικά, παλαιά (450-110 μ.Χ.)" #. language code: apa #: zypp/LanguageCode.cc:199 @@ -1505,7 +1486,7 @@ msgstr "Αρμενικά" #. language code: arn #: zypp/LanguageCode.cc:211 msgid "Araucanian" -msgstr "Araucanian" +msgstr "Αραουκάνικα (Μαπούτσε)" #. language code: arp #: zypp/LanguageCode.cc:213 @@ -1520,7 +1501,7 @@ msgstr "Τεχνητή (Άλλο)" #. language code: arw #: zypp/LanguageCode.cc:217 msgid "Arawak" -msgstr "Arawak" +msgstr "Αραουάκ" #. language code: asm as #: zypp/LanguageCode.cc:219 @@ -1545,12 +1526,12 @@ msgstr "Αυστραλιανές Γλώσσες" #. language code: ava av #: zypp/LanguageCode.cc:227 msgid "Avaric" -msgstr "Avaric" +msgstr "Αβαρικά" #. language code: ave ae #: zypp/LanguageCode.cc:229 msgid "Avestan" -msgstr "Avestan" +msgstr "Αβεστική γλώσσα" #. language code: awa #: zypp/LanguageCode.cc:231 @@ -1615,7 +1596,7 @@ msgstr "Βαλτικά (Άλλο)" #. language code: bej #: zypp/LanguageCode.cc:257 msgid "Beja" -msgstr "Beja" +msgstr "Μπέχα" #. language code: bel be #: zypp/LanguageCode.cc:259 @@ -3745,21 +3726,20 @@ msgstr "Οι ακόλουθες ενέργειες θα γίνουν:" #. translators: an annotation to a gpg keys expiry date #: zypp/PublicKey.cc:63 -#, fuzzy msgid "does not expire" -msgstr "(δεν λήγει)" +msgstr "δεν λήγει" #. translators: an annotation to a gpg keys expiry date: "expired: 1999-04-12" #: zypp/PublicKey.cc:68 #, boost-format msgid "expired: %1%" -msgstr "" +msgstr "έληξε: %1%" #. translators: an annotation to a gpg keys expiry date: "expires: 2111-04-12" #: zypp/PublicKey.cc:73 #, boost-format msgid "expires: %1%" -msgstr "" +msgstr "λήγει: %1%" #. translators: an annotation to a gpg keys expiry date #: zypp/PublicKey.cc:82 @@ -3787,9 +3767,7 @@ msgstr[1] "(λήγει σε %d ημέρες)" #: zypp/RepoManager.cc:312 #, boost-format msgid "Cannot read repo directory '%1%': Permission denied" -msgstr "" -"Αδυναμία ανάγνωσης καταλόγου αποθετηρίου '%1%': Δεν έχετε δικαιώματα " -"πρόσβασης" +msgstr "Αδυναμία ανάγνωσης καταλόγου αποθετηρίου '%1%': Δεν έχετε δικαιώματα" #. TranslatorExplanation '%s' is a pathname #: zypp/RepoManager.cc:320 zypp/RepoManager.cc:783 zypp/RepoManager.cc:1535 @@ -3801,8 +3779,7 @@ msgstr "Αποτυχία ανάγνωσης καταλόγου '%s'" #: zypp/RepoManager.cc:330 #, boost-format msgid "Cannot read repo file '%1%': Permission denied" -msgstr "" -"Αδυναμία ανάγνωσης αρχείου αποθετηρίου '%1%': Δεν έχετε δικαιώματα πρόσβασης" +msgstr "Αδυναμία ανάγνωσης αρχείου αποθετηρίου '%1%': Δεν έχετε δικαιώματα" #: zypp/RepoManager.cc:353 msgid "Repository alias cannot start with dot." @@ -3853,7 +3830,8 @@ msgstr "Δημιουργία λανθάνουσας μνήμης αποθετη #, c-format, boost-format msgid "Can't create cache at %s - no writing permissions." msgstr "" -"Αδυναμία δημιουργίας λανθάνουσας μνήμης στο %s - όχι δικαιώματα εγγραφής." +"Αδυναμία δημιουργίας λανθάνουσας μνήμης στο %s - δεν έχετε δικαιώματα " +"εγγραφής." #: zypp/RepoManager.cc:1378 #, c-format, boost-format @@ -3873,13 +3851,13 @@ msgstr "Τύπος αδιαχείριστου αποθετηρίου" #: zypp/RepoManager.cc:1426 zypp/RepoManager.cc:2488 #, c-format, boost-format msgid "Error trying to read from '%s'" -msgstr "Σφάλμα προσπαθώντας να διαβάσει από το '%s'" +msgstr "Σφάλμα στην προσπάθεια ανάγνωσης από το '%s'" #. TranslatorExplanation '%s' is an URL #: zypp/RepoManager.cc:1479 zypp/RepoManager.cc:2496 #, c-format, boost-format msgid "Unknown error reading from '%s'" -msgstr "Άγνωστο σφάλμα διαβάζετε από '%s'" +msgstr "Άγνωστο σφάλμα κατά την ανάγνωση από '%s'" #: zypp/RepoManager.cc:1617 #, c-format, boost-format @@ -3890,12 +3868,12 @@ msgstr "Προσθήκη αποθετηρίου '%s'" #: zypp/RepoManager.cc:1705 #, c-format, boost-format msgid "Invalid repo file name at '%s'" -msgstr "Μη έγκυρο όνομα αποθετηρίου αρχείου στο '%s'" +msgstr "Μη έγκυρο όνομα αρχείου αποθετηρίου στο '%s'" #: zypp/RepoManager.cc:1746 #, c-format, boost-format msgid "Removing repository '%s'" -msgstr "Απομάκρυνση αποθετηρίου '%s'" +msgstr "Αφαίρεση αποθετηρίου '%s'" #: zypp/RepoManager.cc:1765 zypp/RepoManager.cc:1843 msgid "Can't figure out where the repo is stored." @@ -3913,12 +3891,12 @@ msgstr "Δεν είναι κατανοητό που είναι αποθηκευ #: zypp/Url.cc:114 msgid "Invalid LDAP URL query string" -msgstr "Λανθασμένη σειρά αναζήτησης LDAP URL" +msgstr "Μη έγκυρο string αναζήτησης LDAP URL" #: zypp/Url.cc:153 #, c-format, boost-format msgid "Invalid LDAP URL query parameter '%s'" -msgstr "Λανθασμένη παράμετρος αναζήτησης LDAP URL '%s'" +msgstr "Μη έγκυρη παράμετρος αναζήτησης LDAP URL '%s'" #: zypp/Url.cc:300 msgid "Unable to clone Url object" @@ -3926,7 +3904,7 @@ msgstr "Αδυναμία κλωνοποίησης αντικειμένου Url" #: zypp/Url.cc:313 msgid "Invalid empty Url object reference" -msgstr "Λανθασμένη αναφορά αντικειμένου κενού Url" +msgstr "Μη έγκυρη αναφορά αντικειμένου κενού Url" #: zypp/Url.cc:326 zypp/Url.cc:340 msgid "Unable to parse Url components" @@ -3934,7 +3912,7 @@ msgstr "Αδυναμία ανάλυσης συστατικών Url" #: zypp/VendorSupportOptions.cc:14 msgid "unknown" -msgstr "άγνωστη" +msgstr "άγνωστο" #: zypp/VendorSupportOptions.cc:17 msgid "unsupported" @@ -3954,7 +3932,7 @@ msgstr "Επίπεδο 3" #: zypp/VendorSupportOptions.cc:29 msgid "Additional Customer Contract Necessary" -msgstr "Συμπληρωματική Σύμβαση Πελάτη είναι Απαραίτητη" +msgstr "Είναι απαραίτητη η συμπληρωματική σύμβαση πελάτη" #: zypp/VendorSupportOptions.cc:31 msgid "invalid" @@ -4009,7 +3987,7 @@ msgstr "" #: zypp/VendorSupportOptions.cc:56 msgid "Unknown support option. Description not available" -msgstr "Άγνωστη επιλογή υποστήριξης.Δεν υπάρχει διαθέσιμη περιγραφή" +msgstr "Άγνωστη επιλογή υποστήριξης. Δεν υπάρχει διαθέσιμη περιγραφή" #: zypp/ZYppFactory.cc:399 #, c-format, boost-format @@ -4042,12 +4020,12 @@ msgstr "Άγνωστη λειτουργία ταιριάσματος '%s'" #: zypp/base/StrMatcher.cc:153 #, c-format, boost-format msgid "Unknown match mode '%s' for pattern '%s'" -msgstr "Άγνωστη λειτουργία ταιριάσματος '%s' για το μοτίβο '%s'" +msgstr "Άγνωστη λειτουργία ταιριάσματος '%s' για το pattern '%s'" #: zypp/base/StrMatcher.cc:157 #, c-format, boost-format msgid "Invalid regular expression '%s': regcomp returned %d" -msgstr "Μή έγκυρη κανονική έκφραση '%s': η εντολή regcomp επέστρεψε %d" +msgstr "Μη έγκυρη κανονική έκφραση '%s': η εντολή regcomp επέστρεψε %d" #: zypp/base/StrMatcher.cc:158 #, c-format, boost-format @@ -4065,13 +4043,13 @@ msgid "" "Visit the Novell Customer Center to check whether your registration is valid " "and has not expired." msgstr "" -"Επισκεπτείται το Κέντρο Πελατών της Novell για να ελέγξετε έαν η εγγραφής " +"Επισκεφθείτε το Κέντρο Πελατών της Novell για να ελέγξετε εάν η εγγραφή σας " "είναι έγκυρη και δεν έχει λήξει." #: zypp/media/MediaException.cc:31 #, c-format, boost-format msgid "Failed to mount %s on %s" -msgstr "Αδυναμία προσάρτησης %s στο %s" +msgstr "Αποτυχία προσάρτησης %s στο %s" #: zypp/media/MediaException.cc:41 #, c-format, boost-format @@ -4086,7 +4064,7 @@ msgstr "Εσφαλμένο όνομα αρχείου: %s" #: zypp/media/MediaException.cc:51 #, c-format, boost-format msgid "Medium not opened when trying to perform action '%s'." -msgstr "Το μέσο δεν ανοίχτηκε κατά την προσπάθεια εκτέλεσης της δράσης '%s'." +msgstr "Το μέσο δεν ανοίχτηκε κατά την προσπάθεια εκτέλεσης της ενέργειας '%s'." #: zypp/media/MediaException.cc:56 #, c-format, boost-format @@ -4100,7 +4078,7 @@ msgstr "Αδυναμία εγγραφής αρχείο '%s'." #: zypp/media/MediaException.cc:66 msgid "Medium not attached" -msgstr "Μέσο όχι συνδεδεμένο" +msgstr "Το μέσο δεν είναι συνδεδεμένο" #: zypp/media/MediaException.cc:71 msgid "Bad media attach point" @@ -4129,11 +4107,11 @@ msgstr "Η διαδρομή '%s' στο μέσο '%s' δεν είναι κατά #: zypp/media/MediaException.cc:99 msgid "Malformed URI" -msgstr "Κακά-διατυπωμένο URI" +msgstr "Κακώς-διατυπωμένο URI" #: zypp/media/MediaException.cc:109 msgid "Empty host name in URI" -msgstr "Κενό όνομα φιλοξενιας στην URI" +msgstr "Κενό όνομα συστήματος στην URI" #: zypp/media/MediaException.cc:114 msgid "Empty filesystem in URI" @@ -4168,18 +4146,18 @@ msgstr "" #, c-format, boost-format msgid "Error occurred while setting download (curl) options for '%s':" msgstr "" -"Σφάλμα προκλήθηκε κατά την διάρκεια ρύθμισης των ρυθμίσεων λήψεων (curl) για " +"Προκλήθηκε σφάλμα κατά την διάρκεια ρύθμισης των επιλογών λήψης (curl) για " "'%s':" #: zypp/media/MediaException.cc:151 #, c-format, boost-format msgid "Media source '%s' does not contain the desired medium" -msgstr "Η πηγή του πολυμέσου '%s' δεν περιέχει το επιθυμητό μέσο" +msgstr "Η πηγή του μέσου '%s' δεν περιέχει το επιθυμητό μέσο" #: zypp/media/MediaException.cc:156 #, c-format, boost-format msgid "Medium '%s' is in use by another instance" -msgstr "Το μέσο '%s' χρησιμοποιείτε από άλλο στιγμιότυπο" +msgstr "Το μέσο '%s' είναι σε χρήση από άλλο στιγμιότυπο" #: zypp/media/MediaException.cc:162 msgid "Cannot eject any media" @@ -4193,7 +4171,7 @@ msgstr "Αδυναμία αποβολής μέσου '%s'" #: zypp/media/MediaException.cc:179 #, c-format, boost-format msgid "Permission to access '%s' denied." -msgstr "Η άδεια για πρόσβαση στο '%s' απαγορεύτηκε." +msgstr "Άρνηση άδειας πρόσβασης στο '%s'." #: zypp/media/MediaException.cc:187 #, c-format, boost-format @@ -4203,20 +4181,22 @@ msgstr "Το χρονικό όριο εξαντλήθηκε όταν έγινε #: zypp/media/MediaException.cc:195 #, c-format, boost-format msgid "Location '%s' is temporarily unaccessible." -msgstr "Η τοποθεσία '%s' δεν είναι προσωρινά προσβάσιμη." +msgstr "Η τοποθεσία '%s' είναι προσωρινά μη προσβάσιμη." #: zypp/media/MediaException.cc:203 #, c-format, boost-format msgid " SSL certificate problem, verify that the CA cert is OK for '%s'." msgstr "" -" πρόβλημα πιστοποιητικού SSL, επιβεβαιώστε ότι το πιστοποιητικό της CA " -"είναι εντάξει για '%s'." +" Πρόβλημα πιστοποιητικού SSL, επαληθεύστε ότι το πιστοποιητικό CA είναι " +"εντάξει για '%s'." #: zypp/media/MediaHandler.cc:370 msgid "" "Create attach point: Can't find a writable directory to create an attach " "point" msgstr "" +"Δημιουργία σημείου προσάρτησης: Δεν είναι δυνατή η εύρεση εγγράψιμου " +"καταλόγου για τη δημιουργία σημείου προσάρτησης" #: zypp/media/MediaUserAuth.cc:136 #, c-format, boost-format @@ -4225,12 +4205,12 @@ msgstr "Μη υποστηριζόμενη μέθοδος πιστοποίηση #: zypp/misc/CheckAccessDeleted.cc:331 msgid "Please install package 'lsof' first." -msgstr "Παρακαλώ εγκαταστήστε πρώτα το πακέτο 'lsof'." +msgstr "Παρακαλούμε εγκαταστήστε πρώτα το πακέτο 'lsof'." #: zypp/parser/RepoindexFileReader.cc:197 #, c-format, boost-format msgid "Required attribute '%s' is missing." -msgstr "Το απαιτούμενο χαρακτηριστικό '%s' λείπει." +msgstr "Λείπει το απαιτούμενο χαρακτηριστικό '%s'." #: zypp/parser/RepoindexFileReader.cc:209 #, c-format, boost-format @@ -4259,15 +4239,15 @@ msgstr "Αποτυχία παροχής Πακέτου %s. Θέλετε να ξ #: zypp/repo/PackageProvider.cc:549 msgid "applydeltarpm check failed." -msgstr "Έλεγχος applydeltarpm απέτυχε." +msgstr "Απέτυχε ο έλεγχος applydeltarpm." #: zypp/repo/PackageProvider.cc:559 msgid "applydeltarpm failed." -msgstr "applydeltarpm απέτυχε." +msgstr "Αποτυχία applydeltarpm." #: zypp/repo/RepoException.cc:129 msgid "Service plugin does not support changing an attribute." -msgstr "Το πρόσθετο της υπηρεσίας σεν υποστηρίζει την αλλαγή μιας ιδιότητας." +msgstr "Το πρόσθετο της υπηρεσίας δεν υποστηρίζει την αλλαγή μιας ιδιότητας." #: zypp/repo/RepoProvideFile.cc:261 #, c-format, boost-format @@ -4432,7 +4412,7 @@ msgstr "Αδυναμία δημιουργίας sat-pool." #: zypp/solver/detail/ProblemSolutionIgnore.cc:42 #, c-format, boost-format msgid "break %s by ignoring some of its dependencies" -msgstr "σπάσιμο %s λόγω αγνόησης μερικών εξαρτήσεων του" +msgstr "διακοπή %s λόγω αγνόησης μερικών εξαρτήσεων του" #: zypp/solver/detail/ProblemSolutionIgnore.cc:48 msgid "generally ignore of some dependencies" @@ -4441,12 +4421,12 @@ msgstr "γενικά αγνόηση μερικών εξαρτήσεων" #: zypp/solver/detail/SATResolver.cc:979 #, c-format, boost-format msgid "%s does not belong to a distupgrade repository" -msgstr "%s δεν ανήκει σε αποθετήριο αναβάθμισης της διανομής" +msgstr "το %s δεν ανήκει σε αποθετήριο αναβάθμισης της διανομής" #: zypp/solver/detail/SATResolver.cc:983 #, c-format, boost-format msgid "%s has inferior architecture" -msgstr "Το %s έχει υποδαιέστερη αρχιτεκτονική" +msgstr "το %s έχει υποδαιέστερη αρχιτεκτονική" #: zypp/solver/detail/SATResolver.cc:987 #, c-format, boost-format @@ -4482,12 +4462,12 @@ msgstr "μη υποστηριζόμενο αίτημα" #: zypp/solver/detail/SATResolver.cc:1007 #, c-format, boost-format msgid "%s is provided by the system and cannot be erased" -msgstr "Το %s παρέχεται από το σύστημα και είναι αδύνατο να διαγραφεί" +msgstr "το %s παρέχεται από το σύστημα και είναι αδύνατο να διαγραφεί" #: zypp/solver/detail/SATResolver.cc:1011 #, c-format, boost-format msgid "%s is not installable" -msgstr "%s είναι μη εγκαταστάσιμο" +msgstr "το %s είναι μη εγκαταστάσιμο" #: zypp/solver/detail/SATResolver.cc:1016 #, c-format, boost-format @@ -4512,7 +4492,7 @@ msgstr "Το %s απαρχαιώνει το %s που παρέχεται από #: zypp/solver/detail/SATResolver.cc:1036 #, c-format, boost-format msgid "installed %s obsoletes %s provided by %s" -msgstr "το %s πεπαλαιώνει %s που παρέχεται από %s" +msgstr "το εγκατεστημένο %s απαρχαιώνει %s που παρέχεται από %s" #: zypp/solver/detail/SATResolver.cc:1040 #, c-format, boost-format @@ -4522,7 +4502,7 @@ msgstr "το επιλύσιμο %s συγκρούεται με %s που παρ #: zypp/solver/detail/SATResolver.cc:1072 #, c-format, boost-format msgid "%s requires %s, but this requirement cannot be provided" -msgstr "%s απαιτεί %s, αλλά αυτή η απαίτηση δεν μπορεί να δοθεί" +msgstr "το %s απαιτεί %s, αλλά αυτή η απαίτηση δεν μπορεί να παρασχεθεί" #: zypp/solver/detail/SATResolver.cc:1074 msgid "deleted providers: " @@ -4557,7 +4537,7 @@ msgstr "να μην εγκατασταθεί το %s" #: zypp/solver/detail/SATResolver.cc:1207 #, c-format, boost-format msgid "keep %s" -msgstr "κράτα το %s" +msgstr "διατήρηση του %s" #: zypp/solver/detail/SATResolver.cc:1170 #, c-format, boost-format @@ -4567,12 +4547,12 @@ msgstr "αφαίρεση κλειδώματος για να επιτραπεί #: zypp/solver/detail/SATResolver.cc:1221 #: zypp/solver/detail/SATResolver.cc:1242 msgid "This request will break your system!" -msgstr "Το αίτημα αυτό θα σπάσει το σύστημα σας!" +msgstr "Το αίτημα αυτό θα καταστρέψει το σύστημα σας!" #: zypp/solver/detail/SATResolver.cc:1222 #: zypp/solver/detail/SATResolver.cc:1243 msgid "ignore the warning of a broken system" -msgstr "Αγνοήστε την προειδοποίηση του σπασμένου συστήματος" +msgstr "αγνοήστε την προειδοποίηση ενός κατεστραμμένου συστήματος" #: zypp/solver/detail/SATResolver.cc:1227 #, c-format, boost-format @@ -4592,22 +4572,22 @@ msgstr "να μην εγκατασταθεί η νεότερη έκδοση το #: zypp/solver/detail/SATResolver.cc:1283 #, c-format, boost-format msgid "keep %s despite the inferior architecture" -msgstr "διατήρηση του %s παρόλη την υποδεέστερη αρχιτεκτονική" +msgstr "διατήρηση του %s παρά την κατώτερη αρχιτεκτονική" #: zypp/solver/detail/SATResolver.cc:1288 #, c-format, boost-format msgid "install %s despite the inferior architecture" -msgstr "Εγκατάσταση %s παρόλο που θα αλλάξει την αρχιτεκτονική" +msgstr "εγκατάσταση του %s παρά την κατώτερη αρχιτεκτονική" #: zypp/solver/detail/SATResolver.cc:1297 #, c-format, boost-format msgid "keep obsolete %s" -msgstr "διατήρηση πεπαλαιώμενου %s" +msgstr "διατήρηση του απαρχαιωμένου %s" #: zypp/solver/detail/SATResolver.cc:1302 #, c-format, boost-format msgid "install %s from excluded repository" -msgstr "εγκαταστήσετε %s από το εξαιρετέο αποθετήριο" +msgstr "εγκατάσταση του %s από το εξαιρούμενο αποθετήριο" #: zypp/solver/detail/SATResolver.cc:1322 #, c-format, boost-format @@ -4642,13 +4622,13 @@ msgstr "απεγκατάσταση του %s" #: zypp/target/RpmPostTransCollector.cc:103 #, boost-format msgid "Executing %%posttrans script '%1%'" -msgstr "" +msgstr "Εκτέλεση %%posttrans script '%1%'" #. show a final message #: zypp/target/RpmPostTransCollector.cc:160 #, c-format, boost-format msgid "Executing %posttrans scripts" -msgstr "" +msgstr "Εκτέλεση %posttrans scripts" #: zypp/target/TargetImpl.cc:310 msgid " executed" @@ -4657,7 +4637,7 @@ msgstr " εκτελέστηκε" # %s is either BOOTP or DHCP #: zypp/target/TargetImpl.cc:332 msgid " execution failed" -msgstr " εκτέλεση απέτυχε" +msgstr " αποτυχία εκτέλεσηης" #. translators: We may find the same script content in files with different names. #. Only the first occurence is executed, subsequent ones are skipped. It's a one-line @@ -4665,32 +4645,32 @@ msgstr " εκτέλεση απέτυχε" #: zypp/target/TargetImpl.cc:449 #, c-format, boost-format msgid "%s already executed as %s)" -msgstr "%s έχουν ήδη εκτελεστεί ως %s)" +msgstr "το %s έχει ήδη εκτελεστεί ως %s)" #: zypp/target/TargetImpl.cc:459 msgid " execution skipped while aborting" -msgstr " η εκτέλεση σταμάτησε κατά την ακύρωση" +msgstr " η εκτέλεση παραλείφθηκε κατά την ματαίωση" #: zypp/target/TargetImpl.cc:514 zypp/target/TargetImpl.cc:534 #: zypp/target/TargetImpl.cc:562 zypp/target/TargetImpl.cc:599 #: zypp/target/TargetImpl.cc:607 msgid "Error sending update message notification." -msgstr "Σφάλμα κατα την αποστολή μηνύματος ειδοποίησης ενημέρωσης." +msgstr "Σφάλμα κατά την αποστολή μηνύματος ειδοποίησης ενημέρωσης." #: zypp/target/TargetImpl.cc:658 msgid "New update message" -msgstr "Νέο μήνυμα αναβάθμισης" +msgstr "Νέο μήνυμα ενημέρωσης" #: zypp/target/TargetImpl.cc:1221 zypp/target/TargetImpl.cc:1275 #: zypp/target/TargetImpl.cc:1628 #: zypp/target/TargetImpl.commitFindFileConflicts.cc:166 msgid "Installation has been aborted as directed." -msgstr "Η εγκατάσταση ακυρώθηκε όπως επιλέχθηκε." +msgstr "Η εγκατάσταση ματαιώθηκε σύμφωνα με τις οδηγίες." #: zypp/target/hal/HalContext.cc:24 msgid "Sorry, but this version of libzypp was built without HAL support." msgstr "" -"Συγγνώμη, αλλά αυτή η έκδοση του libzypp χτίστηκε χωρίς υποστήριξη HAL." +"Συγγνώμη, αλλά αυτή η έκδοση του libzypp κατασκευάστηκε χωρίς υποστήριξη HAL." #: zypp/target/hal/HalContext.cc:117 msgid "HalContext not connected" @@ -4719,11 +4699,11 @@ msgstr "libhal_set_dbus_connection: Αδυναμία ορισμού σύνδεσ #: zypp/target/hal/HalContext.cc:272 msgid "Unable to initalize HAL context -- hald not running?" msgstr "" -"Αδυναμία αρχικοποίησης περιεχομένου HAL -- ο δαίμονας hald δεν εκτελείται;" +"Αδυναμία αρχικοποίησης περιεχομένου HAL -- η υπηρεσία hald δεν εκτελείται;" #: zypp/target/hal/HalContext.cc:851 msgid "Not a CDROM drive" -msgstr "Όχι οδηγός CDROM" +msgstr "Δεν είναι οδηγός CDROM" #. TranslatorExplanation after semicolon is error message #. TranslatorExplanation the colon is followed by an error message @@ -4746,7 +4726,7 @@ msgstr "Αδυναμία απομάκρυνσης του δημοσίου κλε #: zypp/target/rpm/RpmDb.cc:1599 msgid "Package is not signed!" -msgstr "" +msgstr "Το πακέτο δεν είναι υπογεγραμμένο!" #. Translator: %s = name of an rpm package. A list of diffs follows #. this message. @@ -4775,7 +4755,7 @@ msgstr "" #: zypp/target/rpm/RpmDb.cc:2079 #, c-format, boost-format msgid "rpm created %s as %s, but it was impossible to determine the difference" -msgstr "Το rpm δημιουργήσε το %s ως %s αλλά ήταν αδύνατο να διαφανεί η διαφορά" +msgstr "Το rpm δημιούργησε το %s ως %s αλλά ήταν αδύνατο να διαφανεί η διαφορά" #. %s = filenames #: zypp/target/rpm/RpmDb.cc:2081 @@ -4784,7 +4764,7 @@ msgid "" "rpm created %s as %s.\n" "Here are the first 25 lines of difference:\n" msgstr "" -"To rpm δημιουργήσε το %s ως %s.\n" +"To rpm δημιούργησε το %s ως %s.\n" "Εδώ είναι οι πρώτες 25 σειρές της διαφοράς:\n" #. report additional rpm output in finish @@ -4796,12 +4776,12 @@ msgstr "Επιπρόσθετο αποτέλεσμα rpm" #: zypp/target/rpm/RpmDb.cc:2394 #, c-format, boost-format msgid "created backup %s" -msgstr "δημιουργία αντιγράφου ασφαλείας %s" +msgstr "δημιουργήθηκε αντίγραφο ασφαλείας %s" #. translators: possible rpm package signature check result [brief] #: zypp/target/rpm/RpmDb.cc:2415 msgid "Signature is OK" -msgstr "Η υπογραφή είναι ΟΚ" +msgstr "Η υπογραφή είναι εντάξει" #. translators: possible rpm package signature check result [brief] #: zypp/target/rpm/RpmDb.cc:2417 @@ -4816,7 +4796,7 @@ msgstr "Η υπογραφή δεν μπορεί να επαληθευτεί" #. translators: possible rpm package signature check result [brief] #: zypp/target/rpm/RpmDb.cc:2421 msgid "Signature is OK, but key is not trusted" -msgstr "Η υπογραφή είναι ΟΚ, αλλά το κλειδί δεν είναι έμπιστο" +msgstr "Η υπογραφή είναι εντάξει, αλλά το κλειδί δεν είναι έμπιστο" #. translators: possible rpm package signature check result [brief] #: zypp/target/rpm/RpmDb.cc:2423 @@ -4831,7 +4811,7 @@ msgstr "Το αρχείο δεν υπάρχει ή η υπογραφή δεν μ #. translators: possible rpm package signature check result [brief] #: zypp/target/rpm/RpmDb.cc:2427 msgid "File is unsigned" -msgstr "" +msgstr "Το αρχείο δεν είναι υπογεγραμμένο" #: zypp/thread/Mutex.cc:33 msgid "Can't initialize mutex attributes" @@ -4851,26 +4831,27 @@ msgstr "Αδυναμία λήψης κλειδαριάς mutex" #: zypp/thread/Mutex.cc:87 msgid "Can't release the mutex lock" -msgstr "Αδυναμία ελευθέρωσης κλειδαριάς mutex" +msgstr "Αδυναμία απελευθέρωσης κλειδαριάς mutex" #: zypp/url/UrlBase.cc:154 #, c-format, boost-format msgid "Url scheme does not allow a %s" -msgstr "Το Url σχήμα δεν επιτρέπει ένα %s" +msgstr "Το σχήμα Url δεν επιτρέπει ένα %s" #: zypp/url/UrlBase.cc:173 #, c-format, boost-format msgid "Invalid %s component '%s'" -msgstr "Λανθασμένο %s συστατικό '%s'" +msgstr "μη έγκυρο %s συστατικό '%s'" #: zypp/url/UrlBase.cc:180 #, c-format, boost-format msgid "Invalid %s component" -msgstr "Λανθασμένο %s συστατικό" +msgstr "μη έγκυρο %s συστατικό" #: zypp/url/UrlBase.cc:786 zypp/url/UrlBase.cc:1231 msgid "Query string parsing not supported for this URL" -msgstr "Η ανάλυση γραμμής αναζήτησης δεν υποστηρίζεται από αυτό το URL" +msgstr "" +"Δεν υποστηρίζεται η ανάλυση string ερωτήματος για αυτήν τη διεύθυνση URL" #: zypp/url/UrlBase.cc:824 msgid "Url scheme is a required component" @@ -4891,16 +4872,16 @@ msgstr "Το σχήμα Url δεν επιτρέπει συνθηματικό" #: zypp/url/UrlBase.cc:1012 msgid "Url scheme requires a host component" -msgstr "Το σχήμα Url απαιτεί ένα συστατικό διακομιστή" +msgstr "Το σχήμα Url απαιτεί ένα συστατικό συστήματος" #: zypp/url/UrlBase.cc:1022 msgid "Url scheme does not allow a host component" -msgstr "Το σχήμα Url δεν επιτρέπει ένα συστατικό διακομιστή" +msgstr "Το σχήμα Url δεν επιτρέπει ένα συστατικό συστήματος" #: zypp/url/UrlBase.cc:1049 #, c-format, boost-format msgid "Invalid host component '%s'" -msgstr "Λανθασμένο συστατικό διακομιστή '%s'" +msgstr "Μη έγκυρο συστατικό συστήματος '%s'" #: zypp/url/UrlBase.cc:1070 msgid "Url scheme does not allow a port" @@ -4909,7 +4890,7 @@ msgstr "Το σχήμα Url δεν σας επιτρέπει μια θύρα" #: zypp/url/UrlBase.cc:1081 #, c-format, boost-format msgid "Invalid port component '%s'" -msgstr "Λανθασμένο συστατικό θύρας '%s'" +msgstr "μη έγκυρο συστατικό θύρας '%s'" #: zypp/url/UrlBase.cc:1098 msgid "Url scheme requires path name" @@ -4917,23 +4898,23 @@ msgstr "Το σχήμα Url απαιτεί όνομα διαδρομής" #: zypp/url/UrlBase.cc:1119 zypp/url/UrlBase.cc:1133 msgid "Relative path not allowed if authority exists" -msgstr "Σχετική διαδρομή δεν επιτρέπεται εαν υπάρχει αρχή" +msgstr "Σχετική διαδρομή δεν επιτρέπεται εάν υπάρχει αρχή" #: zypp/url/UrlUtils.cc:111 msgid "Encoded string contains a NUL byte" -msgstr "Κωδικοποιημένο αλφαριθμητικό περιέχει ενα NUL byte" +msgstr "Κωδικοποιημένο string περιέχει ένα NUL byte" #: zypp/url/UrlUtils.cc:173 msgid "Invalid parameter array split separator character" -msgstr "Λανθασμένος διαχωριστικός χαρακτήρας διαχωρισμού παραμέτρου σειράς" +msgstr "Μη έγκυρος διαχωριστικός χαρακτήρας χωριστής διάταξης παραμέτρων" #: zypp/url/UrlUtils.cc:213 msgid "Invalid parameter map split separator character" -msgstr "Λανθασμένος διαχωριστικός χαρακτήρας διαχωρισμού παραμέτρου χάρτη" +msgstr "Μη έγκυρος διαχωριστικός χαρακτήρας χωριστού χάρτη παραμέτρων" #: zypp/url/UrlUtils.cc:283 msgid "Invalid parameter array join separator character" -msgstr "Λανθασμένος διαχωριστικός χαρακτήρας ένωσης σειράς" +msgstr "Μη έγκυρος διαχωριστικός χαρακτήρας ένωσης διατάξεων παραμέτρων" #~ msgid "Failed to import public key from file %s: %s" #~ msgstr "Απέτυχε να εισάγει το δημόσιο κλειδί από το αρχείο %s: %s" diff --git a/tests/zypp/Fetcher_test.cc b/tests/zypp/Fetcher_test.cc index 48f4bd7..f32fc1f 100644 --- a/tests/zypp/Fetcher_test.cc +++ b/tests/zypp/Fetcher_test.cc @@ -159,7 +159,7 @@ BOOST_AUTO_TEST_CASE(fetcher_enqueue_digested_broken_with_autoindex) // add the key as trusted getZYpp()->keyRing()->importKey(PublicKey(DATADIR + "/complexdir-broken/subdir1/SHA1SUMS.key"), true); fetcher.setOptions( Fetcher::AutoAddIndexes ); - fetcher.enqueueDigested(OnMediaLocation("/complexdir-broken/subdir1/subdir1-file1.txt")); + fetcher.enqueueDigested(OnMediaLocation("/complexdir-broken/subdir1/subdir1-file2.txt")); BOOST_CHECK_THROW( fetcher.start( dest.path(), media ), Exception); fetcher.reset(); } @@ -357,10 +357,12 @@ BOOST_AUTO_TEST_CASE(enqueuedir_http) BOOST_CHECK( PathInfo(dest.path() + "/complexdir-broken/subdir2").isExist() ); + // unprocessed after failure: BOOST_CHECK( ! PathInfo(dest.path() + "/complexdir-broken/subdir2/subdir2-file1.txt").isExist() ); // this one got transferred before the failure, so it is there BOOST_CHECK( PathInfo(dest.path() + "/complexdir-broken/subdir1/subdir1-file1.txt").isExist() ); + // broken: BOOST_CHECK( ! PathInfo(dest.path() + "/complexdir-broken/subdir1/subdir1-file2.txt").isExist() ); fetcher.reset(); diff --git a/tests/zypp/data/Fetcher/remote-site/complexdir-broken/subdir1/subdir1-file1.txt b/tests/zypp/data/Fetcher/remote-site/complexdir-broken/subdir1/subdir1-file1.txt index f2fe044..257cc56 100644 --- a/tests/zypp/data/Fetcher/remote-site/complexdir-broken/subdir1/subdir1-file1.txt +++ b/tests/zypp/data/Fetcher/remote-site/complexdir-broken/subdir1/subdir1-file1.txt @@ -1 +1 @@ -fooa +foo diff --git a/tests/zypp/data/Fetcher/remote-site/complexdir-broken/subdir1/subdir1-file2.txt b/tests/zypp/data/Fetcher/remote-site/complexdir-broken/subdir1/subdir1-file2.txt index 5716ca5..d750572 100644 --- a/tests/zypp/data/Fetcher/remote-site/complexdir-broken/subdir1/subdir1-file2.txt +++ b/tests/zypp/data/Fetcher/remote-site/complexdir-broken/subdir1/subdir1-file2.txt @@ -1 +1 @@ -bar +bar (broken chksum) diff --git a/tools/zypp-NameReqPrv.cc b/tools/zypp-NameReqPrv.cc index 7198a76..a5204f6 100644 --- a/tools/zypp-NameReqPrv.cc +++ b/tools/zypp-NameReqPrv.cc @@ -314,20 +314,40 @@ int main( int argc, char * argv[] ) if ( names ) q.addAttribute( sat::SolvAttr::name ); if ( provides ) + { + q.addDependency( sat::SolvAttr::provides ); q.addDependency( sat::SolvAttr::provides, Capability(qstr) ); + } if ( requires ) + { + q.addDependency( sat::SolvAttr::requires ); q.addDependency( sat::SolvAttr::requires, Capability(qstr) ); + } if ( conflicts ) + { + q.addDependency( sat::SolvAttr::conflicts ); q.addDependency( sat::SolvAttr::conflicts, Capability(qstr) ); + } if ( obsoletes ) + { + q.addDependency( sat::SolvAttr::obsoletes ); q.addDependency( sat::SolvAttr::obsoletes, Capability(qstr) ); + } if ( recommends ) + { + q.addDependency( sat::SolvAttr::recommends ); q.addDependency( sat::SolvAttr::recommends, Capability(qstr) ); + } if ( supplements ) + { + q.addDependency( sat::SolvAttr::supplements ); q.addDependency( sat::SolvAttr::supplements, Capability(qstr) ); + } if ( enhacements ) { + q.addDependency( sat::SolvAttr::enhances ); q.addDependency( sat::SolvAttr::enhances, Capability(qstr) ); + q.addDependency( sat::SolvAttr::suggests ); q.addDependency( sat::SolvAttr::suggests, Capability(qstr) ); } } diff --git a/zypp/Fetcher.cc b/zypp/Fetcher.cc index ef8e95b..c6bf217 100644 --- a/zypp/Fetcher.cc +++ b/zypp/Fetcher.cc @@ -27,8 +27,6 @@ #include "zypp/parser/susetags/ContentFileReader.h" #include "zypp/parser/susetags/RepoIndex.h" -using namespace std; - #undef ZYPP_BASE_LOGGER_LOGGROUP #define ZYPP_BASE_LOGGER_LOGGROUP "zypp:fetcher" @@ -108,7 +106,7 @@ namespace zypp OnMediaLocation location; Pathname deltafile; //CompositeFileChecker checkers; - list checkers; + std::list checkers; Flags flags; }; @@ -186,17 +184,16 @@ namespace zypp void getDirectoryContent( MediaSetAccess &media, const OnMediaLocation &resource, filesystem::DirContent &content ); /** - * tries to provide the file represented by job into dest_dir by - * looking at the cache. If success, returns true, and the desired - * file should be available on dest_dir + * Tries to locate the file represented by job by looking at + * the cache (matching checksum is mandatory). Returns the + * location of the cached file or an empty \ref Pathname. */ - bool provideFromCache( const OnMediaLocation &resource, const Pathname &dest_dir ); + Pathname locateInCache( const OnMediaLocation & resource_r, const Pathname & destDir_r ); /** - * Validates the job against is checkers, by using the file instance - * on dest_dir + * Validates the provided file against its checkers. * \throws Exception */ - void validate( const OnMediaLocation &resource, const Pathname &dest_dir, const list &checkers ); + void validate( const Pathname & localfile_r, const std::list & checkers_r ); /** * scan the directory and adds the individual jobs @@ -214,7 +211,7 @@ namespace zypp /** * Provide the resource to \ref dest_dir */ - void provideToDest( MediaSetAccess &media, const OnMediaLocation &resource, const Pathname &dest_dir , const Pathname &deltafile); + void provideToDest( MediaSetAccess & media_r, const Pathname & destDir_r , const FetcherJob_Ptr & jobp_r ); private: friend Impl * rwcowClone( const Impl * rhs ); @@ -222,13 +219,13 @@ namespace zypp Impl * clone() const { return new Impl( *this ); } - list _resources; + std::list _resources; std::set _indexes; std::set _caches; // checksums read from the indexes - map _checksums; + std::map _checksums; // cache of dir contents - map _dircontent; + std::map _dircontent; Fetcher::Options _options; }; @@ -332,77 +329,48 @@ namespace zypp } - // tries to provide resource to dest_dir from any of the configured additional - // cache paths where the file may already be present. returns true if the - // file was provided from the cache. - bool Fetcher::Impl::provideFromCache( const OnMediaLocation &resource, const Pathname &dest_dir ) + Pathname Fetcher::Impl::locateInCache( const OnMediaLocation & resource_r, const Pathname & destDir_r ) { - Pathname dest_full_path = dest_dir + resource.filename(); + Pathname ret; + // No checksum - no match + if ( resource_r.checksum().empty() ) + return ret; // first check in the destination directory - if ( PathInfo(dest_full_path).isExist() ) + Pathname cacheLocation = destDir_r / resource_r.filename(); + if ( PathInfo(cacheLocation).isExist() && is_checksum( cacheLocation, resource_r.checksum() ) ) { - if ( is_checksum( dest_full_path, resource.checksum() ) - && (! resource.checksum().empty() ) ) - return true; + swap( ret, cacheLocation ); + return ret; } MIL << "start fetcher with " << _caches.size() << " cache directories." << endl; - for_ ( it_cache, _caches.begin(), _caches.end() ) + for( const Pathname & cacheDir : _caches ) { - // does the current file exists in the current cache? - Pathname cached_file = *it_cache + resource.filename(); - if ( PathInfo( cached_file ).isExist() ) + cacheLocation = cacheDir / resource_r.filename(); + if ( PathInfo(cacheLocation).isExist() && is_checksum( cacheLocation, resource_r.checksum() ) ) { - DBG << "File '" << cached_file << "' exist, testing checksum " << resource.checksum() << endl; - // check the checksum - if ( is_checksum( cached_file, resource.checksum() ) && (! resource.checksum().empty() ) ) - { - // cached - MIL << "file " << resource.filename() << " found in previous cache. Using cached copy." << endl; - // checksum is already checked. - // we could later implement double failover and try to download if file copy fails. - // replicate the complete path in the target directory - if( dest_full_path != cached_file ) - { - if ( assert_dir( dest_full_path.dirname() ) != 0 ) - ZYPP_THROW( Exception("Can't create " + dest_full_path.dirname().asString())); - - if ( filesystem::hardlinkCopy(cached_file, dest_full_path ) != 0 ) - { - ERR << "Can't hardlink/copy " << cached_file + " to " + dest_dir << endl; - continue; - } - } - // found in cache - return true; - } + MIL << "file " << resource_r.filename() << " found in cache " << cacheDir << endl; + swap( ret, cacheLocation ); + return ret; } - } // iterate over caches - return false; + } + + return ret; } - void Fetcher::Impl::validate( const OnMediaLocation &resource, const Pathname &dest_dir, const list &checkers ) + void Fetcher::Impl::validate( const Pathname & localfile_r, const std::list & checkers_r ) { - // no matter where did we got the file, try to validate it: - Pathname localfile = dest_dir + resource.filename(); - // call the checker function try { - MIL << "Checking job [" << localfile << "] (" << checkers.size() << " checkers )" << endl; + MIL << "Checking job [" << localfile_r << "] (" << checkers_r.size() << " checkers )" << endl; - for ( list::const_iterator it = checkers.begin(); - it != checkers.end(); - ++it ) + for ( const FileChecker & chkfnc : checkers_r ) { - if (*it) - { - (*it)(localfile); - } + if ( chkfnc ) + chkfnc( localfile_r ); else - { - ERR << "Invalid checker for '" << localfile << "'" << endl; - } + ERR << "Invalid checker for '" << localfile_r << "'" << endl; } } @@ -416,7 +384,7 @@ namespace zypp } catch (...) { - ZYPP_THROW(Exception("Unknown error while validating " + resource.filename().asString())); + ZYPP_THROW(Exception("Unknown error while validating " + localfile_r.asString())); } } @@ -535,59 +503,58 @@ namespace zypp } } - void Fetcher::Impl::provideToDest( MediaSetAccess &media, const OnMediaLocation &resource, const Pathname &dest_dir, const Pathname &deltafile ) + void Fetcher::Impl::provideToDest( MediaSetAccess & media_r, const Pathname & destDir_r , const FetcherJob_Ptr & jobp_r ) { - bool got_from_cache = false; - - // start look in cache - got_from_cache = provideFromCache(resource, dest_dir); + const OnMediaLocation & resource( jobp_r->location ); - if ( ! got_from_cache ) + try { - MIL << "Not found in cache, downloading" << endl; + scoped_ptr releaseFileGuard; // will take care provided files get released - // try to get the file from the net - try + // get cached file (by checksum) or provide from media + Pathname tmpFile = locateInCache( resource, destDir_r ); + if ( tmpFile.empty() ) { - Pathname tmp_file = media.provideFile(resource, resource.optional() ? MediaSetAccess::PROVIDE_NON_INTERACTIVE : MediaSetAccess::PROVIDE_DEFAULT, deltafile ); + MIL << "Not found in cache, retrieving..." << endl; + tmpFile = media_r.provideFile( resource, resource.optional() ? MediaSetAccess::PROVIDE_NON_INTERACTIVE : MediaSetAccess::PROVIDE_DEFAULT, jobp_r->deltafile ); + releaseFileGuard.reset( new MediaSetAccess::ReleaseFileGuard( media_r, resource ) ); // release it when we leave the block + } - Pathname dest_full_path = dest_dir + resource.filename(); + // The final destination: locateInCache also checks destFullPath! + // If we find a cache match (by checksum) at destFullPath, take + // care it gets deleted, in case the validation fails. + ManagedFile destFullPath( destDir_r / resource.filename() ); + if ( tmpFile == destFullPath ) + destFullPath.setDispose( filesystem::unlink ); - if ( assert_dir( dest_full_path.dirname() ) != 0 ) - ZYPP_THROW( Exception("Can't create " + dest_full_path.dirname().asString())); - if ( filesystem::hardlinkCopy( tmp_file, dest_full_path ) != 0 ) - { - if ( ! PathInfo(tmp_file).isExist() ) - ERR << tmp_file << " does not exist" << endl; - if ( ! PathInfo(dest_full_path.dirname()).isExist() ) - ERR << dest_full_path.dirname() << " does not exist" << endl; - - media.releaseFile(resource); //not needed anymore, only eat space - ZYPP_THROW( Exception("Can't hardlink/copy " + tmp_file.asString() + " to " + dest_dir.asString())); - } + // validate the file (throws if not valid) + validate( tmpFile, jobp_r->checkers ); - media.releaseFile(resource); //not needed anymore, only eat space - } - catch (Exception & excpt_r) + // move it to the final destination + if ( tmpFile == destFullPath ) + destFullPath.resetDispose(); // keep it! + else { - if ( resource.optional() ) - { - ZYPP_CAUGHT(excpt_r); - WAR << "optional resource " << resource << " could not be transferred" << endl; - return; - } - else - { - excpt_r.remember("Can't provide " + resource.filename().asString() ); - ZYPP_RETHROW(excpt_r); - } + if ( assert_dir( destFullPath->dirname() ) != 0 ) + ZYPP_THROW( Exception( "Can't create " + destFullPath->dirname().asString() ) ); + + if ( filesystem::hardlinkCopy( tmpFile, destFullPath ) != 0 ) + ZYPP_THROW( Exception( "Can't hardlink/copy " + tmpFile.asString() + " to " + destDir_r.asString() ) ); } } - else + catch ( Exception & excpt ) { - // We got the file from cache - // continue with next file - return; + if ( resource.optional() ) + { + ZYPP_CAUGHT( excpt ); + WAR << "optional resource " << resource << " could not be transferred." << endl; + return; + } + else + { + excpt.remember( "Can't provide " + resource.filename().asString() ); + ZYPP_RETHROW( excpt ); + } } } @@ -755,13 +722,12 @@ namespace zypp downloadAndReadIndexList(media, dest_dir); - for ( list::const_iterator it_res = _resources.begin(); it_res != _resources.end(); ++it_res ) + for ( const FetcherJob_Ptr & jobp : _resources ) { - - if ( (*it_res)->flags & FetcherJob::Directory ) + if ( jobp->flags & FetcherJob::Directory ) { - const OnMediaLocation location((*it_res)->location); - addDirJobs(media, location, dest_dir, (*it_res)->flags); + const OnMediaLocation location(jobp->location); + addDirJobs(media, location, dest_dir, jobp->flags); continue; } @@ -775,14 +741,14 @@ namespace zypp // index for each file. We look only in the directory // where the file is. this is expensive of course. filesystem::DirContent content; - getDirectoryContent(media, (*it_res)->location.filename().dirname(), content); + getDirectoryContent(media, jobp->location.filename().dirname(), content); // this method test for the option flags so indexes are added // only if the options are enabled MIL << "Autodiscovering signed indexes on '" - << (*it_res)->location.filename().dirname() << "' for '" - << (*it_res)->location.filename() << "'" << endl; + << jobp->location.filename().dirname() << "' for '" + << jobp->location.filename() << "'" << endl; - autoaddIndexes(content, media, (*it_res)->location.filename().dirname(), dest_dir); + autoaddIndexes(content, media, jobp->location.filename().dirname(), dest_dir); // also look in the root of the media content.clear(); @@ -791,50 +757,44 @@ namespace zypp // only if the options are enabled MIL << "Autodiscovering signed indexes on '" << "/" << "' for '" - << (*it_res)->location.filename() << "'" << endl; + << jobp->location.filename() << "'" << endl; autoaddIndexes(content, media, Pathname("/"), dest_dir); } - provideToDest(media, (*it_res)->location, dest_dir, (*it_res)->deltafile); - - // if the file was not transferred, and no exception, just - // return, as it was an optional file - if ( ! PathInfo(dest_dir + (*it_res)->location.filename()).isExist() ) - continue; - // if the checksum is empty, but the checksum is in one of the // indexes checksum, then add a checker - if ( (*it_res)->location.checksum().empty() ) + if ( jobp->location.checksum().empty() ) { - if ( _checksums.find((*it_res)->location.filename().asString()) + if ( _checksums.find(jobp->location.filename().asString()) != _checksums.end() ) { - CheckSum chksm = _checksums[(*it_res)->location.filename().asString()]; + CheckSum chksm = _checksums[jobp->location.filename().asString()]; ChecksumFileChecker digest_check(chksm); - (*it_res)->checkers.push_back(digest_check); + jobp->checkers.push_back(digest_check); } else { // if the index checksum is empty too, we only add the checker // if the AlwaysVerifyChecksum option is set on - if ( (*it_res)->flags & FetcherJob::AlwaysVerifyChecksum ) + if ( jobp->flags & FetcherJob::AlwaysVerifyChecksum ) { // add the checker with the empty checksum - ChecksumFileChecker digest_check((*it_res)->location.checksum()); - (*it_res)->checkers.push_back(digest_check); + ChecksumFileChecker digest_check(jobp->location.checksum()); + jobp->checkers.push_back(digest_check); } } } else { // checksum is not empty, so add a checksum checker - ChecksumFileChecker digest_check((*it_res)->location.checksum()); - (*it_res)->checkers.push_back(digest_check); + ChecksumFileChecker digest_check(jobp->location.checksum()); + jobp->checkers.push_back(digest_check); } - // validate job, this throws if not valid - validate((*it_res)->location, dest_dir, (*it_res)->checkers); + // Provide and validate the file. If the file was not transferred + // and no exception was thrown, it was an optional file. + provideToDest( media, dest_dir, jobp ); if ( ! progress.incr() ) ZYPP_THROW(AbortRequestException()); @@ -844,7 +804,7 @@ namespace zypp /** \relates Fetcher::Impl Stream output */ inline std::ostream & operator<<( std::ostream & str, const Fetcher::Impl & obj ) { - for ( list::const_iterator it_res = obj._resources.begin(); it_res != obj._resources.end(); ++it_res ) + for ( std::list::const_iterator it_res = obj._resources.begin(); it_res != obj._resources.end(); ++it_res ) { str << *it_res; } diff --git a/zypp/KeyManager.cc b/zypp/KeyManager.cc index 781a40c..ef4645d 100644 --- a/zypp/KeyManager.cc +++ b/zypp/KeyManager.cc @@ -48,8 +48,15 @@ std::ostream & operator<<( std::ostream & str, const GpgmeErr & obj ) static void initGpgme () { - gpgme_check_version(NULL); - + const char *version = gpgme_check_version(NULL); + if ( version ) + { + MIL << "Initialized libgpgme version: " << version << endl; + } + else + { + MIL << "Initialized libgpgme with unknown version" << endl; + } } namespace zypp @@ -61,9 +68,27 @@ public: Impl(); ~Impl(); - std::list verifyAndReadSignaturesFprs(const Pathname & file, const Pathname & signature, bool &verifed); + /** Return all fingerprints found in \a signature_r. */ + std::list readSignaturesFprs( const Pathname & signature_r ) + { return readSignaturesFprsOptVerify( signature_r ); } + + /** Tries to verify the \a file_r using \a signature_r. */ + bool verifySignaturesFprs( const Pathname & file_r, const Pathname & signature_r ) + { + bool verify = false; + readSignaturesFprsOptVerify( signature_r, file_r, &verify ); + return verify; + } gpgme_ctx_t _ctx; + +private: + /** Return all fingerprints found in \a signature_r and optionally verify the \a file_r on the fly. + * + * If \a verify_r is not a \c nullptr, log verification errors and return + * whether all signatures are good. + */ + std::list readSignaturesFprsOptVerify( const Pathname & signature_r, const Pathname & file_r = "/dev/null", bool * verify_r = nullptr ); }; KeyManagerCtx::Impl::Impl() @@ -76,21 +101,17 @@ KeyManagerCtx::KeyManagerCtx() } -/* - * \brief KeyManagerCtx::Impl::verifyAndReadSignaturesFprs - * Tries to verify the \a file using \a signature , will return all - * signatures and sets \a verified to true if all signatures are good - * \internal - */ -std::list KeyManagerCtx::Impl::verifyAndReadSignaturesFprs(const Pathname &file, const Pathname &signature, bool &verifed) +std::list KeyManagerCtx::Impl::readSignaturesFprsOptVerify( const Pathname & signature_r, const Pathname & file_r, bool * verify_r ) { //lets be pessimistic - verifed = false; + if ( verify_r ) + *verify_r = false; + - if (!PathInfo( signature ).isExist()) + if (!PathInfo( signature_r ).isExist()) return std::list(); - FILEPtr dataFile(fopen(file.c_str(), "rb"), fclose); + FILEPtr dataFile(fopen(file_r.c_str(), "rb"), fclose); if (!dataFile) return std::list(); @@ -101,9 +122,9 @@ std::list KeyManagerCtx::Impl::verifyAndReadSignaturesFprs(const Pa return std::list(); } - FILEPtr sigFile(fopen(signature.c_str(), "rb"), fclose); + FILEPtr sigFile(fopen(signature_r.c_str(), "rb"), fclose); if (!sigFile) { - ERR << "Unable to open signature file '" << signature << "'" <(); } @@ -128,20 +149,30 @@ std::list KeyManagerCtx::Impl::verifyAndReadSignaturesFprs(const Pa bool foundBadSignature = false; std::list signatures; - gpgme_signature_t sig = res->signatures; - while (sig) { - - if (!foundBadSignature) - foundBadSignature = (sig->status != GPG_ERR_NO_ERROR); - - if (!sig->fpr) - continue; - - signatures.push_back(str::asString(sig->fpr)); - sig = sig->next; + for ( gpgme_signature_t sig = res->signatures; sig; sig = sig->next ) { + + if ( sig->fpr ) + signatures.push_back(str::asString(sig->fpr)); + + if ( sig->status != GPG_ERR_NO_ERROR ) + { + if ( gpgme_err_code(sig->status) != GPG_ERR_KEY_EXPIRED ) + { + if ( !foundBadSignature ) + foundBadSignature = true; + if ( verify_r ) + WAR << "Failed signature check: " << file_r << " " << GpgmeErr(sig->status) << endl; + } + else + { + if ( verify_r ) + WAR << "Legacy: Ignore expired key: " << file_r << " " << GpgmeErr(sig->status) << endl; + } + } } - verifed = (!foundBadSignature); + if ( verify_r ) + *verify_r = (!foundBadSignature); return signatures; } @@ -253,9 +284,7 @@ bool KeyManagerCtx::verify(const Pathname &file, const Pathname &signature) if ( !PathInfo( file ).isExist() || !PathInfo( signature ).isExist() ) return false; - bool verified = false; - _pimpl->verifyAndReadSignaturesFprs(file, signature, verified); - return verified; + return _pimpl->verifySignaturesFprs(file, signature); } bool KeyManagerCtx::exportKey(const std::string &id, std::ostream &stream) @@ -375,13 +404,6 @@ bool KeyManagerCtx::deleteKey(const std::string &id) } std::list KeyManagerCtx::readSignatureFingerprints(const Pathname &signature) -{ - //gpgme needs a dummy file to read signatures from a detached sig file - //verification will fail but we get all signatures - zypp::filesystem::TmpFile dummyFile; - - bool verified = false; - return _pimpl->verifyAndReadSignaturesFprs(dummyFile.path(), signature, verified); -} +{ return _pimpl->readSignaturesFprs(signature); } } diff --git a/zypp/MediaSetAccess.h b/zypp/MediaSetAccess.h index 6116d1d..b4074a3 100644 --- a/zypp/MediaSetAccess.h +++ b/zypp/MediaSetAccess.h @@ -218,6 +218,36 @@ namespace zypp */ void releaseFile(const Pathname & file, unsigned media_nr = 1 ); + /////////////////////////////////////////////////////////////////// + /// \class MediaSetAccess::ReleaseFileGuard + /// \brief Release a provided file upon destruction. + /// In case you don't want to wait until the \ref MediaSetAccess + /// itself goes out of scope. + /// \code + /// MediaSetAccess media; + /// OnMediaLocation loc; + /// { + /// Pathname file = media.provideFile( loc ); + /// ReleaseFileGuard guard( media, loc ); + /// } // provided file is released here. + /// \endcode + /// \ingroup g_RAII + /////////////////////////////////////////////////////////////////// + struct ReleaseFileGuard + { + NON_COPYABLE( ReleaseFileGuard ); + NON_MOVABLE( ReleaseFileGuard ); + ReleaseFileGuard( MediaSetAccess & media_r, const OnMediaLocation & loc_r ) + : _media( media_r ) + , _loc( loc_r ) + {} + ~ReleaseFileGuard() + { _media.releaseFile( _loc ); } + private: + MediaSetAccess & _media; + const OnMediaLocation & _loc; + }; + /** * Provides direcotry \a dir from media number \a media_nr. * diff --git a/zypp/PathInfo.h b/zypp/PathInfo.h index 3242f5a..74baf03 100644 --- a/zypp/PathInfo.h +++ b/zypp/PathInfo.h @@ -734,7 +734,7 @@ namespace zypp /** * check files checksum * - * @return true if the checksum matchs + * @return true if the checksum matches (an empty Checksum always matches!) **/ bool is_checksum( const Pathname & file, const CheckSum &checksum ); diff --git a/zypp/ZConfig.cc b/zypp/ZConfig.cc index 59aad94..0adf08e 100644 --- a/zypp/ZConfig.cc +++ b/zypp/ZConfig.cc @@ -912,24 +912,44 @@ namespace zypp ? Pathname("/var/cache/zypp") : _pimpl->cfg_cache_path ); } + void ZConfig::setRepoCachePath(const zypp::filesystem::Pathname &path_r) + { + _pimpl->cfg_cache_path = path_r; + } + Pathname ZConfig::repoMetadataPath() const { return ( _pimpl->cfg_metadata_path.empty() ? (repoCachePath()/"raw") : _pimpl->cfg_metadata_path ); } + void ZConfig::setRepoMetadataPath(const zypp::filesystem::Pathname &path_r) + { + _pimpl->cfg_metadata_path = path_r; + } + Pathname ZConfig::repoSolvfilesPath() const { return ( _pimpl->cfg_solvfiles_path.empty() ? (repoCachePath()/"solv") : _pimpl->cfg_solvfiles_path ); } + void ZConfig::setRepoSolvfilesPath(const zypp::filesystem::Pathname &path_r) + { + _pimpl->cfg_solvfiles_path = path_r; + } + Pathname ZConfig::repoPackagesPath() const { return ( _pimpl->cfg_packages_path.empty() ? (repoCachePath()/"packages") : _pimpl->cfg_packages_path ); } + void ZConfig::setRepoPackagesPath(const zypp::filesystem::Pathname &path_r) + { + _pimpl->cfg_packages_path = path_r; + } + /////////////////////////////////////////////////////////////////// Pathname ZConfig::configPath() const @@ -1136,7 +1156,7 @@ namespace zypp /////////////////////////////////////////////////////////////////// std::string ZConfig::distroverpkg() const - { return "redhat-release"; } + { return "system-release"; } /////////////////////////////////////////////////////////////////// diff --git a/zypp/ZConfig.h b/zypp/ZConfig.h index 5d5158f..e5c42a1 100644 --- a/zypp/ZConfig.h +++ b/zypp/ZConfig.h @@ -144,12 +144,23 @@ namespace zypp */ Pathname repoCachePath() const; + /** + * Set a new \a path as the default repo cache path + */ + void setRepoCachePath ( const Pathname &path_r ); + /** * Path where the repo metadata is downloaded and kept (repoCachePath()/raw). * \ingroup g_ZC_REPOCACHE */ Pathname repoMetadataPath() const; + + /** + * Set a new \a path as the default repo cache path + */ + void setRepoMetadataPath ( const Pathname &path_r ); + /** * Path where the repo solv files are created and kept (repoCachePath()/solv). * \ingroup g_ZC_REPOCACHE @@ -157,12 +168,22 @@ namespace zypp Pathname repoSolvfilesPath() const; /** + * Set a new \a path as the default repo cache path + */ + void setRepoSolvfilesPath ( const Pathname &path_r ); + + /** * Path where the repo packages are downloaded and kept (repoCachePath()/packages). * \ingroup g_ZC_REPOCACHE */ Pathname repoPackagesPath() const; /** + * Set a new \a path as the default repo cache path + */ + void setRepoPackagesPath ( const Pathname &path_r ); + + /** * Path where the configfiles are kept (/etc/zypp). * \ingroup g_ZC_CONFIGFILES */ @@ -477,10 +498,10 @@ namespace zypp /** Package telling the "product version" on systems not using /etc/product.d/baseproduct. * * On RHEL, Fedora and others the "product version" is determined by the first package - * providing 'redhat-release'. This value is not hardcoded in YUM and can be configured + * providing 'system-release'. This value is not hardcoded in YUM and can be configured * with the $distroverpkg variable. * - * Defaults to 'redhat-release'. + * Defaults to 'system-release'. */ std::string distroverpkg() const; diff --git a/zypp/base/Flags.h b/zypp/base/Flags.h index e05eca5..8d697e7 100644 --- a/zypp/base/Flags.h +++ b/zypp/base/Flags.h @@ -112,7 +112,7 @@ namespace zypp constexpr bool testFlag( Enum flag_r ) const { return testFlag( integral(flag_r) ); } private: - constexpr bool testFlag( Integral flag ) { return flag ? ( _val & flag ) == flag : !_val; } + constexpr bool testFlag( Integral flag ) const { return flag ? ( _val & flag ) == flag : !_val; } constexpr static Integral integral( Flags obj ) { return obj._val; } constexpr static Integral integral( Enum obj ) { return static_cast(obj); } diff --git a/zypp/misc/CheckAccessDeleted.cc b/zypp/misc/CheckAccessDeleted.cc index 6588e85..07eec6c 100644 --- a/zypp/misc/CheckAccessDeleted.cc +++ b/zypp/misc/CheckAccessDeleted.cc @@ -232,10 +232,10 @@ namespace zypp { static const char * black[] = { "/SYSV" - , "/var/run/" - , "/var/lib/sss/" + , "/var/" , "/dev/" - , "/var/lib/gdm" + , "/tmp/" + , "/proc/" }; for_( it, arrayBegin( black ), arrayEnd( black ) ) { diff --git a/zypp/target/TargetImpl.cc b/zypp/target/TargetImpl.cc index 019cae5..4b98ff7 100644 --- a/zypp/target/TargetImpl.cc +++ b/zypp/target/TargetImpl.cc @@ -1782,7 +1782,7 @@ namespace zypp { // ...But the baseproduct method is not expected to work on RedHat derivatives. // On RHEL, Fedora and others the "product version" is determined by the first package - // providing 'redhat-release'. This value is not hardcoded in YUM and can be configured + // providing 'system-release'. This value is not hardcoded in YUM and can be configured // with the $distroverpkg variable. scoped_ptr tmprpmdb; if ( ZConfig::instance().systemRoot() == Pathname() ) diff --git a/zypp/target/rpm/RpmDb.h b/zypp/target/rpm/RpmDb.h index 506008b..a5b8a8a 100644 --- a/zypp/target/rpm/RpmDb.h +++ b/zypp/target/rpm/RpmDb.h @@ -326,8 +326,8 @@ public: /** Sync mode for \ref syncTrustedKeys */ enum SyncTrustedKeyBits { - SYNC_TO_KEYRING = 1<<0, //! export rpm trusted keys into zypp trusted keyring - SYNC_FROM_KEYRING = 1<<1, //! import zypp trusted keys into rpm database. + SYNC_TO_KEYRING = 1<<0, //!< export rpm trusted keys into zypp trusted keyring + SYNC_FROM_KEYRING = 1<<1, //!< import zypp trusted keys into rpm database. SYNC_BOTH = SYNC_TO_KEYRING | SYNC_FROM_KEYRING }; /** -- 2.7.4