diff options
151 files changed, 1144 insertions, 585 deletions
diff --git a/.travis.yml b/.travis.yml index 7931bb39a..131bf4abd 100644 --- a/.travis.yml +++ b/.travis.yml @@ -17,8 +17,7 @@ before_script: - make -C build -j4 script: - CTEST_OUTPUT_ON_FAILURE=1 make -C build test - - ./test/integration/run-tests -q + - chronic make -C build install DESTDIR=$PWD/rootdir + - ./test/integration/run-tests -qq - sudo adduser --force-badname --system --home /nonexistent --no-create-home --quiet _apt || true - - sudo ./test/integration/run-tests -q - - make -C build install DESTDIR=$PWD/rootdir - - find rootdir -print0 | xargs -0 ls -ld + - sudo ./test/integration/run-tests -qq diff --git a/CMake/Documentation.cmake b/CMake/Documentation.cmake index 9e7135ea4..f3bbfdc6b 100644 --- a/CMake/Documentation.cmake +++ b/CMake/Documentation.cmake @@ -24,6 +24,34 @@ # SOFTWARE. +find_path(DOCBOOK_XSL manpages/docbook.xsl + # Debian + /usr/share/xml/docbook/stylesheet/docbook-xsl + /usr/share/xml/docbook/stylesheet/nwalsh + # OpenSUSE + /usr/share/xml/docbook/stylesheet/nwalsh/current + # Arch + /usr/share/xml/docbook/xsl-stylesheets + # Fedora + /usr/share/sgml/docbook/xsl-stylesheets + # Fink + ${CMAKE_INSTALL_PREFIX}/share/xml/xsl/docbook-xsl + # FreeBSD + ${CMAKE_INSTALL_PREFIX}/share/xsl/docbook/ + NO_DEFAULT_PATH) + +if(NOT DOCBOOK_XSL) + message(FATAL_ERROR "Could not find docbook xsl") +endif() + +configure_file(${CMAKE_CURRENT_SOURCE_DIR}/docbook-text-style.xsl.cmake.in + ${CMAKE_CURRENT_BINARY_DIR}/docbook-text-style.xsl) +configure_file(${CMAKE_CURRENT_SOURCE_DIR}/docbook-html-style.xsl.cmake.in + ${CMAKE_CURRENT_BINARY_DIR}/docbook-html-style.xsl) +configure_file(${CMAKE_CURRENT_SOURCE_DIR}/manpage-style.xsl.cmake.in + ${CMAKE_CURRENT_BINARY_DIR}/manpage-style.xsl) + + # Split up a string of the form DOCUMENT[.DOCUMENT][.LANGUAGE][.SECTION].EXTENSION # # There might be up to two parts in the document name. The language must be @@ -75,7 +103,7 @@ function(po4a_one stamp_out out full_document language deps) OUTPUT ${stamp} COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_CURRENT_BINARY_DIR}/${language} COMMAND po4a --previous --no-backups - --package-name='${PROJECT}-doc' + --package-name='${PROJECT_NAME}-doc' --package-version='${PACKAGE_VERSION}' --msgid-bugs-address='${PACKAGE_MAIL}' --translate-only ${dest}.${ext} @@ -123,7 +151,8 @@ function(xsltproc_one) else() set(manpage_output "${CMAKE_CURRENT_BINARY_DIR}/${document}.${section}") endif() - set(manpage_stylesheet "${CMAKE_CURRENT_SOURCE_DIR}/manpage-style.xsl") + set(manpage_stylesheet "${CMAKE_CURRENT_BINARY_DIR}/manpage-style.xsl") + set(manpage_params) install(FILES ${manpage_output} DESTINATION ${CMAKE_INSTALL_MANDIR}/${language}/man${section} @@ -136,7 +165,7 @@ function(xsltproc_one) set(html_output "${CMAKE_CURRENT_BINARY_DIR}/${document}.html") endif() set(html_params --stringparam base.dir ${html_output}) - set(html_stylesheet "${CMAKE_CURRENT_SOURCE_DIR}/docbook-html-style.xsl") + set(html_stylesheet "${CMAKE_CURRENT_BINARY_DIR}/docbook-html-style.xsl") install(DIRECTORY ${html_output} DESTINATION ${DOC_INSTALL} OPTIONAL) @@ -149,7 +178,7 @@ function(xsltproc_one) set(text_output "${CMAKE_CURRENT_BINARY_DIR}/${document}.text") endif() set(text_params --stringparam base.dir ${text_output}) - set(text_stylesheet "${CMAKE_CURRENT_SOURCE_DIR}/docbook-text-style.xsl") + set(text_stylesheet "${CMAKE_CURRENT_BINARY_DIR}/docbook-text-style.xsl") file(RELATIVE_PATH text_output_relative ${CMAKE_CURRENT_BINARY_DIR} ${text_output}) @@ -221,6 +250,7 @@ endfunction() function(add_docbook target) set(generated "") set(options HTML TEXT MANPAGE ALL) + set(oneValueArgs) set(multiValueArgs INSTALL DOCUMENTS LINGUAS DEPENDS) cmake_parse_arguments(DOC "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) diff --git a/CMake/FindBerkeleyDB.cmake b/CMake/FindBerkeleyDB.cmake index 44cfd3ddb..34bc3b0d1 100644 --- a/CMake/FindBerkeleyDB.cmake +++ b/CMake/FindBerkeleyDB.cmake @@ -33,14 +33,25 @@ # THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# We need NO_DEFAULT_PATH here, otherwise CMake helpfully picks up the wrong +# db.h on BSD systems instead of the Berkeley DB one. find_path(BERKELEY_DB_INCLUDE_DIRS db.h - /usr/include/db5 + ${CMAKE_INSTALL_FULL_INCLUDEDIR}/db5 /usr/local/include/db5 - /usr/include/db4 + /usr/include/db5 + + ${CMAKE_INSTALL_FULL_INCLUDEDIR}/db4 /usr/local/include/db4 + /usr/include/db4 + + ${CMAKE_INSTALL_FULL_INCLUDEDIR} + /usr/local/include + /usr/include + + NO_DEFAULT_PATH ) -find_library(BERKELEY_DB_LIBRARIES NAMES db ) +find_library(BERKELEY_DB_LIBRARIES NAMES db db-5) include(FindPackageHandleStandardArgs) find_package_handle_standard_args(Berkeley "Could not find Berkeley DB >= 4.1" BERKELEY_DB_INCLUDE_DIRS BERKELEY_DB_LIBRARIES) diff --git a/CMake/FindIconv.cmake b/CMake/FindIconv.cmake new file mode 100644 index 000000000..67046d95d --- /dev/null +++ b/CMake/FindIconv.cmake @@ -0,0 +1,20 @@ +find_path(ICONV_INCLUDE_DIR NAMES iconv.h) + +find_library(ICONV_LIBRARY NAMES iconv) +if (ICONV_LIBRARY) + set(ICONV_SYMBOL_FOUND "${ICONV_LIBRARY}") +else() + check_function_exists(iconv_open ICONV_SYMBOL_FOUND) +endif() + +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args(Iconv DEFAULT_MESSAGE ICONV_INCLUDE_DIR ICONV_SYMBOL_FOUND) + +if(ICONV_LIBRARY) + set(ICONV_LIBRARIES "${ICONV_LIBRARY}") +else() + set(ICONV_LIBRARIES) +endif() +set(ICONV_INCLUDE_DIRS "${ICONV_INCLUDE_DIR}") + +mark_as_advanced(ICONV_LIBRARY ICONV_INCLUDE_DIR) diff --git a/CMake/FindLZ4.cmake b/CMake/FindLZ4.cmake new file mode 100644 index 000000000..597f520a8 --- /dev/null +++ b/CMake/FindLZ4.cmake @@ -0,0 +1,25 @@ +# - Try to find LZ4 +# Once done, this will define +# +# LZ4_FOUND - system has LZ4 +# LZ4_INCLUDE_DIRS - the LZ4 include directories +# LZ4_LIBRARIES - the LZ4 library +find_package(PkgConfig) + +pkg_check_modules(LZ4_PKGCONF liblz4) + +find_path(LZ4_INCLUDE_DIRS + NAMES lz4frame.h + PATHS ${LZ4_PKGCONF_INCLUDE_DIRS} +) + + +find_library(LZ4_LIBRARIES + NAMES lz4 + PATHS ${LZ4_PKGCONF_LIBRARY_DIRS} +) + +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args(LZ4 DEFAULT_MSG LZ4_INCLUDE_DIRS LZ4_LIBRARIES) + +mark_as_advanced(LZ4_INCLUDE_DIRS LZ4_LIBRARIES) diff --git a/CMake/FindLZMA.cmake b/CMake/FindLZMA.cmake new file mode 100644 index 000000000..6abc4fa77 --- /dev/null +++ b/CMake/FindLZMA.cmake @@ -0,0 +1,25 @@ +# - Try to find LZMA +# Once done, this will define +# +# LZMA_FOUND - system has LZMA +# LZMA_INCLUDE_DIRS - the LZMA include directories +# LZMA_LIBRARIES - the LZMA library +find_package(PkgConfig) + +pkg_check_modules(LZMA_PKGCONF liblzma) + +find_path(LZMA_INCLUDE_DIRS + NAMES lzma.h + PATHS ${LZMA_PKGCONF_INCLUDE_DIRS} +) + + +find_library(LZMA_LIBRARIES + NAMES lzma + PATHS ${LZMA_PKGCONF_LIBRARY_DIRS} +) + +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args(LZMA DEFAULT_MSG LZMA_INCLUDE_DIRS LZMA_LIBRARIES) + +mark_as_advanced(LZMA_INCLUDE_DIRS LZMA_LIBRARIES) diff --git a/CMake/Misc.cmake b/CMake/Misc.cmake index 68ab22758..82cb4da37 100644 --- a/CMake/Misc.cmake +++ b/CMake/Misc.cmake @@ -86,3 +86,16 @@ function(path_join out path1 path2) set(${out} "${path1}/${path2}" PARENT_SCOPE) endif() endfunction() + +# install_empty_directories(path ...) +# +# Creates empty directories in the install destination dir. Paths may be +# absolute or relative; in the latter case, the value of CMAKE_INSTALL_PREFIX +# is prepended. +function(install_empty_directories) + foreach(path ${ARGN}) + path_join(full_path "${CMAKE_INSTALL_PREFIX}" "${path}") + INSTALL(CODE "MESSAGE(STATUS \"Creating directory: \$ENV{DESTDIR}${full_path}\")" + CODE "FILE(MAKE_DIRECTORY \$ENV{DESTDIR}${full_path})") + endforeach() +endfunction() diff --git a/CMake/Translations.cmake b/CMake/Translations.cmake index 509e4e378..79f2633a7 100644 --- a/CMake/Translations.cmake +++ b/CMake/Translations.cmake @@ -11,6 +11,7 @@ function(apt_add_translation_domain) set(abs_files "") set(scripts "") set(abs_scripts "") + set(mofiles) set(targets ${NLS_TARGETS}) set(domain ${NLS_DOMAIN}) set(xgettext_params @@ -67,16 +68,19 @@ function(apt_add_translation_domain) # build a ${domain.pot}-tmp as a byproduct. The msgfmt command than depend # on the byproduct while their target depends on the output, so that msgfmt # does not have to be rerun if nothing in the template changed. + # + # Make sure the .pot-tmp has no line numbers, to avoid useless rebuilding + # of .mo files. add_custom_command (OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${domain}.pot BYPRODUCTS ${CMAKE_CURRENT_BINARY_DIR}/${domain}.pot-tmp - COMMAND msgcomm --more-than=0 --sort-by-file + COMMAND msgcomm --more-than=0 --omit-header --sort-by-file --add-location=file ${sh_pot} ${CMAKE_CURRENT_BINARY_DIR}/${domain}.c.pot - --output=${CMAKE_CURRENT_BINARY_DIR}/${domain}.pot - COMMAND msgcomm --more-than=0 --omit-header --sort-by-file + --output=${CMAKE_CURRENT_BINARY_DIR}/${domain}.pot-tmp0 + COMMAND msgcomm --more-than=0 --sort-by-file ${sh_pot} ${CMAKE_CURRENT_BINARY_DIR}/${domain}.c.pot - --output=${CMAKE_CURRENT_BINARY_DIR}/${domain}.pot-tmp0 + --output=${CMAKE_CURRENT_BINARY_DIR}/${domain}.pot COMMAND cmake -E copy_if_different ${CMAKE_CURRENT_BINARY_DIR}/${domain}.pot-tmp0 ${CMAKE_CURRENT_BINARY_DIR}/${domain}.pot-tmp @@ -146,7 +150,7 @@ function(apt_add_update_po) continue() endif() add_custom_target(update-po-${langcode} - COMMAND msgmerge -q --update --backup=none ${translation} ${output} + COMMAND msgmerge -q --previous --update --backup=none ${translation} ${output} DEPENDS nls-${master_name} ) add_dependencies(update-po update-po-${langcode}) diff --git a/CMake/config.h.in b/CMake/config.h.in index e929646fa..6f39e2f58 100644 --- a/CMake/config.h.in +++ b/CMake/config.h.in @@ -25,6 +25,12 @@ /* Define if we have sys/mount.h */ #cmakedefine HAVE_MOUNT_H +/* Define if we have sys/endian.h */ +#cmakedefine HAVE_SYS_ENDIAN_H + +/* Define if we have machine/endian.h */ +#cmakedefine HAVE_MACHINE_ENDIAN_H + /* Define if we have enabled pthread support */ #cmakedefine HAVE_PTHREAD @@ -49,6 +55,18 @@ /* The mail address to reach upstream */ #define PACKAGE_MAIL "${PACKAGE_MAIL}" +/* Various directories */ +#cmakedefine CMAKE_INSTALL_FULL_BINDIR "${CMAKE_INSTALL_FULL_BINDIR}" +#cmakedefine STATE_DIR "${STATE_DIR}" +#cmakedefine CACHE_DIR "${CACHE_DIR}" +#cmakedefine LOG_DIR "${LOG_DIR}" +#cmakedefine CONF_DIR "${CONF_DIR}" +#cmakedefine LIBEXEC_DIR "${LIBEXEC_DIR}" +#cmakedefine BIN_DIR "${BIN_DIR}" + +/* Group of the root user */ +#cmakedefine ROOT_GROUP "${ROOT_GROUP}" + #define APT_8_CLEANER_HEADERS #define APT_9_CLEANER_HEADERS #define APT_10_CLEANER_HEADERS diff --git a/CMake/endian.h.in b/CMake/endian.h.in new file mode 100644 index 000000000..1d9198c24 --- /dev/null +++ b/CMake/endian.h.in @@ -0,0 +1,9 @@ +#include <config.h> + +#ifdef HAVE_MACHINE_ENDIAN_H +#include <machine/endian.h> +#endif +#ifdef HAVE_SYS_ENDIAN_H +#include <sys/types.h> +#include <sys/endian.h> +#endif diff --git a/CMakeLists.txt b/CMakeLists.txt index 41115cb73..ee1adf7a2 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -4,6 +4,9 @@ # set minimum version project(apt) cmake_minimum_required(VERSION 3.4.0) +# Generic header locations +include_directories(${PROJECT_BINARY_DIR}/include) + enable_testing() @@ -19,15 +22,20 @@ endif() # Include stuff include(Misc) -include(Translations) include(CheckIncludeFiles) include(CheckFunctionExists) include(CheckStructHasMember) include(GNUInstallDirs) include(TestBigEndian) find_package(Threads) -find_package(PkgConfig) find_package(LFS REQUIRED) +find_package(Iconv REQUIRED) + +if(USE_NLS) + find_package(Intl REQUIRED) + link_libraries(${Intl_LIBRARIES}) + include_directories(${Intl_INCLUDE_DIRS}) +endif() # Add large file support add_compile_options(${LFS_COMPILE_OPTIONS}) @@ -79,25 +87,27 @@ if (BZIP2_FOUND) set(HAVE_BZ2 1) endif() -pkg_check_modules(LZMA liblzma) +find_package(LZMA) if (LZMA_FOUND) set(HAVE_LZMA 1) endif() -pkg_check_modules(LZ4 liblz4) + +find_package(LZ4) if (LZ4_FOUND) set(HAVE_LZ4 1) endif() # Mount()ing and stat()ing and friends +check_symbol_exists(statfs sys/vfs.h HAVE_VFS_H) +check_include_files(sys/params.h HAVE_PARAMS_H) +check_symbol_exists(statfs sys/mount.h HAVE_MOUNT_H) +if (NOT HAVE_VFS_H AND NOT HAVE_MOUNT_H) + message(FATAL_ERROR "Can find neither statvfs() nor statfs()") +endif() check_function_exists(statvfs HAVE_STATVFS) if (NOT HAVE_STATVFS) - check_symbol_exists(statfs sys/vfs.h HAVE_VFS_H) - check_symbol_exists(statfs sys/mount.h HAVE_MOUNT_H) - if (NOT HAVE_VFS_H AND NOT HAVE_MOUNT_H) - message(FATAL_ERROR "Can find neither statvfs() nor statfs()") - endif() configure_file(CMake/statvfs.h.in ${PROJECT_BINARY_DIR}/include/statvfs.h COPYONLY) endif() @@ -112,27 +122,75 @@ check_function_exists(ptsname_r HAVE_PTSNAME_R) check_function_exists(timegm HAVE_TIMEGM) test_big_endian(WORDS_BIGENDIAN) +# FreeBSD +add_definitions(-D_WITH_GETLINE=1) + if (CMAKE_USE_PTHREADS_INIT) set(HAVE_PTHREAD 1) endif() +CHECK_INCLUDE_FILES(machine/endian.h HAVE_MACHINE_ENDIAN_H) +CHECK_INCLUDE_FILES(sys/endian.h HAVE_SYS_ENDIAN_H) +CHECK_INCLUDE_FILES(endian.h HAVE_ENDIAN_H) +if (NOT HAVE_ENDIAN_H) + if (HAVE_MACHINE_ENDIAN_H OR HAVE_SYS_ENDIAN_H) + configure_file(CMake/endian.h.in ${PROJECT_BINARY_DIR}/include/endian.h) + else() + message(FATAL_ERROR "Cannot find endian.h") + endif() +endif() + + +include(CheckTypeSize) +set(CMAKE_EXTRA_INCLUDE_FILES "signal.h") +check_type_size("sig_t" SIG_T LANGUAGE "CXX") +check_type_size("sighandler_t" SIGHANDLER_T LANGUAGE "CXX") +set(CMAKE_EXTRA_INCLUDE_FILES) +if (NOT HAVE_SIGHANDLER_T) + if (HAVE_SIG_T) + add_definitions(-Dsighandler_t=sig_t) + else() + message(FATAL_ERROR "Platform defines neither sig_t nor sighandler_t") + endif() +endif() + +# Handle resolving +check_function_exists(res_init HAVE_LIBC_RESOLV) +if(HAVE_LIBC_RESOLV) + set(RESOLV_LIBRARIES) +else() + set(RESOLV_LIBRARIES -lresolv) +endif() + # Configure some variables like package, version and architecture. set(PACKAGE ${PROJECT_NAME}) set(PACKAGE_MAIL "APT Development Team <deity@lists.debian.org>") -set(PACKAGE_VERSION "1.3~rc2ubuntu3") +set(PACKAGE_VERSION "1.3~rc3") if (NOT DEFINED COMMON_ARCH) execute_process(COMMAND dpkg-architecture -qDEB_HOST_ARCH OUTPUT_VARIABLE COMMON_ARCH OUTPUT_STRIP_TRAILING_WHITESPACE) endif() +if (NOT DEFINED ROOT_GROUP) + execute_process(COMMAND id -gn root + OUTPUT_VARIABLE ROOT_GROUP OUTPUT_STRIP_TRAILING_WHITESPACE) + message(STATUS "Found root group: ${ROOT_GROUP}") +endif() +set(ROOT_GROUP "${ROOT_GROUP}" CACHE STRING "Group of root (e.g.: wheel or root)") + +# Set various directories +set(STATE_DIR "${CMAKE_INSTALL_FULL_LOCALSTATEDIR}/lib/apt" CACHE PATH "Your /var/lib/apt") +set(CACHE_DIR "${CMAKE_INSTALL_FULL_LOCALSTATEDIR}/cache/apt" CACHE PATH "Your /var/cache/apt") +set(LOG_DIR "${CMAKE_INSTALL_FULL_LOCALSTATEDIR}/log/apt" CACHE PATH "Your /var/log/apt") +set(CONF_DIR "${CMAKE_INSTALL_FULL_SYSCONFDIR}/apt" CACHE PATH "Your /etc/apt") +set(LIBEXEC_DIR "${CMAKE_INSTALL_FULL_LIBEXECDIR}/apt" CACHE PATH "Your /usr/libexec/apt") +set(BIN_DIR "${CMAKE_INSTALL_FULL_BINDIR}") + # Configure our configuration headers (config.h and apti18n.h) configure_file(CMake/config.h.in ${PROJECT_BINARY_DIR}/include/config.h) configure_file(CMake/apti18n.h.in ${PROJECT_BINARY_DIR}/include/apti18n.h) -# Generic header locations -include_directories(${PROJECT_BINARY_DIR}/include) - # Add our subdirectories add_subdirectory(vendor) add_subdirectory(apt-pkg) @@ -144,8 +202,24 @@ add_subdirectory(doc) add_subdirectory(dselect) add_subdirectory(ftparchive) add_subdirectory(methods) -add_subdirectory(po) add_subdirectory(test) +if (USE_NLS) +add_subdirectory(po) + # Link update-po4a into the update-po target add_dependencies(update-po update-po4a) +endif() + +# Create our directories. +install_empty_directories( + ${CONF_DIR}/apt.conf.d + ${CONF_DIR}/preferences.d + ${CONF_DIR}/sources.list.d + ${CONF_DIR}/trusted.gpg.d + ${CACHE_DIR}/archives/partial + ${STATE_DIR}/lists/partial + ${STATE_DIR}/mirrors/partial + ${STATE_DIR}/periodic + ${LOG_DIR} +) @@ -20,4 +20,3 @@ License: GPLv2+ See /usr/share/common-licenses/GPL-2, or <http://www.gnu.org/copyleft/gpl.txt> for the terms of the latest version of the GNU General Public License. - diff --git a/apt-inst/deb/debfile.cc b/apt-inst/deb/debfile.cc index 4853a13c7..474fb1cbe 100644 --- a/apt-inst/deb/debfile.cc +++ b/apt-inst/deb/debfile.cc @@ -113,7 +113,7 @@ bool debDebFile::ExtractTarMember(pkgDirStream &Stream,const char *Name) Member = AR.FindMember(std::string(Name).append(c->Extension).c_str()); if (Member == NULL) continue; - Compressor = c->Binary; + Compressor = c->Name; break; } diff --git a/apt-pkg/CMakeLists.txt b/apt-pkg/CMakeLists.txt index ec78f49c4..34930c8e9 100644 --- a/apt-pkg/CMakeLists.txt +++ b/apt-pkg/CMakeLists.txt @@ -26,16 +26,21 @@ add_dependencies(apt-pkg apt-pkg-versionscript) # Link the library and set the SONAME target_include_directories(apt-pkg PRIVATE ${ZLIB_INCLUDE_DIRS} - ${BZIP2_INCLUDE_DIRS} + ${BZIP2_INCLUDE_DIR} ${LZMA_INCLUDE_DIRS} - ${LZ4_INCLUDE_DIRS}) + ${LZ4_INCLUDE_DIRS} + ${ICONV_DIRECTORIES} +) + target_link_libraries(apt-pkg - PRIVATE -lutil -ldl -lresolv + PRIVATE -lutil ${CMAKE_DL_LIBS} ${RESOLV_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT} ${ZLIB_LIBRARIES} ${BZIP2_LIBRARIES} ${LZMA_LIBRARIES} - ${LZ4_LIBRARIES}) + ${LZ4_LIBRARIES} + ${ICONV_LIBRARIES} +) set_target_properties(apt-pkg PROPERTIES VERSION ${MAJOR}.${MINOR}) set_target_properties(apt-pkg PROPERTIES SOVERSION ${MAJOR}) add_version_script(apt-pkg) diff --git a/apt-pkg/acquire-item.cc b/apt-pkg/acquire-item.cc index 7abb7b206..0e1614330 100644 --- a/apt-pkg/acquire-item.cc +++ b/apt-pkg/acquire-item.cc @@ -46,6 +46,7 @@ #include <ctime> #include <sstream> #include <numeric> +#include <random> #include <apti18n.h> /*}}}*/ @@ -145,7 +146,7 @@ static void ReportMirrorFailureToCentral(pkgAcquire::Item const &I, std::string << FailCode << std::endl; #endif string const report = _config->Find("Methods::Mirror::ProblemReporting", - "/usr/lib/apt/apt-report-mirror-failure"); + LIBEXEC_DIR "/apt-report-mirror-failure"); if(!FileExists(report)) return; @@ -1340,6 +1341,23 @@ void pkgAcqMetaClearSig::QueueIndexes(bool const verify) /*{{{*/ if (hasReleaseFile && verify == false) hasHashes = std::any_of(IndexTargets.begin(), IndexTargets.end(), [&](IndexTarget const &Target) { return TransactionManager->MetaIndexParser->Exists(Target.MetaKey); }); + if (_config->FindB("Acquire::IndexTargets::Randomized", true) && likely(IndexTargets.empty() == false)) + { + /* For fallback handling and to have some reasonable progress information + we can't randomize everything, but at least the order in the same type + can be as we shouldn't be telling the mirrors (and everyone else watching) + which is native/foreign arch, specific order of preference of translations, … */ + auto range_start = IndexTargets.begin(); + std::random_device rd; + std::default_random_engine g(rd()); + do { + auto const type = range_start->Option(IndexTarget::CREATED_BY); + auto const range_end = std::find_if_not(range_start, IndexTargets.end(), + [&type](IndexTarget const &T) { return type == T.Option(IndexTarget::CREATED_BY); }); + std::shuffle(range_start, range_end, g); + range_start = range_end; + } while (range_start != IndexTargets.end()); + } for (auto&& Target: IndexTargets) { // if we have seen a target which is created-by a target this one here is declared a @@ -2047,7 +2065,7 @@ bool pkgAcqDiffIndex::ParseDiffIndex(string const &IndexDiffFile) /*{{{*/ HashStringList ServerHashes; unsigned long long ServerSize = 0; - auto const &posix = std::locale("C.UTF-8"); + auto const &posix = std::locale::classic(); for (char const * const * type = HashString::SupportedHashes(); *type != NULL; ++type) { std::string tagname = *type; @@ -3279,9 +3297,8 @@ bool pkgAcqArchive::QueueNext() // Create the item Local = false; - QueueURI(Desc); - ++Vf; + QueueURI(Desc); return true; } return false; @@ -3440,7 +3457,7 @@ void pkgAcqChangelog::Init(std::string const &DestDir, std::string const &DestFi TemporaryDirectory = tmpname; ChangeOwnerAndPermissionOfFile("Item::QueueURI", TemporaryDirectory.c_str(), - SandboxUser.c_str(), "root", 0700); + SandboxUser.c_str(), ROOT_GROUP, 0700); DestFile = flCombine(TemporaryDirectory, DestFileName); if (DestDir.empty() == false) @@ -3488,7 +3505,8 @@ std::string pkgAcqChangelog::URI(pkgCache::VerIterator const &Ver) /*{{{*/ pkgCache::PkgIterator const Pkg = Ver.ParentPkg(); if (Pkg->CurrentVer != 0 && Pkg.CurrentVer() == Ver) { - std::string const basename = std::string("/usr/share/doc/") + Pkg.Name() + "/changelog"; + std::string const root = _config->FindDir("Dir"); + std::string const basename = root + std::string("usr/share/doc/") + Pkg.Name() + "/changelog"; std::string const debianname = basename + ".Debian"; if (FileExists(debianname)) return "copy://" + debianname; diff --git a/apt-pkg/acquire-worker.cc b/apt-pkg/acquire-worker.cc index a4fbc7651..7d6e6f79c 100644 --- a/apt-pkg/acquire-worker.cc +++ b/apt-pkg/acquire-worker.cc @@ -661,55 +661,15 @@ bool pkgAcquire::Worker::QueueItem(pkgAcquire::Queue::QItem *Item) if (OutFd == -1) return false; - HashStringList const hsl = Item->GetExpectedHashes(); - if (isDoomedItem(Item->Owner)) return true; - if (hsl.usable() == false && Item->Owner->HashesRequired() && - _config->Exists("Acquire::ForceHash") == false) - { - std::string const Message = "400 URI Failure" - "\nURI: " + Item->URI + - "\nFilename: " + Item->Owner->DestFile + - "\nFailReason: WeakHashSums"; - - auto const ItmOwners = Item->Owners; - for (auto &O: ItmOwners) - { - O->Status = pkgAcquire::Item::StatAuthError; - O->Failed(Message, Config); - if (Log != nullptr) - Log->Fail(O->GetItemDesc()); - } - // "queued" successfully, the item just instantly failed - return true; - } - - if (Item->Owner->IsRedirectionLoop(Item->URI)) - { - std::string const Message = "400 URI Failure" - "\nURI: " + Item->URI + - "\nFilename: " + Item->Owner->DestFile + - "\nFailReason: RedirectionLoop"; - - auto const ItmOwners = Item->Owners; - for (auto &O: ItmOwners) - { - O->Status = pkgAcquire::Item::StatError; - O->Failed(Message, Config); - if (Log != nullptr) - Log->Fail(O->GetItemDesc()); - } - // "queued" successfully, the item just instantly failed - return true; - } - string Message = "600 URI Acquire\n"; Message.reserve(300); Message += "URI: " + Item->URI; Message += "\nFilename: " + Item->Owner->DestFile; + HashStringList const hsl = Item->GetExpectedHashes(); for (HashStringList::const_iterator hs = hsl.begin(); hs != hsl.end(); ++hs) Message += "\nExpected-" + hs->HashType() + ": " + hs->HashValue(); @@ -732,7 +692,7 @@ bool pkgAcquire::Worker::QueueItem(pkgAcquire::Queue::QItem *Item) { std::string const SandboxUser = _config->Find("APT::Sandbox::User"); ChangeOwnerAndPermissionOfFile("Item::QueueURI", Item->Owner->DestFile.c_str(), - SandboxUser.c_str(), "root", 0600); + SandboxUser.c_str(), ROOT_GROUP, 0600); } if (Debug == true) @@ -828,7 +788,7 @@ void pkgAcquire::Worker::PrepareFiles(char const * const caller, pkgAcquire::Que { if (RealFileExists(Itm->Owner->DestFile)) { - ChangeOwnerAndPermissionOfFile(caller, Itm->Owner->DestFile.c_str(), "root", "root", 0644); + ChangeOwnerAndPermissionOfFile(caller, Itm->Owner->DestFile.c_str(), "root", ROOT_GROUP, 0644); std::string const filename = Itm->Owner->DestFile; for (pkgAcquire::Queue::QItem::owner_iterator O = Itm->Owners.begin(); O != Itm->Owners.end(); ++O) { diff --git a/apt-pkg/acquire.cc b/apt-pkg/acquire.cc index 1efb772b4..b4d1b5959 100644 --- a/apt-pkg/acquire.cc +++ b/apt-pkg/acquire.cc @@ -80,7 +80,7 @@ void pkgAcquire::Initialize() if (getuid() == 0 && SandboxUser.empty() == false && SandboxUser != "root") // if we aren't root, we can't chown, so don't try it { struct passwd const * const pw = getpwnam(SandboxUser.c_str()); - struct group const * const gr = getgrnam("root"); + struct group const * const gr = getgrnam(ROOT_GROUP); if (pw != NULL && gr != NULL) { std::string const AuthConf = _config->FindFile("Dir::Etc::netrc"); @@ -106,7 +106,7 @@ static bool SetupAPTPartialDirectory(std::string const &grand, std::string const if (getuid() == 0 && SandboxUser.empty() == false && SandboxUser != "root") // if we aren't root, we can't chown, so don't try it { struct passwd const * const pw = getpwnam(SandboxUser.c_str()); - struct group const * const gr = getgrnam("root"); + struct group const * const gr = getgrnam(ROOT_GROUP); if (pw != NULL && gr != NULL) { // chown the partial dir @@ -269,6 +269,42 @@ void pkgAcquire::Remove(Worker *Work) it is constructed which creates a queue (based on the current queue mode) and puts the item in that queue. If the system is running then the queue might be started. */ +static bool CheckForBadItemAndFailIt(pkgAcquire::Item * const Item, + pkgAcquire::MethodConfig const * const Config, pkgAcquireStatus * const Log) +{ + auto SavedDesc = Item->GetItemDesc(); + if (Item->IsRedirectionLoop(SavedDesc.URI)) + { + std::string const Message = "400 URI Failure" + "\nURI: " + SavedDesc.URI + + "\nFilename: " + Item->DestFile + + "\nFailReason: RedirectionLoop"; + + Item->Status = pkgAcquire::Item::StatError; + Item->Failed(Message, Config); + if (Log != nullptr) + Log->Fail(SavedDesc); + return true; + } + + HashStringList const hsl = Item->GetExpectedHashes(); + if (hsl.usable() == false && Item->HashesRequired() && + _config->Exists("Acquire::ForceHash") == false) + { + std::string const Message = "400 URI Failure" + "\nURI: " + SavedDesc.URI + + "\nFilename: " + Item->DestFile + + "\nFailReason: WeakHashSums"; + + auto SavedDesc = Item->GetItemDesc(); + Item->Status = pkgAcquire::Item::StatAuthError; + Item->Failed(Message, Config); + if (Log != nullptr) + Log->Fail(SavedDesc); + return true; + } + return false; +} void pkgAcquire::Enqueue(ItemDesc &Item) { // Determine which queue to put the item in @@ -277,6 +313,13 @@ void pkgAcquire::Enqueue(ItemDesc &Item) if (Name.empty() == true) return; + /* the check for running avoids that we produce errors + in logging before we actually have started, which would + be easier to implement but would confuse users/implementations + so we check the items skipped here in #Startup */ + if (Running && CheckForBadItemAndFailIt(Item.Owner, Config, Log)) + return; + // Find the queue structure Queue *I = Queues; for (; I != 0 && I->Name != Name; I = I->Next); @@ -912,10 +955,20 @@ bool pkgAcquire::Queue::Startup() if (Workers == 0) { URI U(Name); - pkgAcquire::MethodConfig *Cnf = Owner->GetConfig(U.Access); - if (Cnf == 0) + pkgAcquire::MethodConfig * const Cnf = Owner->GetConfig(U.Access); + if (unlikely(Cnf == nullptr)) return false; - + + // now-running twin of the pkgAcquire::Enqueue call + for (QItem *I = Items; I != 0; ) + { + auto const INext = I->Next; + for (auto &&O: I->Owners) + CheckForBadItemAndFailIt(O, Cnf, Owner->Log); + // if an item failed, it will be auto-dequeued invalidation our I here + I = INext; + } + Workers = new Worker(this,Cnf,Owner->Log); Owner->Add(Workers); if (Workers->Start() == false) @@ -1259,7 +1312,7 @@ bool pkgAcquireStatus::Pulse(pkgAcquire *Owner) // build the status str std::ostringstream str; - str.imbue(std::locale("C.UTF-8")); + str.imbue(std::locale::classic()); str.precision(4); str << "dlstatus" << ':' << std::fixed << i << ':' << Percent << ':' << msg << '\n'; auto const dlstatus = str.str(); diff --git a/apt-pkg/contrib/gpgv.cc b/apt-pkg/contrib/gpgv.cc index 8796195b8..941f901e8 100644 --- a/apt-pkg/contrib/gpgv.cc +++ b/apt-pkg/contrib/gpgv.cc @@ -48,7 +48,7 @@ void ExecGPGV(std::string const &File, std::string const &FileGPG, int const &statusfd, int fd[2], std::string const &key) { #define EINTERNAL 111 - std::string const aptkey = _config->Find("Dir::Bin::apt-key", "/usr/bin/apt-key"); + std::string const aptkey = _config->Find("Dir::Bin::apt-key", CMAKE_INSTALL_FULL_BINDIR "/apt-key"); bool const Debug = _config->FindB("Debug::Acquire::gpgv", false); struct exiter { diff --git a/apt-pkg/contrib/strutl.cc b/apt-pkg/contrib/strutl.cc index 6c72859d4..66b0078dc 100644 --- a/apt-pkg/contrib/strutl.cc +++ b/apt-pkg/contrib/strutl.cc @@ -21,6 +21,7 @@ #include <apt-pkg/fileutl.h> #include <apt-pkg/error.h> +#include <array> #include <algorithm> #include <iomanip> #include <locale> @@ -758,7 +759,7 @@ string TimeRFC1123(time_t Date, bool const NumericTimezone) if (gmtime_r(&Date, &Conv) == NULL) return ""; - auto const posix = std::locale("C.UTF-8"); + auto const posix = std::locale::classic(); std::ostringstream datestr; datestr.imbue(posix); APT::StringView const fmt("%a, %d %b %Y %H:%M:%S"); @@ -945,7 +946,7 @@ bool RFC1123StrToTime(const char* const str,time_t &time) signed int year = 0; // yes, Y23K problem – we gonna worry then… std::string weekday, month, datespec, timespec, zone; std::istringstream ss(str); - auto const &posix = std::locale("C.UTF-8"); + auto const &posix = std::locale::classic(); ss.imbue(posix); ss >> weekday; // we only superficially check weekday, mostly to avoid accepting localized diff --git a/apt-pkg/deb/debindexfile.cc b/apt-pkg/deb/debindexfile.cc index 65bd3e6ee..c55847305 100644 --- a/apt-pkg/deb/debindexfile.cc +++ b/apt-pkg/deb/debindexfile.cc @@ -30,6 +30,7 @@ #include <sstream> #include <sys/stat.h> +#include <unistd.h> /*}}}*/ // Sources Index /*{{{*/ diff --git a/apt-pkg/deb/debsystem.cc b/apt-pkg/deb/debsystem.cc index f7968ec47..899f7328b 100644 --- a/apt-pkg/deb/debsystem.cc +++ b/apt-pkg/deb/debsystem.cc @@ -188,7 +188,7 @@ static std::string getDpkgStatusLocation(Configuration const &Cnf) { Configuration PathCnf; PathCnf.Set("Dir", Cnf.Find("Dir", "/")); PathCnf.Set("Dir::State::status", "status"); - auto const cnfstatedir = Cnf.Find("Dir::State", "var/lib/apt/"); + auto const cnfstatedir = Cnf.Find("Dir::State", STATE_DIR + 1); // if the state dir ends in apt, replace it with dpkg - // for the default this gives us the same as the fallback below. // This can't be a ../dpkg as that would play bad with symlinks @@ -211,7 +211,7 @@ bool debSystem::Initialize(Configuration &Cnf) Cnf.CndSet("Dir::State::extended_states", "extended_states"); if (Cnf.Exists("Dir::State::status") == false) Cnf.Set("Dir::State::status", getDpkgStatusLocation(Cnf)); - Cnf.CndSet("Dir::Bin::dpkg","/usr/bin/dpkg"); + Cnf.CndSet("Dir::Bin::dpkg",BIN_DIR"/dpkg"); if (d->StatusFile) { delete d->StatusFile; @@ -239,9 +239,9 @@ APT_PURE bool debSystem::ArchiveSupported(const char *Type) signed debSystem::Score(Configuration const &Cnf) { signed Score = 0; - if (FileExists(Cnf.FindFile("Dir::State::status","/var/lib/dpkg/status")) == true) + if (FileExists(Cnf.FindFile("Dir::State::status",getDpkgStatusLocation(Cnf).c_str())) == true) Score += 10; - if (FileExists(Cnf.Find("Dir::Bin::dpkg","/usr/bin/dpkg")) == true) + if (FileExists(Cnf.Find("Dir::Bin::dpkg",BIN_DIR"/dpkg")) == true) Score += 10; if (FileExists("/etc/debian_version") == true) Score += 10; diff --git a/apt-pkg/deb/dpkgpm.cc b/apt-pkg/deb/dpkgpm.cc index c8807b82c..9d1739d68 100644 --- a/apt-pkg/deb/dpkgpm.cc +++ b/apt-pkg/deb/dpkgpm.cc @@ -61,6 +61,8 @@ #include <apti18n.h> /*}}}*/ +extern char **environ; + using namespace std; APT_PURE static string AptHistoryRequestingUser() /*{{{*/ @@ -417,7 +419,6 @@ bool pkgDPkgPM::SendPkgsInfo(FILE * const F, unsigned int const &Version) bool pkgDPkgPM::RunScriptsWithPkgs(const char *Cnf) { bool result = true; - static bool interrupted = false; Configuration::Item const *Opts = _config->Tree(Cnf); if (Opts == 0 || Opts->Child == 0) @@ -425,9 +426,8 @@ bool pkgDPkgPM::RunScriptsWithPkgs(const char *Cnf) Opts = Opts->Child; sighandler_t old_sigpipe = signal(SIGPIPE, SIG_IGN); - sighandler_t old_sigint = signal(SIGINT, [](int signum){ - interrupted = true; - }); + sighandler_t old_sigint = signal(SIGINT, SIG_IGN); + sighandler_t old_sigquit = signal(SIGQUIT, SIG_IGN); unsigned int Count = 1; for (; Opts != 0; Opts = Opts->Next, Count++) @@ -528,9 +528,7 @@ bool pkgDPkgPM::RunScriptsWithPkgs(const char *Cnf) } signal(SIGINT, old_sigint); signal(SIGPIPE, old_sigpipe); - - if (interrupted) - result = _error->Error("Interrupted"); + signal(SIGQUIT, old_sigquit); return result; } @@ -1343,10 +1341,16 @@ bool pkgDPkgPM::Go(APT::Progress::PackageManager *progress) std::distance(List.cbegin(), List.cend()); ExpandPendingCalls(List, Cache); - auto const StripAlreadyDoneFromPending = [&](APT::VersionVector & Pending) { + /* if dpkg told us that it has already done everything to the package we wanted it to do, + we shouldn't ask it for "more" later. That can e.g. happen if packages without conffiles + are purged as they will have pass through the purge states on remove already */ + auto const StripAlreadyDoneFrom = [&](APT::VersionVector & Pending) { Pending.erase(std::remove_if(Pending.begin(), Pending.end(), [&](pkgCache::VerIterator const &Ver) { auto const PN = Ver.ParentPkg().FullName(); - return PackageOps[PN].size() <= PackageOpsDone[PN]; + auto const POD = PackageOpsDone.find(PN); + if (POD == PackageOpsDone.end()) + return false; + return PackageOps[PN].size() <= POD->second; }), Pending.end()); }; @@ -1679,7 +1683,9 @@ bool pkgDPkgPM::Go(APT::Progress::PackageManager *progress) { if (I->File[0] != '/') return _error->Error("Internal Error, Pathname to install is not absolute '%s'",I->File.c_str()); - auto const file = flNotDir(I->File); + auto file = flNotDir(I->File); + if (flExtension(file) != "deb") + file.append(".deb"); std::string linkpath; if (dpkg_recursive_install_numbered) strprintf(linkpath, "%s/%.*lu-%s", tmpdir_to_free, p, n, file.c_str()); @@ -1705,7 +1711,7 @@ bool pkgDPkgPM::Go(APT::Progress::PackageManager *progress) else if (I->Op == Item::RemovePending) { ++I; - StripAlreadyDoneFromPending(approvedStates.Remove()); + StripAlreadyDoneFrom(approvedStates.Remove()); if (approvedStates.Remove().empty()) continue; } @@ -1714,7 +1720,7 @@ bool pkgDPkgPM::Go(APT::Progress::PackageManager *progress) ++I; // explicit removes of packages without conffiles passthrough the purge states instantly, too. // Setting these non-installed packages up for purging generates 'unknown pkg' warnings from dpkg - StripAlreadyDoneFromPending(approvedStates.Purge()); + StripAlreadyDoneFrom(approvedStates.Purge()); if (approvedStates.Purge().empty()) continue; std::remove_reference<decltype(approvedStates.Remove())>::type approvedRemoves; @@ -1966,8 +1972,8 @@ bool pkgDPkgPM::Go(APT::Progress::PackageManager *progress) if (d->dpkg_error.empty() == false) { // no point in reseting packages we already completed removal for - StripAlreadyDoneFromPending(approvedStates.Remove()); - StripAlreadyDoneFromPending(approvedStates.Purge()); + StripAlreadyDoneFrom(approvedStates.Remove()); + StripAlreadyDoneFrom(approvedStates.Purge()); APT::StateChanges undo; auto && undoRem = approvedStates.Remove(); std::move(undoRem.begin(), undoRem.end(), std::back_inserter(undo.Install())); @@ -1977,6 +1983,9 @@ bool pkgDPkgPM::Go(APT::Progress::PackageManager *progress) if (undo.Save(false) == false) _error->Error("Couldn't revert dpkg selection for approved remove/purge after an error was encountered!"); } + + StripAlreadyDoneFrom(currentStates.Remove()); + StripAlreadyDoneFrom(currentStates.Purge()); if (currentStates.Save(false) == false) _error->Error("Couldn't restore dpkg selection states which were present before this interaction!"); diff --git a/apt-pkg/edsp/edsplistparser.cc b/apt-pkg/edsp/edsplistparser.cc index dd8890f0e..c6fd528da 100644 --- a/apt-pkg/edsp/edsplistparser.cc +++ b/apt-pkg/edsp/edsplistparser.cc @@ -21,6 +21,8 @@ #include <apt-pkg/fileutl.h> #include <apt-pkg/pkgsystem.h> +#include <array> + /*}}}*/ // ListParser::edspListParser - Constructor /*{{{*/ diff --git a/apt-pkg/indexcopy.cc b/apt-pkg/indexcopy.cc index 4a35e3847..ca5c42cb7 100644 --- a/apt-pkg/indexcopy.cc +++ b/apt-pkg/indexcopy.cc @@ -207,7 +207,7 @@ bool IndexCopy::CopyPackages(string CDROM,string Name,vector<string> &List, FinalF += URItoFileName(S); if (rename(TargetF.c_str(),FinalF.c_str()) != 0) return _error->Errno("rename","Failed to rename"); - ChangeOwnerAndPermissionOfFile("CopyPackages", FinalF.c_str(), "root", "root", 0644); + ChangeOwnerAndPermissionOfFile("CopyPackages", FinalF.c_str(), "root", ROOT_GROUP, 0644); } /* Mangle the source to be in the proper notation with @@ -531,7 +531,7 @@ bool SigVerify::CopyMetaIndex(string CDROM, string CDName, /*{{{*/ Rel.Open(prefix + file,FileFd::ReadOnly); if (CopyFile(Rel,Target) == false || Target.Close() == false) return _error->Error("Copying of '%s' for '%s' from '%s' failed", file.c_str(), CDName.c_str(), prefix.c_str()); - ChangeOwnerAndPermissionOfFile("CopyPackages", TargetF.c_str(), "root", "root", 0644); + ChangeOwnerAndPermissionOfFile("CopyPackages", TargetF.c_str(), "root", ROOT_GROUP, 0644); return true; } @@ -738,7 +738,7 @@ bool TranslationsCopy::CopyTranslations(string CDROM,string Name, /*{{{*/ FinalF += URItoFileName(S); if (rename(TargetF.c_str(),FinalF.c_str()) != 0) return _error->Errno("rename","Failed to rename"); - ChangeOwnerAndPermissionOfFile("CopyTranslations", FinalF.c_str(), "root", "root", 0644); + ChangeOwnerAndPermissionOfFile("CopyTranslations", FinalF.c_str(), "root", ROOT_GROUP, 0644); } CurrentSize += FileSize; diff --git a/apt-pkg/init.cc b/apt-pkg/init.cc index fa679e6c6..292d75071 100644 --- a/apt-pkg/init.cc +++ b/apt-pkg/init.cc @@ -47,19 +47,19 @@ bool pkgInitConfig(Configuration &Cnf) Cnf.CndSet("Dir","/"); // State - Cnf.CndSet("Dir::State","var/lib/apt/"); + Cnf.CndSet("Dir::State", STATE_DIR + 1); Cnf.CndSet("Dir::State::lists","lists/"); Cnf.CndSet("Dir::State::cdroms","cdroms.list"); Cnf.CndSet("Dir::State::mirrors","mirrors/"); // Cache - Cnf.CndSet("Dir::Cache","var/cache/apt/"); + Cnf.CndSet("Dir::Cache", CACHE_DIR + 1); Cnf.CndSet("Dir::Cache::archives","archives/"); Cnf.CndSet("Dir::Cache::srcpkgcache","srcpkgcache.bin"); Cnf.CndSet("Dir::Cache::pkgcache","pkgcache.bin"); // Configuration - Cnf.CndSet("Dir::Etc","etc/apt/"); + Cnf.CndSet("Dir::Etc", CONF_DIR + 1); Cnf.CndSet("Dir::Etc::sourcelist","sources.list"); Cnf.CndSet("Dir::Etc::sourceparts","sources.list.d"); Cnf.CndSet("Dir::Etc::main","apt.conf"); @@ -69,12 +69,13 @@ bool pkgInitConfig(Configuration &Cnf) Cnf.CndSet("Dir::Etc::preferencesparts","preferences.d"); Cnf.CndSet("Dir::Etc::trusted", "trusted.gpg"); Cnf.CndSet("Dir::Etc::trustedparts","trusted.gpg.d"); - Cnf.CndSet("Dir::Bin::methods","/usr/lib/apt/methods"); - Cnf.CndSet("Dir::Bin::solvers::","/usr/lib/apt/solvers"); + Cnf.CndSet("Dir::Bin::methods", LIBEXEC_DIR "/methods"); + Cnf.CndSet("Dir::Bin::solvers::",LIBEXEC_DIR "/solvers"); + Cnf.CndSet("Dir::Bin::planners::",LIBEXEC_DIR "/planners"); Cnf.CndSet("Dir::Media::MountPath","/media/apt"); // State - Cnf.CndSet("Dir::Log","var/log/apt"); + Cnf.CndSet("Dir::Log", LOG_DIR + 1); Cnf.CndSet("Dir::Log::Terminal","term.log"); Cnf.CndSet("Dir::Log::History","history.log"); Cnf.CndSet("Dir::Log::Planner","eipp.log.xz"); diff --git a/apt-pkg/install-progress.cc b/apt-pkg/install-progress.cc index 256495420..6c3e51b2c 100644 --- a/apt-pkg/install-progress.cc +++ b/apt-pkg/install-progress.cc @@ -84,7 +84,7 @@ static std::string GetProgressFdString(char const * const status, { float const progress{Done / static_cast<float>(Total) * 100}; std::ostringstream str; - str.imbue(std::locale("C.UTF-8")); + str.imbue(std::locale::classic()); str.precision(4); str << status << ':' << pkg << ':' << std::fixed << progress << ':' << msg << '\n'; return str.str(); @@ -165,7 +165,7 @@ static std::string GetProgressDeb822String(char const * const status, { float const progress{Done / static_cast<float>(Total) * 100}; std::ostringstream str; - str.imbue(std::locale("C.UTF-8")); + str.imbue(std::locale::classic()); str.precision(4); str << "Status: " << status << '\n'; if (pkg != nullptr) diff --git a/apt-pkg/install-progress.h b/apt-pkg/install-progress.h index 23ddbbec6..b5c133676 100644 --- a/apt-pkg/install-progress.h +++ b/apt-pkg/install-progress.h @@ -38,7 +38,7 @@ namespace Progress { */ virtual void StartDpkg() {}; - virtual pid_t fork() {return fork(); }; + virtual pid_t fork() {return ::fork(); }; virtual void Pulse() {}; virtual long GetPulseInterval() { diff --git a/apt-pkg/policy.cc b/apt-pkg/policy.cc index ff59fb0ac..3dd6ddac4 100644 --- a/apt-pkg/policy.cc +++ b/apt-pkg/policy.cc @@ -180,14 +180,13 @@ void pkgPolicy::CreatePin(pkgVersionMatch::MatchType Type,string Name, Name.erase(found); } - // Allow pinning by wildcards - // TODO: Maybe we should always prefer specific pins over non- - // specific ones. - if (Name[0] == '/' || Name.find_first_of("*[?") != string::npos) + // Allow pinning by wildcards - beware of package names looking like wildcards! + // TODO: Maybe we should always prefer specific pins over non-specific ones. + if ((Name[0] == '/' && Name[Name.length() - 1] == '/') || Name.find_first_of("*[?") != string::npos) { pkgVersionMatch match(Data, Type); for (pkgCache::GrpIterator G = Cache->GrpBegin(); G.end() != true; ++G) - if (match.ExpressionMatches(Name, G.Name())) + if (Name != G.Name() && match.ExpressionMatches(Name, G.Name())) { if (Arch.empty() == false) CreatePin(Type, string(G.Name()).append(":").append(Arch), Data, Priority); diff --git a/apt-pkg/sourcelist.cc b/apt-pkg/sourcelist.cc index cfd824978..0da687895 100644 --- a/apt-pkg/sourcelist.cc +++ b/apt-pkg/sourcelist.cc @@ -568,7 +568,8 @@ bool pkgSourceList::AddVolatileFile(std::string const &File, std::vector<std::st return false; std::string const ext = flExtension(File); - if (ext == "deb") + // udeb is not included as installing it is usually a mistake rather than intended + if (ext == "deb" || ext == "ddeb") AddVolatileFile(new debDebPkgFileIndex(File)); else if (ext == "dsc") AddVolatileFile(new debDscFileIndex(File)); diff --git a/apt-private/private-cmndline.cc b/apt-private/private-cmndline.cc index a890aafab..d0cda08a6 100644 --- a/apt-private/private-cmndline.cc +++ b/apt-private/private-cmndline.cc @@ -189,6 +189,7 @@ static bool addArgumentsAPTGet(std::vector<CommandLine::Args> &Args, char const addArg('f', "fix-broken", "APT::Get::Fix-Broken", 0); addArg(0, "purge", "APT::Get::Purge", 0); addArg('V',"verbose-versions","APT::Get::Show-Versions",0); + addArg(0, "autoremove", "APT::Get::AutomaticRemove", 0); addArg(0, "auto-remove", "APT::Get::AutomaticRemove", 0); addArg(0, "reinstall", "APT::Get::ReInstall", 0); addArg(0, "solver", "APT::Solver", CommandLine::HasArg); diff --git a/apt-private/private-download.cc b/apt-private/private-download.cc index c85a49727..d0cbbcf50 100644 --- a/apt-private/private-download.cc +++ b/apt-private/private-download.cc @@ -25,7 +25,14 @@ #include <sys/types.h> #include <pwd.h> #include <fcntl.h> +#ifdef HAVE_VFS_H #include <sys/vfs.h> +#else +#ifdef HAVE_PARAMS_H +#include <sys/params.h> +#endif +#include <sys/mount.h> +#endif #include <sys/statvfs.h> #include <sys/stat.h> #include <errno.h> diff --git a/apt-private/private-show.cc b/apt-private/private-show.cc index 03229476e..27338a08c 100644 --- a/apt-private/private-show.cc +++ b/apt-private/private-show.cc @@ -24,6 +24,7 @@ #include <apt-private/private-show.h> #include <stdio.h> +#include <unistd.h> #include <ostream> #include <string> diff --git a/cmdline/apt-helper.cc b/cmdline/apt-helper.cc index fd99fba8b..a6f88ad06 100644 --- a/cmdline/apt-helper.cc +++ b/cmdline/apt-helper.cc @@ -29,6 +29,7 @@ #include <string> #include <vector> +#include <unistd.h> #include <stdlib.h> #include <apti18n.h> diff --git a/cmdline/apt-key.in b/cmdline/apt-key.in index 81314c7f5..0c10e5955 100644 --- a/cmdline/apt-key.in +++ b/cmdline/apt-key.in @@ -232,6 +232,17 @@ remove_key_from_keyring() { done } +accessible_file_exists() { + if ! test -s "$1"; then + return 1 + fi + if test -r "$1"; then + return 0 + fi + warn "The key(s) in the keyring $1 are ignored as the file is not readable by user '$USER' executing apt-key." + return 1 +} + foreach_keyring_do() { local ACTION="$1" shift @@ -240,7 +251,7 @@ foreach_keyring_do() { $ACTION "$FORCED_KEYRING" "$@" else # otherwise all known keyrings are up for inspection - if [ -s "$TRUSTEDFILE" ]; then + if accessible_file_exists "$TRUSTEDFILE"; then $ACTION "$TRUSTEDFILE" "$@" fi local TRUSTEDPARTS="/etc/apt/trusted.gpg.d" @@ -249,7 +260,7 @@ foreach_keyring_do() { TRUSTEDPARTS="$(readlink -f "$TRUSTEDPARTS")" local TRUSTEDPARTSLIST="$(cd /; find "$TRUSTEDPARTS" -mindepth 1 -maxdepth 1 -name '*.gpg')" for trusted in $(echo "$TRUSTEDPARTSLIST" | sort); do - if [ -s "$trusted" ]; then + if accessible_file_exists "$trusted"; then $ACTION "$trusted" "$@" fi done @@ -302,35 +313,18 @@ import_keyring_into_keyring() { fi } +catfile() { + cat "$1" >> "$2" +} + merge_all_trusted_keyrings_into_pubring() { # does the same as: # foreach_keyring_do 'import_keys_from_keyring' "${GPGHOMEDIR}/pubring.gpg" # but without using gpg, just cat and find - local PUBRING="$(readlink -f "${GPGHOMEDIR}/pubring.gpg")" - # if a --keyring was given, just use this one - if [ -n "$FORCED_KEYRING" ]; then - if [ -s "$FORCED_KEYRING" ]; then - cp --dereference "$FORCED_KEYRING" "$PUBRING" - fi - else - # otherwise all known keyrings are merged - local TRUSTEDPARTS="/etc/apt/trusted.gpg.d" - eval $(apt-config shell TRUSTEDPARTS Dir::Etc::TrustedParts/d) - if [ -d "$TRUSTEDPARTS" ]; then - rm -f "$PUBRING" - if [ -s "$TRUSTEDFILE" ]; then - cat "$TRUSTEDFILE" > "$PUBRING" - fi - TRUSTEDPARTS="$(readlink -f "$TRUSTEDPARTS")" - (cd /; find "$TRUSTEDPARTS" -mindepth 1 -maxdepth 1 -name '*.gpg' -exec cat {} + >> "$PUBRING";) - elif [ -s "$TRUSTEDFILE" ]; then - cp --dereference "$TRUSTEDFILE" "$PUBRING" - fi - fi - - if [ ! -s "$PUBRING" ]; then - touch "$PUBRING" - fi + local PUBRING="$(readlink -f "${GPGHOMEDIR}")/pubring.gpg" + rm -f "$PUBRING" + touch "$PUBRING" + foreach_keyring_do 'catfile' "$PUBRING" } import_keys_from_keyring() { @@ -480,8 +474,34 @@ if [ -z "$command" ]; then fi shift +find_gpgv_status_fd() { + while [ -n "$1" ]; do + if [ "$1" = '--status-fd' ]; then + shift + echo "$1" + break + fi + shift + done +} +GPGSTATUSFD="$(find_gpgv_status_fd "$@")" + +warn() { + if [ -z "$GPGHOMEDIR" ]; then + echo >&2 'W:' "$@" + else + echo 'W:' "$@" > "${GPGHOMEDIR}/aptwarnings.log" + fi + if [ -n "$GPGSTATUSFD" ]; then + echo >&${GPGSTATUSFD} '[APTKEY:] WARNING' "$@" + fi +} + cleanup_gpg_home() { if [ -z "$GPGHOMEDIR" ]; then return; fi + if [ -s "$GPGHOMEDIR/aptwarnings.log" ]; then + cat >&2 "$GPGHOMEDIR/aptwarnings.log" + fi if command_available 'gpgconf'; then GNUPGHOME="${GPGHOMEDIR}" gpgconf --kill gpg-agent >/dev/null 2>&1 || true fi diff --git a/cmdline/apt-sortpkgs.cc b/cmdline/apt-sortpkgs.cc index b80bbedd6..cf19b84ec 100644 --- a/cmdline/apt-sortpkgs.cc +++ b/cmdline/apt-sortpkgs.cc @@ -29,6 +29,7 @@ #include <vector> #include <algorithm> #include <stdio.h> +#include <unistd.h> #include <iostream> #include <string> #include <memory> diff --git a/debian/README.source b/debian/README.source deleted file mode 100644 index 9da152556..000000000 --- a/debian/README.source +++ /dev/null @@ -1,6 +0,0 @@ -Build this package with: -$ debian/rules arch-build -or -$ DEB_BUILD_PROG_OPTS="-S" debian/rules arch-build - -make sure you have the pre-build-depds in README.arch installed diff --git a/debian/apt-doc.docs b/debian/apt-doc.docs index 2058000c1..bd494002c 100644 --- a/debian/apt-doc.docs +++ b/debian/apt-doc.docs @@ -1,6 +1,4 @@ -build/docs/guide* -build/docs/offline* README.progress-reporting +doc/acquire-additional-files.txt doc/external-dependency-solver-protocol.txt doc/external-installation-planner-protocol.txt -doc/acquire-additional-files.txt diff --git a/debian/apt-transport-https.dirs b/debian/apt-transport-https.dirs deleted file mode 100644 index 3abb3fee8..000000000 --- a/debian/apt-transport-https.dirs +++ /dev/null @@ -1 +0,0 @@ -usr/lib/apt/methods diff --git a/debian/apt-transport-https.files b/debian/apt-transport-https.install index 7b14886df..7b14886df 100644 --- a/debian/apt-transport-https.files +++ b/debian/apt-transport-https.install diff --git a/debian/apt-utils.dirs b/debian/apt-utils.dirs deleted file mode 100644 index de7fa756e..000000000 --- a/debian/apt-utils.dirs +++ /dev/null @@ -1,3 +0,0 @@ -usr/lib/apt/solvers -usr/lib/apt/planners -usr/bin diff --git a/debian/apt-utils.examples b/debian/apt-utils.examples deleted file mode 100644 index 25aadf996..000000000 --- a/debian/apt-utils.examples +++ /dev/null @@ -1 +0,0 @@ -doc/examples/apt-ftparchive.conf
\ No newline at end of file diff --git a/debian/apt-utils.install b/debian/apt-utils.install index 178b528b7..a27f1e1e4 100644 --- a/debian/apt-utils.install +++ b/debian/apt-utils.install @@ -1,20 +1,13 @@ -usr/share/locale/*/*/apt-utils.mo - +usr/bin/apt-extracttemplates usr/bin/apt-ftparchive usr/bin/apt-sortpkgs -usr/bin/apt-extracttemplates - -usr/share/man/*/apt-ftparchive.* +usr/lib/apt/planners/ +usr/lib/apt/solvers/ +usr/share/doc/apt-utils +usr/share/locale/*/*/apt-utils.mo +usr/share/man/*/*/apt-extracttemplates.* usr/share/man/*/*/apt-ftparchive.* - -usr/share/man/*/apt-sortpkgs.* usr/share/man/*/*/apt-sortpkgs.* - usr/share/man/*/apt-extracttemplates.* -usr/share/man/*/*/apt-extracttemplates.* - - -usr/lib/apt/solvers/ -usr/lib/apt/planners/ - -usr/share/doc/apt-utils +usr/share/man/*/apt-ftparchive.* +usr/share/man/*/apt-sortpkgs.* diff --git a/debian/apt.auto-removal.sh b/debian/apt.auto-removal.sh index 608d950b5..df9048cd6 100644 --- a/debian/apt.auto-removal.sh +++ b/debian/apt.auto-removal.sh @@ -25,7 +25,7 @@ debverlist="$(echo "$list" | cut -d' ' -f 2 | sort --unique --reverse --version- if [ -n "$1" ]; then installed_version="$(echo "$list" | awk "\$1 == \"$1\" { print \$2;exit; }")" fi -unamer="$(uname -r)" +unamer="$(uname -r | tr '[A-Z]' '[a-z]')" if [ -n "$unamer" ]; then running_version="$(echo "$list" | awk "\$1 == \"$unamer\" { print \$2;exit; }")" fi diff --git a/debian/apt.dirs b/debian/apt.dirs index 7d46801df..bdc5adddb 100644 --- a/debian/apt.dirs +++ b/debian/apt.dirs @@ -1,20 +1 @@ -usr/bin -usr/lib/apt/methods -usr/lib/apt/solvers -usr/lib/apt/planners -usr/lib/dpkg/methods/apt -etc/apt -etc/apt/apt.conf.d -etc/apt/preferences.d -etc/apt/sources.list.d -etc/apt/trusted.gpg.d etc/kernel/postinst.d -etc/logrotate.d -var/cache/apt/archives/partial -var/lib/apt/lists/partial -var/lib/apt/mirrors/partial -var/lib/apt/periodic -var/log/apt -usr/share/bug/apt -usr/share/bash-completion/completions/ -lib/systemd/system/ diff --git a/debian/apt.examples b/debian/apt.examples deleted file mode 100644 index 622ef80b1..000000000 --- a/debian/apt.examples +++ /dev/null @@ -1 +0,0 @@ -build/docs/examples/* diff --git a/debian/apt.files b/debian/apt.files deleted file mode 100644 index 572475192..000000000 --- a/debian/apt.files +++ /dev/null @@ -1,2 +0,0 @@ -usr/lib/apt/solvers/dump -usr/lib/apt/planners/dump diff --git a/debian/apt.install b/debian/apt.install index a8a56c925..2c2187849 100644 --- a/debian/apt.install +++ b/debian/apt.install @@ -1,39 +1,41 @@ +debian/*.service /lib/systemd/system/ +debian/*.timer /lib/systemd/system/ +debian/apt.systemd.daily usr/lib/apt +etc/apt/ usr/bin/apt -usr/bin/apt-get usr/bin/apt-cache usr/bin/apt-cdrom usr/bin/apt-config +usr/bin/apt-get usr/bin/apt-key usr/bin/apt-mark +usr/lib/*/libapt-private.so* +usr/lib/apt/apt-helper usr/lib/apt/methods/ +usr/lib/apt/planners/dump +usr/lib/apt/solvers/dump usr/lib/dpkg/methods/apt/ +usr/share/bash-completion/completions/ +usr/share/doc/apt usr/share/locale/*/*/apt.mo -usr/lib/*/libapt-private.so* -usr/share/man/*/apt.* -usr/share/man/*/apt-get.* -usr/share/man/*/apt-cache.* -usr/share/man/*/apt-cdrom.* -usr/share/man/*/apt-config.* -usr/share/man/*/apt-key.* -usr/share/man/*/apt-mark.* -usr/share/man/*/apt-secure.* -usr/share/man/*/sources.list.* -usr/share/man/*/apt_preferences.* -usr/share/man/*/*/apt.* -usr/share/man/*/*/apt-get.* usr/share/man/*/*/apt-cache.* usr/share/man/*/*/apt-cdrom.* usr/share/man/*/*/apt-config.* +usr/share/man/*/*/apt-get.* usr/share/man/*/*/apt-key.* usr/share/man/*/*/apt-mark.* usr/share/man/*/*/apt-secure.* -usr/share/man/*/*/sources.list.* +usr/share/man/*/*/apt.* usr/share/man/*/*/apt_preferences.* -usr/share/bash-completion/completions/ -debian/*.service /lib/systemd/system/ -debian/*.timer /lib/systemd/system/ -usr/lib/apt/apt-helper - -usr/share/doc/apt - -debian/apt.systemd.daily usr/lib/apt +usr/share/man/*/*/sources.list.* +usr/share/man/*/apt-cache.* +usr/share/man/*/apt-cdrom.* +usr/share/man/*/apt-config.* +usr/share/man/*/apt-get.* +usr/share/man/*/apt-key.* +usr/share/man/*/apt-mark.* +usr/share/man/*/apt-secure.* +usr/share/man/*/apt.* +usr/share/man/*/apt_preferences.* +usr/share/man/*/sources.list.* +var/ diff --git a/debian/apt.lintian-overrides b/debian/apt.lintian-overrides index e51d1119f..7d1e892a3 100644 --- a/debian/apt.lintian-overrides +++ b/debian/apt.lintian-overrides @@ -1,2 +1,5 @@ # the private library is for internal sharing only apt: package-name-doesnt-match-sonames +apt: systemd-service-file-missing-install-key lib/systemd/system/apt-daily.service +apt: shlib-calls-exit usr/lib*/libapt-private.so.0.0.0 +apt: no-symbols-control-file usr/lib*/libapt-private.so.0.0.0 diff --git a/debian/apt.maintscript b/debian/apt.maintscript index f461e673a..296f83bd5 100644 --- a/debian/apt.maintscript +++ b/debian/apt.maintscript @@ -1,4 +1,3 @@ rm_conffile /etc/apt/apt.conf.d/20changelog 1.2.4~ # we use a systemd timer unit now rm_conffile /etc/cron.daily/apt 1.2.10~ - diff --git a/debian/changelog b/debian/changelog index 42a0a5ea6..bdf95c1ac 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,57 @@ +apt (1.3~rc3) unstable; urgency=medium + + [ Julian Andres Klode ] + * Ignore SIGINT and SIGQUIT for Pre-Install hooks + This basically fixes Bug #832593, as long as your /bin/sh + is not dash, as dash is evil. + * prepare-release: Use equivs and gdebi-core for travis deps + * install-progress: Call the real ::fork() in our fork() method + * Packaging cleanup: + - debian: Install etc/apt if present (e.g., on Ubuntu) + - tests/control: Handle the gpg1/gpg2 mess a bit better + - debian: Make better use of the tree installed by CMake + - debian: Switch to debhelper 10 + - debian: Add more lintian overrides + - debian: Drop outdated stuff + - debian: Run wrap-and-sort + - Add new symbols to symbols file + * Build system fixes, including: + - CMake: Translations: Don't rebuild .mo for line number changes + - CMake: Translations: Pass --previous to msgmerge. + Thanks to Guillem Jover for the suggestion. + - CMake: Do not add po/ if USE_NLS is OFF + - CMake: Install config and logging directories + - CMake: Translations: Build byproduct before output + - CMake: Add Large File Support (Closes: #834767) + * Several portability fixes (full test suite passes on FreeBSD), including: + - CMake: Discover docbook stylesheet in other locations + - Add missing includes and external definitions + - Use C locale instead of C.UTF-8 for protocol strings + - Make directory paths configurable + - Lower-case uname -r output in kernel autoremove helper + - Make root group configurable via ROOT_GROUP + * Accept --autoremove as alias for --auto-remove + * apt-inst: debfile: Pass comp. Name to ExtractTar, not Binary + * changelog: Respect Dir setting for local changelog getting + * init: Add Dir::Bin::planners default entry + * Switch documentation from httpredir.d.o to deb.d.o + + [ Zhou Mo ] + * zh_CN.po: update simplified Chinese translation + + [ David Kalnischkies ] + * do dpkg --configure before --remove/--purge --pending (Closes: 835094) + * prevent C++ locale number formatting in text APIs (try 3) (LP: 1611010) + * do fail on weakhash/loop earlier in acquire (Closes: 835195) + * do not restore selections for already purged packages + * apt-key: warn instead of fail on unreadable keyrings + * show apt-key warnings in apt update (Closes: 834973) + * treat .ddeb files like .deb, especially for dpkg (LP: #1616909) + * randomize acquire order for same type index files + * don't loop on pinning pkgs from absolute debs by regex (Closes: 835818) + + -- Julian Andres Klode <jak@debian.org> Tue, 30 Aug 2016 22:20:28 +0200 + apt (1.3~rc2ubuntu3) yakkety; urgency=medium [ David Kalnischkies ] diff --git a/debian/compat b/debian/compat index ec635144f..f599e28b8 100644 --- a/debian/compat +++ b/debian/compat @@ -1 +1 @@ -9 +10 diff --git a/debian/control b/debian/control index 535d3693d..582259e20 100644 --- a/debian/control +++ b/debian/control @@ -4,27 +4,44 @@ Priority: important Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com> XSBC-Original-Maintainer: APT Development Team <deity@lists.debian.org> Uploaders: Michael Vogt <mvo@debian.org>, - Julian Andres Klode <jak@debian.org>, - David Kalnischkies <donkult@debian.org> + Julian Andres Klode <jak@debian.org>, + David Kalnischkies <donkult@debian.org> Standards-Version: 3.9.8 -Build-Depends: dpkg-dev (>= 1.17.14), debhelper (>= 9.20141010), libdb-dev, - gettext (>= 0.12), libcurl4-gnutls-dev (>= 7.19.4~), - zlib1g-dev, libbz2-dev, liblzma-dev, liblz4-dev (>= 0.0~r126), - xsltproc, docbook-xsl, docbook-xml, po4a (>= 0.34-2), - cmake (>= 3.4), pkg-config, libgtest-dev <!nocheck>, dh-systemd -Build-Depends-Indep: doxygen, w3m, graphviz -Build-Conflicts: autoconf2.13, automake1.4 +Build-Depends: cmake (>= 3.4), + debhelper (>= 9.20160709~), + dh-systemd, + docbook-xml, + docbook-xsl, + dpkg-dev (>= 1.17.14), + gettext (>= 0.12), + libbz2-dev, + libcurl4-gnutls-dev (>= 7.19.4~), + libdb-dev, + libgtest-dev <!nocheck>, + liblz4-dev (>= 0.0~r126), + liblzma-dev, + pkg-config, + po4a (>= 0.34-2), + xsltproc, + zlib1g-dev +Build-Depends-Indep: doxygen, graphviz, w3m Vcs-Git: https://anonscm.debian.org/git/apt/apt.git Vcs-Browser: https://anonscm.debian.org/git/apt/apt.git Testsuite: autopkgtest Package: apt Architecture: any -Depends: ${shlibs:Depends}, ${misc:Depends}, ${apt:keyring}, gpgv | gpgv2 | gpgv1, adduser -Replaces: manpages-pl (<< 20060617-3~), manpages-it (<< 2.80-4~), sun-java6-jdk (>> 0), sun-java5-jdk (>> 0), openjdk-6-jdk (<< 6b24-1.11-0ubuntu1~), bash-completion (<< 1:2.1-4.2+fakesync1), apt-utils (<< 1.3~exp2~) -Breaks: manpages-pl (<< 20060617-3~), manpages-it (<< 2.80-4~), sun-java6-jdk (>> 0), sun-java5-jdk (>> 0), openjdk-6-jdk (<< 6b24-1.11-0ubuntu1~), apt-utils (<< 1.3~exp2~) +Depends: adduser, + gpgv | gpgv2 | gpgv1, + ${apt:keyring}, + ${misc:Depends}, + ${shlibs:Depends} Recommends: gnupg | gnupg2 | gnupg1 -Suggests: aptitude | synaptic | wajig, dpkg-dev (>= 1.17.2), apt-doc, python-apt, powermgmt-base +Suggests: apt-doc, + aptitude | synaptic | wajig, + dpkg-dev (>= 1.17.2), + powermgmt-base, + python-apt Description: commandline package manager This package provides commandline tools for searching and managing as well as querying information about packages @@ -44,8 +61,8 @@ Package: libapt-pkg5.0 Architecture: any Multi-Arch: same Pre-Depends: ${misc:Pre-Depends} -Depends: ${shlibs:Depends}, ${misc:Depends} -Breaks: apt (<< 1.1~exp14), libapt-inst1.5 (<< 0.9.9~), appstream (<< 0.9.0-3~) +Depends: ${misc:Depends}, ${shlibs:Depends} +Breaks: appstream (<< 0.9.0-3~), apt (<< 1.1~exp14), libapt-inst1.5 (<< 0.9.9~) Recommends: apt (>= ${binary:Version}) Section: libs Provides: libapt-pkg (= ${binary:Version}) @@ -69,7 +86,7 @@ Package: libapt-inst2.0 Architecture: any Multi-Arch: same Pre-Depends: ${misc:Pre-Depends} -Depends: ${shlibs:Depends}, ${misc:Depends} +Depends: ${misc:Depends}, ${shlibs:Depends} Section: libs Provides: libapt-inst (= ${binary:Version}) Description: deb package format runtime library @@ -91,7 +108,10 @@ Architecture: any Multi-Arch: same Priority: optional Pre-Depends: ${misc:Pre-Depends} -Depends: libapt-pkg (= ${binary:Version}), libapt-inst (= ${binary:Version}), ${misc:Depends}, zlib1g-dev +Depends: libapt-inst (= ${binary:Version}), + libapt-pkg (= ${binary:Version}), + zlib1g-dev, + ${misc:Depends} Section: libdevel Description: development files for APT's libapt-pkg and libapt-inst This package contains the header files and libraries for @@ -112,7 +132,7 @@ Description: documentation for APT development Package: apt-utils Architecture: any -Depends: ${shlibs:Depends}, ${misc:Depends}, apt (= ${binary:Version}) +Depends: apt (= ${binary:Version}), ${misc:Depends}, ${shlibs:Depends} Description: package management related utility programs This package contains some less used commandline utilities related to package management with APT. @@ -125,7 +145,7 @@ Description: package management related utility programs Package: apt-transport-https Architecture: any -Depends: ${shlibs:Depends}, ${misc:Depends} +Depends: ${misc:Depends}, ${shlibs:Depends} Recommends: ca-certificates Priority: optional Description: https download transport for APT diff --git a/debian/libapt-pkg-dev.install b/debian/libapt-pkg-dev.install index e85dc9934..42e7c34d5 100644 --- a/debian/libapt-pkg-dev.install +++ b/debian/libapt-pkg-dev.install @@ -1,3 +1,3 @@ -usr/lib/*/libapt-pkg*.so -usr/lib/*/libapt-inst*.so usr/include/apt-pkg/ +usr/lib/*/libapt-inst*.so +usr/lib/*/libapt-pkg*.so diff --git a/debian/libapt-pkg-doc.docs b/debian/libapt-pkg-doc.docs index dcacac18b..b57607e31 100644 --- a/debian/libapt-pkg-doc.docs +++ b/debian/libapt-pkg-doc.docs @@ -1,3 +1,2 @@ doc/libapt-pkg2_to_3.txt doc/style.txt -#build/doc/doxygen/html diff --git a/debian/libapt-pkg-doc.lintian-overrides b/debian/libapt-pkg-doc.lintian-overrides index d583d9a87..d7cbc437e 100644 --- a/debian/libapt-pkg-doc.lintian-overrides +++ b/debian/libapt-pkg-doc.lintian-overrides @@ -1,2 +1,3 @@ # embedded by doxygen, see /usr/share/doc/doxygen/README.jquery libapt-pkg-doc: embedded-javascript-library +libapt-pkg-doc: duplicate-files usr/share/doc/libapt-pkg-doc/html/* diff --git a/debian/libapt-pkg5.0.symbols b/debian/libapt-pkg5.0.symbols index e2db6bb12..0df11f9a5 100644 --- a/debian/libapt-pkg5.0.symbols +++ b/debian/libapt-pkg5.0.symbols @@ -1480,3 +1480,15 @@ libapt-pkg.so.5.0 libapt-pkg5.0 #MINVER# (c++|optional=std)"std::basic_istream<char, std::char_traits<char> >& std::operator>><char, std::char_traits<char> >(std::basic_istream<char, std::char_traits<char> >&, std::_Get_time<char>)@APTPKG_5.0" 1.3~exp2 (c++|optional=std)"std::basic_ostream<char, std::char_traits<char> >& std::operator<< <char, std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, std::_Put_time<char>)@APTPKG_5.0" 1.3~exp2 (c++|optional=std)"std::ctype<char>::do_narrow(char, char) const@APTPKG_5.0" 1.3~exp2 + (c++)"EIPP::ApplyRequest(std::__cxx11::list<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, EIPP::PKG_ACTION>, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, EIPP::PKG_ACTION> > >&, pkgDepCache&)@APTPKG_5.0" 1.3~rc2 + (c++)"EIPP::ReadRequest(int, std::__cxx11::list<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, EIPP::PKG_ACTION>, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, EIPP::PKG_ACTION> > >&, unsigned int&)@APTPKG_5.0" 1.3~rc2 + (c++)"FileFd::Read(int, void*, unsigned long long, unsigned long long*)@APTPKG_5.0" 1.3~rc2 + (c++)"pkgSourceList::AddVolatileFiles(CommandLine&, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >*)@APTPKG_5.0" 1.3~rc2 + (c++)"pkgSourceList::AddVolatileFile(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >*)@APTPKG_5.0" 1.3~rc2 + (c++)"TimeRFC1123[abi:cxx11](long, bool)@APTPKG_5.0" 1.3~rc2 + (c++)"unsigned long std::uniform_int_distribution<unsigned long>::operator()<std::linear_congruential_engine<unsigned long, 16807ul, 0ul, 2147483647ul> >(std::linear_congruential_engine<unsigned long, 16807ul, 0ul, 2147483647ul>&, std::uniform_int_distribution<unsigned long>::param_type const&)@APTPKG_5.0" 1.3~rc2 + (c++)"void std::shuffle<__gnu_cxx::__normal_iterator<IndexTarget*, std::vector<IndexTarget, std::allocator<IndexTarget> > >, std::linear_congruential_engine<unsigned long, 16807ul, 0ul, 2147483647ul>&>(__gnu_cxx::__normal_iterator<IndexTarget*, std::vector<IndexTarget, std::allocator<IndexTarget> > >, __gnu_cxx::__normal_iterator<IndexTarget*, std::vector<IndexTarget, std::allocator<IndexTarget> > >, std::linear_congruential_engine<unsigned long, 16807ul, 0ul, 2147483647ul>&)@APTPKG_5.0" 1.3~rc2 + (c++)"void std::vector<pkgDPkgPM::Item, std::allocator<pkgDPkgPM::Item> >::emplace_back<pkgDPkgPM::Item::Ops, pkgCache::PkgIterator>(pkgDPkgPM::Item::Ops&&, pkgCache::PkgIterator&&)@APTPKG_5.0" 1.3~rc2 + (c++)"void std::vector<pkgDPkgPM::Item, std::allocator<pkgDPkgPM::Item> >::emplace_back<pkgDPkgPM::Item::Ops, pkgCache::PkgIterator&>(pkgDPkgPM::Item::Ops&&, pkgCache::PkgIterator&)@APTPKG_5.0" 1.3~rc2 + (c++)"void std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >::emplace_back<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&>(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_5.0" 1.3~rc2 + (c++)"void std::vector<std::pair<pkgDPkgPM::Item*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<pkgDPkgPM::Item*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >::emplace_back<pkgDPkgPM::Item*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >(pkgDPkgPM::Item*&&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&&)@APTPKG_5.0" 1.3~rc2 diff --git a/debian/rules b/debian/rules index 1ea0e872b..24608a6b8 100755 --- a/debian/rules +++ b/debian/rules @@ -11,16 +11,15 @@ export DPKG_GENSYMBOLS_CHECK_LEVEL=0 export CTEST_OUTPUT_ON_FAILURE=1 %: - dh $@ --with systemd --parallel --buildsystem=cmake + dh $@ override_dh_install-indep: - dh_movefiles dh_install --list-missing override_dh_install-arch: - dh_movefiles - if [ -e debian/tmp/etc/apt ]; then dh_install -papt etc/apt/* etc/apt; fi - dh_install --list-missing + dh_install -papt-utils -X/dump + dh_install -papt -Xmethods/https + dh_install --remaining --list-missing install -m 644 debian/apt.conf.autoremove debian/apt/etc/apt/apt.conf.d/01autoremove install -m 755 debian/apt.auto-removal.sh debian/apt/etc/kernel/postinst.d/apt-auto-removal diff --git a/doc/apt-cache.8.xml b/doc/apt-cache.8.xml index 7ebc1c5c6..571779931 100644 --- a/doc/apt-cache.8.xml +++ b/doc/apt-cache.8.xml @@ -14,7 +14,7 @@ &apt-email; &apt-product; <!-- The last update date --> - <date>2016-08-18T00:00:00Z</date> + <date>2016-08-17T00:00:00Z</date> </refentryinfo> <refmeta> diff --git a/doc/apt-get.8.xml b/doc/apt-get.8.xml index f87419229..b4a3002f3 100644 --- a/doc/apt-get.8.xml +++ b/doc/apt-get.8.xml @@ -14,7 +14,7 @@ &apt-email; &apt-product; <!-- The last update date --> - <date>2016-08-18T00:00:00Z</date> + <date>2016-08-26T00:00:00Z</date> </refentryinfo> <refmeta> @@ -522,7 +522,7 @@ Configuration Item: <literal>APT::Get::Remove</literal>.</para></listitem> </varlistentry> - <varlistentry><term><option>--auto-remove</option></term> + <varlistentry><term><option>--auto-remove</option></term><term><option>--autoremove</option></term> <listitem><para>If the command is either <literal>install</literal> or <literal>remove</literal>, then this option acts like running the <literal>autoremove</literal> command, removing unused dependency packages. Configuration Item: <literal>APT::Get::AutomaticRemove</literal>. diff --git a/doc/apt-verbatim.ent b/doc/apt-verbatim.ent index aaa2c1a6d..1278ff283 100644 --- a/doc/apt-verbatim.ent +++ b/doc/apt-verbatim.ent @@ -239,7 +239,7 @@ "> <!-- this will be updated by 'prepare-release' --> -<!ENTITY apt-product-version "1.3~rc2ubuntu3"> +<!ENTITY apt-product-version "1.3~rc3"> <!-- (Code)names for various things used all over the place --> <!ENTITY debian-oldstable-codename "wheezy"> diff --git a/doc/apt.conf.5.xml b/doc/apt.conf.5.xml index 0c2b7f763..380371230 100644 --- a/doc/apt.conf.5.xml +++ b/doc/apt.conf.5.xml @@ -19,7 +19,7 @@ &apt-email; &apt-product; <!-- The last update date --> - <date>2016-08-18T00:00:00Z</date> + <date>2016-08-17T00:00:00Z</date> </refentryinfo> <refmeta> diff --git a/doc/docbook-html-style.xsl b/doc/docbook-html-style.xsl.cmake.in index e4af9f557..9216d8e6e 100644 --- a/doc/docbook-html-style.xsl +++ b/doc/docbook-html-style.xsl.cmake.in @@ -2,7 +2,7 @@ <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <!-- Import our base stylesheet --> - <xsl:import href="/usr/share/xml/docbook/stylesheet/docbook-xsl/xhtml-1_1/chunk.xsl" /> + <xsl:import href="@DOCBOOK_XSL@/xhtml-1_1/chunk.xsl" /> <!-- Since we use xsltproc (not saxon), add a workaround to ensure UTF-8 --> <xsl:template xmlns="http://www.w3.org/1999/xhtml" name="head.content.generator"> diff --git a/doc/docbook-text-style.xsl b/doc/docbook-text-style.xsl.cmake.in index 376dded52..36af1bcb2 100644 --- a/doc/docbook-text-style.xsl +++ b/doc/docbook-text-style.xsl.cmake.in @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> - <xsl:import href="/usr/share/xml/docbook/stylesheet/docbook-xsl/xhtml-1_1/docbook.xsl" /> + <xsl:import href="@DOCBOOK_XSL@/xhtml-1_1/docbook.xsl" /> <!-- Parameters for optimal text output. --> <xsl:param name="callout.graphics" select="0"/> diff --git a/doc/manpage-style.xsl b/doc/manpage-style.xsl.cmake.in index a780bad13..53d6780cb 100644 --- a/doc/manpage-style.xsl +++ b/doc/manpage-style.xsl.cmake.in @@ -2,7 +2,7 @@ xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> -<xsl:import href="/usr/share/xml/docbook/stylesheet/nwalsh/manpages/docbook.xsl" /> +<xsl:import href="@DOCBOOK_XSL@/manpages/docbook.xsl" /> <xsl:param name="man.output.encoding" select="'UTF-8'" /> diff --git a/doc/po/apt-doc.pot b/doc/po/apt-doc.pot index d8b2d434e..817adbbef 100644 --- a/doc/po/apt-doc.pot +++ b/doc/po/apt-doc.pot @@ -5,9 +5,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: apt-doc 1.3~rc2ubuntu3\n" +"Project-Id-Version: apt-doc 1.3~rc3\n" "Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n" -"POT-Creation-Date: 2016-08-24 10:39+0200\n" +"POT-Creation-Date: 2016-08-30 22:20+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Language-Team: LANGUAGE <LL@li.org>\n" @@ -5788,8 +5788,8 @@ msgstr "" #: sources.list.5.xml:1 #, no-wrap msgid "" -"deb http://httpredir.debian.org/debian &debian-stable-codename; main\n" -"deb [ arch=amd64,armel ] http://httpredir.debian.org/debian " +"deb http://deb.debian.org/debian &debian-stable-codename; main\n" +"deb [ arch=amd64,armel ] http://deb.debian.org/debian " "&debian-stable-codename; main" msgstr "" @@ -5798,12 +5798,12 @@ msgstr "" #, no-wrap msgid "" "Types: deb\n" -"URIs: http://httpredir.debian.org/debian\n" +"URIs: http://deb.debian.org/debian\n" "Suites: &debian-stable-codename;\n" "Components: main\n" "\n" "Types: deb\n" -"URIs: http://httpredir.debian.org/debian\n" +"URIs: http://deb.debian.org/debian\n" "Suites: &debian-stable-codename;\n" "Components: main\n" "Architectures: amd64 armel\n" @@ -5919,12 +5919,12 @@ msgstr "" #: sources.list.5.xml:1 #, no-wrap msgid "" -"deb http://httpredir.debian.org/debian stable main contrib\n" -"deb-src http://httpredir.debian.org/debian stable main contrib\n" -"deb http://httpredir.debian.org/debian testing main contrib\n" -"deb-src http://httpredir.debian.org/debian testing main contrib\n" -"deb http://httpredir.debian.org/debian unstable main contrib\n" -"deb-src http://httpredir.debian.org/debian unstable main contrib" +"deb http://deb.debian.org/debian stable main contrib\n" +"deb-src http://deb.debian.org/debian stable main contrib\n" +"deb http://deb.debian.org/debian testing main contrib\n" +"deb-src http://deb.debian.org/debian testing main contrib\n" +"deb http://deb.debian.org/debian unstable main contrib\n" +"deb-src http://deb.debian.org/debian unstable main contrib" msgstr "" #. type: Content of: <refentry><refsect1><literallayout> @@ -5932,7 +5932,7 @@ msgstr "" #, no-wrap msgid "" "Types: deb deb-src\n" -"URIs: http://httpredir.debian.org/debian\n" +"URIs: http://deb.debian.org/debian\n" "Suites: stable testing unstable\n" "Components: main contrib\n" msgstr "" diff --git a/doc/po/de.po b/doc/po/de.po index 8ae13e645..5e4e9db10 100644 --- a/doc/po/de.po +++ b/doc/po/de.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: apt-doc 1.0.8\n" "Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n" -"POT-Creation-Date: 2016-08-24 10:39+0200\n" +"POT-Creation-Date: 2016-08-30 22:20+0200\n" "PO-Revision-Date: 2014-09-14 14:46+0200\n" "Last-Translator: Chris Leick <c.leick@vollbio.de>\n" "Language-Team: German <debian-l10n-german@lists.debian.org>\n" @@ -8241,8 +8241,8 @@ msgstr "" #| "deb http://ftp.debian.org/debian &debian-stable-codename; main\n" #| "deb [ arch=amd64,armel ] http://ftp.debian.org/debian &debian-stable-codename; main" msgid "" -"deb http://httpredir.debian.org/debian &debian-stable-codename; main\n" -"deb [ arch=amd64,armel ] http://httpredir.debian.org/debian &debian-stable-codename; main" +"deb http://deb.debian.org/debian &debian-stable-codename; main\n" +"deb [ arch=amd64,armel ] http://deb.debian.org/debian &debian-stable-codename; main" msgstr "" "deb http://ftp.debian.org/debian &debian-stable-codename; main\n" "deb [ arch=amd64,armel ] http://ftp.debian.org/debian &debian-stable-codename; main" @@ -8255,12 +8255,12 @@ msgstr "" #| "deb [ arch=amd64,armel ] http://ftp.debian.org/debian &debian-stable-codename; main" msgid "" "Types: deb\n" -"URIs: http://httpredir.debian.org/debian\n" +"URIs: http://deb.debian.org/debian\n" "Suites: &debian-stable-codename;\n" "Components: main\n" "\n" "Types: deb\n" -"URIs: http://httpredir.debian.org/debian\n" +"URIs: http://deb.debian.org/debian\n" "Suites: &debian-stable-codename;\n" "Components: main\n" "Architectures: amd64 armel\n" @@ -8408,12 +8408,12 @@ msgstr "" #: sources.list.5.xml #, no-wrap msgid "" -"deb http://httpredir.debian.org/debian stable main contrib\n" -"deb-src http://httpredir.debian.org/debian stable main contrib\n" -"deb http://httpredir.debian.org/debian testing main contrib\n" -"deb-src http://httpredir.debian.org/debian testing main contrib\n" -"deb http://httpredir.debian.org/debian unstable main contrib\n" -"deb-src http://httpredir.debian.org/debian unstable main contrib" +"deb http://deb.debian.org/debian stable main contrib\n" +"deb-src http://deb.debian.org/debian stable main contrib\n" +"deb http://deb.debian.org/debian testing main contrib\n" +"deb-src http://deb.debian.org/debian testing main contrib\n" +"deb http://deb.debian.org/debian unstable main contrib\n" +"deb-src http://deb.debian.org/debian unstable main contrib" msgstr "" #. type: Content of: <refentry><refsect1><literallayout> @@ -8421,7 +8421,7 @@ msgstr "" #, no-wrap msgid "" "Types: deb deb-src\n" -"URIs: http://httpredir.debian.org/debian\n" +"URIs: http://deb.debian.org/debian\n" "Suites: stable testing unstable\n" "Components: main contrib\n" msgstr "" diff --git a/doc/po/es.po b/doc/po/es.po index 48961c258..1145c74cc 100644 --- a/doc/po/es.po +++ b/doc/po/es.po @@ -38,7 +38,7 @@ msgid "" msgstr "" "Project-Id-Version: apt-doc 1.0.5\n" "Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n" -"POT-Creation-Date: 2016-08-24 10:39+0200\n" +"POT-Creation-Date: 2016-08-30 22:20+0200\n" "PO-Revision-Date: 2014-07-04 01:31+0200\n" "Last-Translator: Omar Campagne <ocampagne@gmail.com>\n" "Language-Team: Debian l10n Spanish <debian-l10n-spanish@lists.debian.org>\n" @@ -8243,8 +8243,8 @@ msgstr "" #| "deb http://ftp.debian.org/debian &debian-stable-codename; main\n" #| "deb [ arch=amd64,armel ] http://ftp.debian.org/debian &debian-stable-codename; main" msgid "" -"deb http://httpredir.debian.org/debian &debian-stable-codename; main\n" -"deb [ arch=amd64,armel ] http://httpredir.debian.org/debian &debian-stable-codename; main" +"deb http://deb.debian.org/debian &debian-stable-codename; main\n" +"deb [ arch=amd64,armel ] http://deb.debian.org/debian &debian-stable-codename; main" msgstr "" "deb http://ftp.debian.org/debian &debian-stable-codename; main\n" "deb [ arch=amd64,armel ] http://ftp.debian.org/debian &debian-stable-codename; main" @@ -8257,12 +8257,12 @@ msgstr "" #| "deb [ arch=amd64,armel ] http://ftp.debian.org/debian &debian-stable-codename; main" msgid "" "Types: deb\n" -"URIs: http://httpredir.debian.org/debian\n" +"URIs: http://deb.debian.org/debian\n" "Suites: &debian-stable-codename;\n" "Components: main\n" "\n" "Types: deb\n" -"URIs: http://httpredir.debian.org/debian\n" +"URIs: http://deb.debian.org/debian\n" "Suites: &debian-stable-codename;\n" "Components: main\n" "Architectures: amd64 armel\n" @@ -8408,12 +8408,12 @@ msgstr "" #: sources.list.5.xml #, no-wrap msgid "" -"deb http://httpredir.debian.org/debian stable main contrib\n" -"deb-src http://httpredir.debian.org/debian stable main contrib\n" -"deb http://httpredir.debian.org/debian testing main contrib\n" -"deb-src http://httpredir.debian.org/debian testing main contrib\n" -"deb http://httpredir.debian.org/debian unstable main contrib\n" -"deb-src http://httpredir.debian.org/debian unstable main contrib" +"deb http://deb.debian.org/debian stable main contrib\n" +"deb-src http://deb.debian.org/debian stable main contrib\n" +"deb http://deb.debian.org/debian testing main contrib\n" +"deb-src http://deb.debian.org/debian testing main contrib\n" +"deb http://deb.debian.org/debian unstable main contrib\n" +"deb-src http://deb.debian.org/debian unstable main contrib" msgstr "" #. type: Content of: <refentry><refsect1><literallayout> @@ -8421,7 +8421,7 @@ msgstr "" #, no-wrap msgid "" "Types: deb deb-src\n" -"URIs: http://httpredir.debian.org/debian\n" +"URIs: http://deb.debian.org/debian\n" "Suites: stable testing unstable\n" "Components: main contrib\n" msgstr "" diff --git a/doc/po/fr.po b/doc/po/fr.po index 003ec244e..ef12e4783 100644 --- a/doc/po/fr.po +++ b/doc/po/fr.po @@ -11,7 +11,7 @@ msgid "" msgstr "" "Project-Id-Version: apt-doc 1.0.5\n" "Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n" -"POT-Creation-Date: 2016-08-24 10:39+0200\n" +"POT-Creation-Date: 2016-08-30 22:20+0200\n" "PO-Revision-Date: 2014-11-15 17:26+0100\n" "Last-Translator: Jean-Pierre Giraud <jean-pierregiraud@neuf.fr>\n" "Language-Team: French <debian-l10n-french@lists.debian.org>\n" @@ -8206,8 +8206,8 @@ msgstr "" #| "deb http://ftp.debian.org/debian &debian-stable-codename; main\n" #| "deb [ arch=amd64,armel ] http://ftp.debian.org/debian &debian-stable-codename; main" msgid "" -"deb http://httpredir.debian.org/debian &debian-stable-codename; main\n" -"deb [ arch=amd64,armel ] http://httpredir.debian.org/debian &debian-stable-codename; main" +"deb http://deb.debian.org/debian &debian-stable-codename; main\n" +"deb [ arch=amd64,armel ] http://deb.debian.org/debian &debian-stable-codename; main" msgstr "" "deb http://ftp.debian.org/debian &debian-stable-codename; main\n" "deb [ arch=amd64,armel ] http://ftp.debian.org/debian &debian-stable-codename; main" @@ -8220,12 +8220,12 @@ msgstr "" #| "deb [ arch=amd64,armel ] http://ftp.debian.org/debian &debian-stable-codename; main" msgid "" "Types: deb\n" -"URIs: http://httpredir.debian.org/debian\n" +"URIs: http://deb.debian.org/debian\n" "Suites: &debian-stable-codename;\n" "Components: main\n" "\n" "Types: deb\n" -"URIs: http://httpredir.debian.org/debian\n" +"URIs: http://deb.debian.org/debian\n" "Suites: &debian-stable-codename;\n" "Components: main\n" "Architectures: amd64 armel\n" @@ -8372,12 +8372,12 @@ msgstr "" #: sources.list.5.xml #, no-wrap msgid "" -"deb http://httpredir.debian.org/debian stable main contrib\n" -"deb-src http://httpredir.debian.org/debian stable main contrib\n" -"deb http://httpredir.debian.org/debian testing main contrib\n" -"deb-src http://httpredir.debian.org/debian testing main contrib\n" -"deb http://httpredir.debian.org/debian unstable main contrib\n" -"deb-src http://httpredir.debian.org/debian unstable main contrib" +"deb http://deb.debian.org/debian stable main contrib\n" +"deb-src http://deb.debian.org/debian stable main contrib\n" +"deb http://deb.debian.org/debian testing main contrib\n" +"deb-src http://deb.debian.org/debian testing main contrib\n" +"deb http://deb.debian.org/debian unstable main contrib\n" +"deb-src http://deb.debian.org/debian unstable main contrib" msgstr "" #. type: Content of: <refentry><refsect1><literallayout> @@ -8385,7 +8385,7 @@ msgstr "" #, no-wrap msgid "" "Types: deb deb-src\n" -"URIs: http://httpredir.debian.org/debian\n" +"URIs: http://deb.debian.org/debian\n" "Suites: stable testing unstable\n" "Components: main contrib\n" msgstr "" diff --git a/doc/po/it.po b/doc/po/it.po index 8a2b68956..4f770b078 100644 --- a/doc/po/it.po +++ b/doc/po/it.po @@ -10,7 +10,7 @@ msgid "" msgstr "" "Project-Id-Version: apt-doc 1.0.5\n" "Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n" -"POT-Creation-Date: 2016-08-24 10:39+0200\n" +"POT-Creation-Date: 2016-08-30 22:20+0200\n" "PO-Revision-Date: 2015-12-27 21:26+0200\n" "Last-Translator: Beatrice Torracca <beatricet@libero.it>\n" "Language-Team: Italian <debian-l10n-italian@lists.debian.org>\n" @@ -8358,34 +8358,34 @@ msgstr "" #: sources.list.5.xml #, no-wrap msgid "" -"deb http://httpredir.debian.org/debian &debian-stable-codename; main\n" -"deb [ arch=amd64,armel ] http://httpredir.debian.org/debian &debian-stable-codename; main" +"deb http://deb.debian.org/debian &debian-stable-codename; main\n" +"deb [ arch=amd64,armel ] http://deb.debian.org/debian &debian-stable-codename; main" msgstr "" -"deb http://httpredir.debian.org/debian &debian-stable-codename; main\n" -"deb [ arch=amd64,armel ] http://httpredir.debian.org/debian &debian-stable-codename; main" +"deb http://deb.debian.org/debian &debian-stable-codename; main\n" +"deb [ arch=amd64,armel ] http://deb.debian.org/debian &debian-stable-codename; main" #. type: Content of: <refentry><refsect1><literallayout> #: sources.list.5.xml #, no-wrap msgid "" "Types: deb\n" -"URIs: http://httpredir.debian.org/debian\n" +"URIs: http://deb.debian.org/debian\n" "Suites: &debian-stable-codename;\n" "Components: main\n" "\n" "Types: deb\n" -"URIs: http://httpredir.debian.org/debian\n" +"URIs: http://deb.debian.org/debian\n" "Suites: &debian-stable-codename;\n" "Components: main\n" "Architectures: amd64 armel\n" msgstr "" "Types: deb\n" -"URIs: http://httpredir.debian.org/debian\n" +"URIs: http://deb.debian.org/debian\n" "Suites: &debian-stable-codename;\n" "Components: main\n" "\n" "Types: deb\n" -"URIs: http://httpredir.debian.org/debian\n" +"URIs: http://deb.debian.org/debian\n" "Suites: &debian-stable-codename;\n" "Components: main\n" "Architectures: amd64 armel\n" @@ -8528,31 +8528,31 @@ msgstr "" #: sources.list.5.xml #, no-wrap msgid "" -"deb http://httpredir.debian.org/debian stable main contrib\n" -"deb-src http://httpredir.debian.org/debian stable main contrib\n" -"deb http://httpredir.debian.org/debian testing main contrib\n" -"deb-src http://httpredir.debian.org/debian testing main contrib\n" -"deb http://httpredir.debian.org/debian unstable main contrib\n" -"deb-src http://httpredir.debian.org/debian unstable main contrib" +"deb http://deb.debian.org/debian stable main contrib\n" +"deb-src http://deb.debian.org/debian stable main contrib\n" +"deb http://deb.debian.org/debian testing main contrib\n" +"deb-src http://deb.debian.org/debian testing main contrib\n" +"deb http://deb.debian.org/debian unstable main contrib\n" +"deb-src http://deb.debian.org/debian unstable main contrib" msgstr "" -"deb http://httpredir.debian.org/debian stable main contrib\n" -"deb-src http://httpredir.debian.org/debian stable main contrib\n" -"deb http://httpredir.debian.org/debian testing main contrib\n" -"deb-src http://httpredir.debian.org/debian testing main contrib\n" -"deb http://httpredir.debian.org/debian unstable main contrib\n" -"deb-src http://httpredir.debian.org/debian unstable main contrib" +"deb http://deb.debian.org/debian stable main contrib\n" +"deb-src http://deb.debian.org/debian stable main contrib\n" +"deb http://deb.debian.org/debian testing main contrib\n" +"deb-src http://deb.debian.org/debian testing main contrib\n" +"deb http://deb.debian.org/debian unstable main contrib\n" +"deb-src http://deb.debian.org/debian unstable main contrib" #. type: Content of: <refentry><refsect1><literallayout> #: sources.list.5.xml #, no-wrap msgid "" "Types: deb deb-src\n" -"URIs: http://httpredir.debian.org/debian\n" +"URIs: http://deb.debian.org/debian\n" "Suites: stable testing unstable\n" "Components: main contrib\n" msgstr "" "Types: deb deb-src\n" -"URIs: http://httpredir.debian.org/debian\n" +"URIs: http://deb.debian.org/debian\n" "Suites: stable testing unstable\n" "Components: main contrib\n" diff --git a/doc/po/ja.po b/doc/po/ja.po index 6ddbcc99d..b992b66fc 100644 --- a/doc/po/ja.po +++ b/doc/po/ja.po @@ -10,7 +10,7 @@ msgid "" msgstr "" "Project-Id-Version: apt-doc 1.0.6\n" "Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n" -"POT-Creation-Date: 2016-08-24 10:39+0200\n" +"POT-Creation-Date: 2016-08-30 22:20+0200\n" "PO-Revision-Date: 2016-03-23 09:39+0900\n" "Last-Translator: Takuma Yamada <tyamada@takumayamada.com>\n" "Language-Team: Japanese <debian-japanese@lists.debian.org>\n" @@ -7995,34 +7995,34 @@ msgstr "" #: sources.list.5.xml #, no-wrap msgid "" -"deb http://httpredir.debian.org/debian &debian-stable-codename; main\n" -"deb [ arch=amd64,armel ] http://httpredir.debian.org/debian &debian-stable-codename; main" +"deb http://deb.debian.org/debian &debian-stable-codename; main\n" +"deb [ arch=amd64,armel ] http://deb.debian.org/debian &debian-stable-codename; main" msgstr "" -"deb http://httpredir.debian.org/debian &debian-stable-codename; main\n" -"deb [ arch=amd64,armel ] http://httpredir.debian.org/debian &debian-stable-codename; main" +"deb http://deb.debian.org/debian &debian-stable-codename; main\n" +"deb [ arch=amd64,armel ] http://deb.debian.org/debian &debian-stable-codename; main" #. type: Content of: <refentry><refsect1><literallayout> #: sources.list.5.xml #, no-wrap msgid "" "Types: deb\n" -"URIs: http://httpredir.debian.org/debian\n" +"URIs: http://deb.debian.org/debian\n" "Suites: &debian-stable-codename;\n" "Components: main\n" "\n" "Types: deb\n" -"URIs: http://httpredir.debian.org/debian\n" +"URIs: http://deb.debian.org/debian\n" "Suites: &debian-stable-codename;\n" "Components: main\n" "Architectures: amd64 armel\n" msgstr "" "Types: deb\n" -"URIs: http://httpredir.debian.org/debian\n" +"URIs: http://deb.debian.org/debian\n" "Suites: &debian-stable-codename;\n" "Components: main\n" "\n" "Types: deb\n" -"URIs: http://httpredir.debian.org/debian\n" +"URIs: http://deb.debian.org/debian\n" "Suites: &debian-stable-codename;\n" "Components: main\n" "Architectures: amd64 armel\n" @@ -8169,31 +8169,31 @@ msgstr "" #: sources.list.5.xml #, no-wrap msgid "" -"deb http://httpredir.debian.org/debian stable main contrib\n" -"deb-src http://httpredir.debian.org/debian stable main contrib\n" -"deb http://httpredir.debian.org/debian testing main contrib\n" -"deb-src http://httpredir.debian.org/debian testing main contrib\n" -"deb http://httpredir.debian.org/debian unstable main contrib\n" -"deb-src http://httpredir.debian.org/debian unstable main contrib" +"deb http://deb.debian.org/debian stable main contrib\n" +"deb-src http://deb.debian.org/debian stable main contrib\n" +"deb http://deb.debian.org/debian testing main contrib\n" +"deb-src http://deb.debian.org/debian testing main contrib\n" +"deb http://deb.debian.org/debian unstable main contrib\n" +"deb-src http://deb.debian.org/debian unstable main contrib" msgstr "" -"deb http://httpredir.debian.org/debian stable main contrib\n" -"deb-src http://httpredir.debian.org/debian stable main contrib\n" -"deb http://httpredir.debian.org/debian testing main contrib\n" -"deb-src http://httpredir.debian.org/debian testing main contrib\n" -"deb http://httpredir.debian.org/debian unstable main contrib\n" -"deb-src http://httpredir.debian.org/debian unstable main contrib" +"deb http://deb.debian.org/debian stable main contrib\n" +"deb-src http://deb.debian.org/debian stable main contrib\n" +"deb http://deb.debian.org/debian testing main contrib\n" +"deb-src http://deb.debian.org/debian testing main contrib\n" +"deb http://deb.debian.org/debian unstable main contrib\n" +"deb-src http://deb.debian.org/debian unstable main contrib" #. type: Content of: <refentry><refsect1><literallayout> #: sources.list.5.xml #, no-wrap msgid "" "Types: deb deb-src\n" -"URIs: http://httpredir.debian.org/debian\n" +"URIs: http://deb.debian.org/debian\n" "Suites: stable testing unstable\n" "Components: main contrib\n" msgstr "" "Types: deb deb-src\n" -"URIs: http://httpredir.debian.org/debian\n" +"URIs: http://deb.debian.org/debian\n" "Suites: stable testing unstable\n" "Components: main contrib\n" diff --git a/doc/po/nl.po b/doc/po/nl.po index 6097373ea..c7cf7e267 100644 --- a/doc/po/nl.po +++ b/doc/po/nl.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: apt-doc 1.1.10-nl\n" "Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n" -"POT-Creation-Date: 2016-08-24 10:39+0200\n" +"POT-Creation-Date: 2016-08-30 22:20+0200\n" "PO-Revision-Date: 2016-02-01 16:17+0100\n" "Last-Translator: Frans Spiesschaert <Frans.Spiesschaert@yucom.be>\n" "Language-Team: Debian Dutch l10n Team <debian-l10n-dutch@lists.debian.org>\n" @@ -8505,34 +8505,34 @@ msgstr "" #: sources.list.5.xml #, no-wrap msgid "" -"deb http://httpredir.debian.org/debian &debian-stable-codename; main\n" -"deb [ arch=amd64,armel ] http://httpredir.debian.org/debian &debian-stable-codename; main" +"deb http://deb.debian.org/debian &debian-stable-codename; main\n" +"deb [ arch=amd64,armel ] http://deb.debian.org/debian &debian-stable-codename; main" msgstr "" -"deb http://httpredir.debian.org/debian &debian-stable-codename; main\n" -"deb [ arch=amd64,armel ] http://httpredir.debian.org/debian &debian-stable-codename; main" +"deb http://deb.debian.org/debian &debian-stable-codename; main\n" +"deb [ arch=amd64,armel ] http://deb.debian.org/debian &debian-stable-codename; main" #. type: Content of: <refentry><refsect1><literallayout> #: sources.list.5.xml #, no-wrap msgid "" "Types: deb\n" -"URIs: http://httpredir.debian.org/debian\n" +"URIs: http://deb.debian.org/debian\n" "Suites: &debian-stable-codename;\n" "Components: main\n" "\n" "Types: deb\n" -"URIs: http://httpredir.debian.org/debian\n" +"URIs: http://deb.debian.org/debian\n" "Suites: &debian-stable-codename;\n" "Components: main\n" "Architectures: amd64 armel\n" msgstr "" "Types: deb\n" -"URIs: http://httpredir.debian.org/debian\n" +"URIs: http://deb.debian.org/debian\n" "Suites: &debian-stable-codename;\n" "Components: main\n" "\n" "Types: deb\n" -"URIs: http://httpredir.debian.org/debian\n" +"URIs: http://deb.debian.org/debian\n" "Suites: &debian-stable-codename;\n" "Components: main\n" "Architectures: amd64 armel\n" @@ -8681,31 +8681,31 @@ msgstr "" #: sources.list.5.xml #, no-wrap msgid "" -"deb http://httpredir.debian.org/debian stable main contrib\n" -"deb-src http://httpredir.debian.org/debian stable main contrib\n" -"deb http://httpredir.debian.org/debian testing main contrib\n" -"deb-src http://httpredir.debian.org/debian testing main contrib\n" -"deb http://httpredir.debian.org/debian unstable main contrib\n" -"deb-src http://httpredir.debian.org/debian unstable main contrib" +"deb http://deb.debian.org/debian stable main contrib\n" +"deb-src http://deb.debian.org/debian stable main contrib\n" +"deb http://deb.debian.org/debian testing main contrib\n" +"deb-src http://deb.debian.org/debian testing main contrib\n" +"deb http://deb.debian.org/debian unstable main contrib\n" +"deb-src http://deb.debian.org/debian unstable main contrib" msgstr "" -"deb http://httpredir.debian.org/debian stable main contrib\n" -"deb-src http://httpredir.debian.org/debian stable main contrib\n" -"deb http://httpredir.debian.org/debian testing main contrib\n" -"deb-src http://httpredir.debian.org/debian testing main contrib\n" -"deb http://httpredir.debian.org/debian unstable main contrib\n" -"deb-src http://httpredir.debian.org/debian unstable main contrib" +"deb http://deb.debian.org/debian stable main contrib\n" +"deb-src http://deb.debian.org/debian stable main contrib\n" +"deb http://deb.debian.org/debian testing main contrib\n" +"deb-src http://deb.debian.org/debian testing main contrib\n" +"deb http://deb.debian.org/debian unstable main contrib\n" +"deb-src http://deb.debian.org/debian unstable main contrib" #. type: Content of: <refentry><refsect1><literallayout> #: sources.list.5.xml #, no-wrap msgid "" "Types: deb deb-src\n" -"URIs: http://httpredir.debian.org/debian\n" +"URIs: http://deb.debian.org/debian\n" "Suites: stable testing unstable\n" "Components: main contrib\n" msgstr "" "Types: deb deb-src\n" -"URIs: http://httpredir.debian.org/debian\n" +"URIs: http://deb.debian.org/debian\n" "Suites: stable testing unstable\n" "Components: main contrib\n" diff --git a/doc/po/pl.po b/doc/po/pl.po index 246a35a73..9737f8182 100644 --- a/doc/po/pl.po +++ b/doc/po/pl.po @@ -11,7 +11,7 @@ msgid "" msgstr "" "Project-Id-Version: apt-doc 1.0.5\n" "Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n" -"POT-Creation-Date: 2016-08-24 10:39+0200\n" +"POT-Creation-Date: 2016-08-30 22:20+0200\n" "PO-Revision-Date: 2014-07-04 02:13+0200\n" "Last-Translator: Robert Luberda <robert@debian.org>\n" "Language-Team: Polish <manpages-pl-list@lists.sourceforge.net>\n" @@ -7607,8 +7607,8 @@ msgstr "" #| "deb http://ftp.debian.org/debian &debian-stable-codename; main\n" #| "deb [ arch=amd64,armel ] http://ftp.debian.org/debian &debian-stable-codename; main" msgid "" -"deb http://httpredir.debian.org/debian &debian-stable-codename; main\n" -"deb [ arch=amd64,armel ] http://httpredir.debian.org/debian &debian-stable-codename; main" +"deb http://deb.debian.org/debian &debian-stable-codename; main\n" +"deb [ arch=amd64,armel ] http://deb.debian.org/debian &debian-stable-codename; main" msgstr "" "deb http://ftp.debian.org/debian &debian-stable-codename; main\n" "deb [ arch=amd64,armel ] http://ftp.debian.org/debian &debian-stable-codename; main" @@ -7621,12 +7621,12 @@ msgstr "" #| "deb [ arch=amd64,armel ] http://ftp.debian.org/debian &debian-stable-codename; main" msgid "" "Types: deb\n" -"URIs: http://httpredir.debian.org/debian\n" +"URIs: http://deb.debian.org/debian\n" "Suites: &debian-stable-codename;\n" "Components: main\n" "\n" "Types: deb\n" -"URIs: http://httpredir.debian.org/debian\n" +"URIs: http://deb.debian.org/debian\n" "Suites: &debian-stable-codename;\n" "Components: main\n" "Architectures: amd64 armel\n" @@ -7771,12 +7771,12 @@ msgstr "" #: sources.list.5.xml #, no-wrap msgid "" -"deb http://httpredir.debian.org/debian stable main contrib\n" -"deb-src http://httpredir.debian.org/debian stable main contrib\n" -"deb http://httpredir.debian.org/debian testing main contrib\n" -"deb-src http://httpredir.debian.org/debian testing main contrib\n" -"deb http://httpredir.debian.org/debian unstable main contrib\n" -"deb-src http://httpredir.debian.org/debian unstable main contrib" +"deb http://deb.debian.org/debian stable main contrib\n" +"deb-src http://deb.debian.org/debian stable main contrib\n" +"deb http://deb.debian.org/debian testing main contrib\n" +"deb-src http://deb.debian.org/debian testing main contrib\n" +"deb http://deb.debian.org/debian unstable main contrib\n" +"deb-src http://deb.debian.org/debian unstable main contrib" msgstr "" #. type: Content of: <refentry><refsect1><literallayout> @@ -7784,7 +7784,7 @@ msgstr "" #, no-wrap msgid "" "Types: deb deb-src\n" -"URIs: http://httpredir.debian.org/debian\n" +"URIs: http://deb.debian.org/debian\n" "Suites: stable testing unstable\n" "Components: main contrib\n" msgstr "" diff --git a/doc/po/pt.po b/doc/po/pt.po index 9d5487d59..9d3355c4c 100644 --- a/doc/po/pt.po +++ b/doc/po/pt.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: apt-doc 1.0.7\n" "Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n" -"POT-Creation-Date: 2016-08-24 10:39+0200\n" +"POT-Creation-Date: 2016-08-30 22:20+0200\n" "PO-Revision-Date: 2014-08-29 00:34+0100\n" "Last-Translator: Américo Monteiro <a_monteiro@gmx.com>\n" "Language-Team: Portuguese <traduz@debianpt.org>\n" @@ -8175,8 +8175,8 @@ msgstr "" #| "deb http://ftp.debian.org/debian &debian-stable-codename; main\n" #| "deb [ arch=amd64,armel ] http://ftp.debian.org/debian &debian-stable-codename; main" msgid "" -"deb http://httpredir.debian.org/debian &debian-stable-codename; main\n" -"deb [ arch=amd64,armel ] http://httpredir.debian.org/debian &debian-stable-codename; main" +"deb http://deb.debian.org/debian &debian-stable-codename; main\n" +"deb [ arch=amd64,armel ] http://deb.debian.org/debian &debian-stable-codename; main" msgstr "" "deb http://ftp.debian.org/debian &debian-stable-codename; main\n" "deb [ arch=amd64,armel ] http://ftp.debian.org/debian &debian-stable-codename; main" @@ -8189,12 +8189,12 @@ msgstr "" #| "deb [ arch=amd64,armel ] http://ftp.debian.org/debian &debian-stable-codename; main" msgid "" "Types: deb\n" -"URIs: http://httpredir.debian.org/debian\n" +"URIs: http://deb.debian.org/debian\n" "Suites: &debian-stable-codename;\n" "Components: main\n" "\n" "Types: deb\n" -"URIs: http://httpredir.debian.org/debian\n" +"URIs: http://deb.debian.org/debian\n" "Suites: &debian-stable-codename;\n" "Components: main\n" "Architectures: amd64 armel\n" @@ -8339,12 +8339,12 @@ msgstr "" #: sources.list.5.xml #, no-wrap msgid "" -"deb http://httpredir.debian.org/debian stable main contrib\n" -"deb-src http://httpredir.debian.org/debian stable main contrib\n" -"deb http://httpredir.debian.org/debian testing main contrib\n" -"deb-src http://httpredir.debian.org/debian testing main contrib\n" -"deb http://httpredir.debian.org/debian unstable main contrib\n" -"deb-src http://httpredir.debian.org/debian unstable main contrib" +"deb http://deb.debian.org/debian stable main contrib\n" +"deb-src http://deb.debian.org/debian stable main contrib\n" +"deb http://deb.debian.org/debian testing main contrib\n" +"deb-src http://deb.debian.org/debian testing main contrib\n" +"deb http://deb.debian.org/debian unstable main contrib\n" +"deb-src http://deb.debian.org/debian unstable main contrib" msgstr "" #. type: Content of: <refentry><refsect1><literallayout> @@ -8352,7 +8352,7 @@ msgstr "" #, no-wrap msgid "" "Types: deb deb-src\n" -"URIs: http://httpredir.debian.org/debian\n" +"URIs: http://deb.debian.org/debian\n" "Suites: stable testing unstable\n" "Components: main contrib\n" msgstr "" diff --git a/doc/po/pt_BR.po b/doc/po/pt_BR.po index 6a994944d..330a1a51f 100644 --- a/doc/po/pt_BR.po +++ b/doc/po/pt_BR.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: apt-doc 1.0.5\n" "Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n" -"POT-Creation-Date: 2016-08-24 10:39+0200\n" +"POT-Creation-Date: 2016-08-30 22:20+0200\n" "PO-Revision-Date: 2004-09-20 17:02+0000\n" "Last-Translator: André Luís Lopes <andrelop@debian.org>\n" "Language-Team: <debian-l10n-portuguese@lists.debian.org>\n" @@ -6144,8 +6144,8 @@ msgstr "" #: sources.list.5.xml #, no-wrap msgid "" -"deb http://httpredir.debian.org/debian &debian-stable-codename; main\n" -"deb [ arch=amd64,armel ] http://httpredir.debian.org/debian &debian-stable-codename; main" +"deb http://deb.debian.org/debian &debian-stable-codename; main\n" +"deb [ arch=amd64,armel ] http://deb.debian.org/debian &debian-stable-codename; main" msgstr "" #. type: Content of: <refentry><refsect1><literallayout> @@ -6153,12 +6153,12 @@ msgstr "" #, no-wrap msgid "" "Types: deb\n" -"URIs: http://httpredir.debian.org/debian\n" +"URIs: http://deb.debian.org/debian\n" "Suites: &debian-stable-codename;\n" "Components: main\n" "\n" "Types: deb\n" -"URIs: http://httpredir.debian.org/debian\n" +"URIs: http://deb.debian.org/debian\n" "Suites: &debian-stable-codename;\n" "Components: main\n" "Architectures: amd64 armel\n" @@ -6273,12 +6273,12 @@ msgstr "" #: sources.list.5.xml #, no-wrap msgid "" -"deb http://httpredir.debian.org/debian stable main contrib\n" -"deb-src http://httpredir.debian.org/debian stable main contrib\n" -"deb http://httpredir.debian.org/debian testing main contrib\n" -"deb-src http://httpredir.debian.org/debian testing main contrib\n" -"deb http://httpredir.debian.org/debian unstable main contrib\n" -"deb-src http://httpredir.debian.org/debian unstable main contrib" +"deb http://deb.debian.org/debian stable main contrib\n" +"deb-src http://deb.debian.org/debian stable main contrib\n" +"deb http://deb.debian.org/debian testing main contrib\n" +"deb-src http://deb.debian.org/debian testing main contrib\n" +"deb http://deb.debian.org/debian unstable main contrib\n" +"deb-src http://deb.debian.org/debian unstable main contrib" msgstr "" #. type: Content of: <refentry><refsect1><literallayout> @@ -6286,7 +6286,7 @@ msgstr "" #, no-wrap msgid "" "Types: deb deb-src\n" -"URIs: http://httpredir.debian.org/debian\n" +"URIs: http://deb.debian.org/debian\n" "Suites: stable testing unstable\n" "Components: main contrib\n" msgstr "" diff --git a/doc/sources.list.5.xml b/doc/sources.list.5.xml index 8fdc8eedb..c0960958f 100644 --- a/doc/sources.list.5.xml +++ b/doc/sources.list.5.xml @@ -14,7 +14,7 @@ &apt-email; &apt-product; <!-- The last update date --> - <date>2016-08-06T00:00:00Z</date> + <date>2016-08-29T00:00:00Z</date> </refentryinfo> <refmeta> @@ -441,15 +441,15 @@ Components: main contrib non-free</literallayout> <para>The first line gets package information for the architectures in <literal>APT::Architectures</literal> while the second always retrieves <literal>amd64</literal> and <literal>armel</literal>.</para> - <literallayout>deb http://httpredir.debian.org/debian &debian-stable-codename; main -deb [ arch=amd64,armel ] http://httpredir.debian.org/debian &debian-stable-codename; main</literallayout> + <literallayout>deb http://deb.debian.org/debian &debian-stable-codename; main +deb [ arch=amd64,armel ] http://deb.debian.org/debian &debian-stable-codename; main</literallayout> <literallayout>Types: deb -URIs: http://httpredir.debian.org/debian +URIs: http://deb.debian.org/debian Suites: &debian-stable-codename; Components: main Types: deb -URIs: http://httpredir.debian.org/debian +URIs: http://deb.debian.org/debian Suites: &debian-stable-codename; Components: main Architectures: amd64 armel @@ -496,14 +496,14 @@ Suites: unstable/binary-$(ARCH)/</literallayout> <para>Uses HTTP to get binary packages as well as sources from the stable, testing and unstable suites and the components main and contrib.</para> - <literallayout>deb http://httpredir.debian.org/debian stable main contrib -deb-src http://httpredir.debian.org/debian stable main contrib -deb http://httpredir.debian.org/debian testing main contrib -deb-src http://httpredir.debian.org/debian testing main contrib -deb http://httpredir.debian.org/debian unstable main contrib -deb-src http://httpredir.debian.org/debian unstable main contrib</literallayout> + <literallayout>deb http://deb.debian.org/debian stable main contrib +deb-src http://deb.debian.org/debian stable main contrib +deb http://deb.debian.org/debian testing main contrib +deb-src http://deb.debian.org/debian testing main contrib +deb http://deb.debian.org/debian unstable main contrib +deb-src http://deb.debian.org/debian unstable main contrib</literallayout> <literallayout>Types: deb deb-src -URIs: http://httpredir.debian.org/debian +URIs: http://deb.debian.org/debian Suites: stable testing unstable Components: main contrib </literallayout> diff --git a/ftparchive/CMakeLists.txt b/ftparchive/CMakeLists.txt index 1e1dc36ca..799fd7335 100644 --- a/ftparchive/CMakeLists.txt +++ b/ftparchive/CMakeLists.txt @@ -1,3 +1,4 @@ +include_directories(${BERKELEY_DB_INCLUDE_DIRS}) # Create the executable tasks file(GLOB_RECURSE source "*.cc") add_executable(apt-ftparchive ${source}) diff --git a/methods/CMakeLists.txt b/methods/CMakeLists.txt index 2417c4dc1..82ae70e7d 100644 --- a/methods/CMakeLists.txt +++ b/methods/CMakeLists.txt @@ -21,7 +21,7 @@ target_link_libraries(store apt-pkg) target_link_libraries(gpgv apt-pkg) target_link_libraries(cdrom apt-pkg) target_link_libraries(http apt-pkg) -target_link_libraries(mirror apt-pkg -lresolv) +target_link_libraries(mirror apt-pkg ${RESOLV_LIBRARIES}) target_link_libraries(https apt-pkg ${CURL_LIBRARIES}) target_link_libraries(ftp apt-pkg) target_link_libraries(rred apt-pkg) diff --git a/methods/connect.cc b/methods/connect.cc index c819c1dfb..cb2f83588 100644 --- a/methods/connect.cc +++ b/methods/connect.cc @@ -180,8 +180,10 @@ static bool ConnectToHostname(std::string const &Host, int const Port, memset(&Hints,0,sizeof(Hints)); Hints.ai_socktype = SOCK_STREAM; Hints.ai_flags = 0; +#ifdef AI_IDN if (_config->FindB("Acquire::Connect::IDN", true) == true) Hints.ai_flags |= AI_IDN; +#endif // see getaddrinfo(3): only return address if system has such a address configured // useful if system is ipv4 only, to not get ipv6, but that fails if the system has // no address configured: e.g. offline and trying to connect to localhost. diff --git a/methods/gpgv.cc b/methods/gpgv.cc index 2fed53a39..f2ef6b76e 100644 --- a/methods/gpgv.cc +++ b/methods/gpgv.cc @@ -39,6 +39,7 @@ using std::vector; #define GNUPGEXPSIG "[GNUPG:] EXPSIG" #define GNUPGREVKEYSIG "[GNUPG:] REVKEYSIG" #define GNUPGNODATA "[GNUPG:] NODATA" +#define APTKEYWARNING "[APTKEY:] WARNING" struct Digest { enum class State { @@ -238,6 +239,8 @@ string GPGVMethod::VerifyGetSigners(const char *file, const char *outfile, ValidSigners.push_back(sig); } + else if (strncmp(buffer, APTKEYWARNING, sizeof(APTKEYWARNING)-1) == 0) + Warning("%s", buffer + sizeof(APTKEYWARNING)); } fclose(pipein); free(buffer); diff --git a/po/CMakeLists.txt b/po/CMakeLists.txt index 174cc5d41..258c9b050 100644 --- a/po/CMakeLists.txt +++ b/po/CMakeLists.txt @@ -1,3 +1,5 @@ +include(Translations) + set(languages_excluded he ## disabled by translator request #313283 ) diff --git a/po/apt-all.pot b/po/apt-all.pot index 4d3c0a5f9..0a20ea792 100644 --- a/po/apt-all.pot +++ b/po/apt-all.pot @@ -5,9 +5,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: apt 1.3~rc2ubuntu3\n" +"Project-Id-Version: apt 1.3~rc3\n" "Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n" -"POT-Creation-Date: 2016-08-24 10:13+0200\n" +"POT-Creation-Date: 2016-08-30 22:20+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Language-Team: LANGUAGE <LL@li.org>\n" @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: apt 1.0.5\n" "Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n" -"POT-Creation-Date: 2016-08-24 10:13+0200\n" +"POT-Creation-Date: 2016-08-30 22:20+0200\n" "PO-Revision-Date: 2006-10-20 21:28+0300\n" "Last-Translator: Ossama M. Khayat <okhayat@yahoo.com>\n" "Language-Team: Arabic <support@arabeyes.org>\n" @@ -4,7 +4,7 @@ msgid "" msgstr "" "Project-Id-Version: apt 0.7.18\n" "Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n" -"POT-Creation-Date: 2016-08-24 10:13+0200\n" +"POT-Creation-Date: 2016-08-30 22:20+0200\n" "PO-Revision-Date: 2010-10-02 23:35+0100\n" "Last-Translator: Iñigo Varela <ivarela@softastur.org>\n" "Language-Team: Asturian (ast)\n" @@ -10,7 +10,7 @@ msgid "" msgstr "" "Project-Id-Version: apt 0.7.21\n" "Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n" -"POT-Creation-Date: 2016-08-24 10:13+0200\n" +"POT-Creation-Date: 2016-08-30 22:20+0200\n" "PO-Revision-Date: 2012-06-25 17:23+0300\n" "Last-Translator: Damyan Ivanov <dmn@debian.org>\n" "Language-Team: Bulgarian <dict@fsa-bg.org>\n" @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: apt 0.5.26\n" "Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n" -"POT-Creation-Date: 2016-08-24 10:13+0200\n" +"POT-Creation-Date: 2016-08-30 22:20+0200\n" "PO-Revision-Date: 2004-05-06 15:25+0100\n" "Last-Translator: Safir Šećerović <sapphire@linux.org.ba>\n" "Language-Team: Bosnian <lokal@lugbih.org>\n" @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: apt 0.9.7.6\n" "Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n" -"POT-Creation-Date: 2016-08-24 10:13+0200\n" +"POT-Creation-Date: 2016-08-30 22:20+0200\n" "PO-Revision-Date: 2012-10-19 13:30+0200\n" "Last-Translator: Jordi Mallach <jordi@debian.org>\n" "Language-Team: Catalan <debian-l10n-catalan@lists.debian.org>\n" @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: apt 1.0.5\n" "Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n" -"POT-Creation-Date: 2016-08-24 10:13+0200\n" +"POT-Creation-Date: 2016-08-30 22:20+0200\n" "PO-Revision-Date: 2015-08-29 15:24+0200\n" "Last-Translator: Miroslav Kure <kurem@debian.cz>\n" "Language-Team: Czech <debian-l10n-czech@lists.debian.org>\n" @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: apt 1.0.5\n" "Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n" -"POT-Creation-Date: 2016-08-24 10:13+0200\n" +"POT-Creation-Date: 2016-08-30 22:20+0200\n" "PO-Revision-Date: 2005-06-06 13:46+0100\n" "Last-Translator: Dafydd Harries <daf@muse.19inch.net>\n" "Language-Team: Welsh <cy@pengwyn.linux.org.uk>\n" @@ -10,7 +10,7 @@ msgid "" msgstr "" "Project-Id-Version: apt 1.0.5\n" "Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n" -"POT-Creation-Date: 2016-08-24 10:13+0200\n" +"POT-Creation-Date: 2016-08-30 22:20+0200\n" "PO-Revision-Date: 2014-07-06 23:51+0200\n" "Last-Translator: Joe Hansen <joedalton2@yahoo.dk>\n" "Language-Team: Danish <debian-l10n-danish@lists.debian.org>\n" @@ -10,7 +10,7 @@ msgid "" msgstr "" "Project-Id-Version: apt 1.0.8\n" "Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n" -"POT-Creation-Date: 2016-08-24 10:13+0200\n" +"POT-Creation-Date: 2016-08-30 22:20+0200\n" "PO-Revision-Date: 2014-09-19 13:04+0100\n" "Last-Translator: Holger Wansing <linux@wansing-online.de>\n" "Language-Team: Debian German <debian-l10n-german@lists.debian.org>\n" @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: apt 1.0.5\n" "Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n" -"POT-Creation-Date: 2016-08-24 10:13+0200\n" +"POT-Creation-Date: 2016-08-30 22:20+0200\n" "PO-Revision-Date: 2006-09-19 09:49+0530\n" "Last-Translator: Kinley Tshering <gasepkuenden2k3@hotmail.com>\n" "Language-Team: Dzongkha <pgeyleg@dit.gov.bt>\n" @@ -16,7 +16,7 @@ msgid "" msgstr "" "Project-Id-Version: apt 1.0.5\n" "Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n" -"POT-Creation-Date: 2016-08-24 10:13+0200\n" +"POT-Creation-Date: 2016-08-30 22:20+0200\n" "PO-Revision-Date: 2008-08-26 18:25+0300\n" "Last-Translator: Θανάσης Νάτσης <natsisthanasis@gmail.com>\n" "Language-Team: Greek <debian-l10n-greek@lists.debian.org>\n" @@ -34,7 +34,7 @@ msgid "" msgstr "" "Project-Id-Version: apt 0.8.10\n" "Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n" -"POT-Creation-Date: 2016-08-24 10:13+0200\n" +"POT-Creation-Date: 2016-08-30 22:20+0200\n" "PO-Revision-Date: 2016-01-26 01:51+0100\n" "Last-Translator: Manuel \"Venturi\" Porras Peralta <venturi@openmailbox." "org>\n" @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: apt 1.0.5\n" "Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n" -"POT-Creation-Date: 2016-08-24 10:13+0200\n" +"POT-Creation-Date: 2016-08-30 22:20+0200\n" "PO-Revision-Date: 2009-05-17 00:41+0200\n" "Last-Translator: Piarres Beobide <pi@beobide.net>\n" "Language-Team: Euskara <debian-l10n-basque@lists.debian.org>\n" @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: apt 0.5.26\n" "Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n" -"POT-Creation-Date: 2016-08-24 10:13+0200\n" +"POT-Creation-Date: 2016-08-30 22:20+0200\n" "PO-Revision-Date: 2008-12-11 14:52+0200\n" "Last-Translator: Tapio Lehtonen <tale@debian.org>\n" "Language-Team: Finnish <debian-l10n-finnish@lists.debian.org>\n" @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: apt 1.0.5\n" "Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n" -"POT-Creation-Date: 2016-08-24 10:13+0200\n" +"POT-Creation-Date: 2016-08-30 22:20+0200\n" "PO-Revision-Date: 2013-12-15 16:45+0100\n" "Last-Translator: Julien Patriarca <leatherface@debian.org>\n" "Language-Team: French <debian-l10n-french@lists.debian.org>\n" @@ -10,7 +10,7 @@ msgid "" msgstr "" "Project-Id-Version: apt 1.0.5\n" "Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n" -"POT-Creation-Date: 2016-08-24 10:13+0200\n" +"POT-Creation-Date: 2016-08-30 22:20+0200\n" "PO-Revision-Date: 2011-05-12 15:28+0100\n" "Last-Translator: Miguel Anxo Bouzada <mbouzada@gmail.com>\n" "Language-Team: galician <proxecto@trasno.net>\n" @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: apt 1.0.5\n" "Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n" -"POT-Creation-Date: 2016-08-24 10:13+0200\n" +"POT-Creation-Date: 2016-08-30 22:20+0200\n" "PO-Revision-Date: 2016-04-10 19:46+0200\n" "Last-Translator: Gabor Kelemen <kelemeng@ubuntu.com>\n" "Language-Team: Hungarian <gnome-hu-list@gnome.org>\n" @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: apt 1.0.5\n" "Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n" -"POT-Creation-Date: 2016-08-24 10:13+0200\n" +"POT-Creation-Date: 2016-08-30 22:20+0200\n" "PO-Revision-Date: 2015-04-07 16:51+0100\n" "Last-Translator: Milo Casagrande <milo@milo.name>\n" "Language-Team: Italian <tp@lists.linux.it>\n" @@ -10,7 +10,7 @@ msgid "" msgstr "" "Project-Id-Version: apt 1.0.9.3\n" "Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n" -"POT-Creation-Date: 2016-08-24 10:13+0200\n" +"POT-Creation-Date: 2016-08-30 22:20+0200\n" "PO-Revision-Date: 2016-05-18 15:31+0900\n" "Last-Translator: Takuma Yamada <tyamada@takumayamada.com>\n" "Language-Team: Japanese <debian-japanese@lists.debian.org>\n" @@ -10,7 +10,7 @@ msgid "" msgstr "" "Project-Id-Version: apt 1.0.5\n" "Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n" -"POT-Creation-Date: 2016-08-24 10:13+0200\n" +"POT-Creation-Date: 2016-08-30 22:20+0200\n" "PO-Revision-Date: 2006-10-10 09:48+0700\n" "Last-Translator: Khoem Sokhem <khoemsokhem@khmeros.info>\n" "Language-Team: Khmer <support@khmeros.info>\n" @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: apt 1.0.5\n" "Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n" -"POT-Creation-Date: 2016-08-24 10:13+0200\n" +"POT-Creation-Date: 2016-08-30 22:20+0200\n" "PO-Revision-Date: 2010-08-30 02:31+0900\n" "Last-Translator: Changwoo Ryu <cwryu@debian.org>\n" "Language-Team: Korean <debian-l10n-korean@lists.debian.org>\n" @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: apt 1.0.5\n" "Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n" -"POT-Creation-Date: 2016-08-24 10:13+0200\n" +"POT-Creation-Date: 2016-08-30 22:20+0200\n" "PO-Revision-Date: 2008-05-08 12:48+0200\n" "Last-Translator: Erdal Ronahi <erdal.ronahi@gmail.com>\n" "Language-Team: ku <ubuntu-l10n-kur@lists.ubuntu.com>\n" @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: apt 1.0.5\n" "Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n" -"POT-Creation-Date: 2016-08-24 10:13+0200\n" +"POT-Creation-Date: 2016-08-30 22:20+0200\n" "PO-Revision-Date: 2008-08-02 01:47-0400\n" "Last-Translator: Gintautas Miliauskas <gintas@akl.lt>\n" "Language-Team: Lithuanian <komp_lt@konferencijos.lt>\n" @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: apt 1.0.5\n" "Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n" -"POT-Creation-Date: 2016-08-24 10:13+0200\n" +"POT-Creation-Date: 2016-08-30 22:20+0200\n" "PO-Revision-Date: 2008-11-20 23:27+0530\n" "Last-Translator: Sampada <sampadanakhare@gmail.com>\n" "Language-Team: Marathi, janabhaaratii, C-DAC, Mumbai, India " @@ -12,7 +12,7 @@ msgid "" msgstr "" "Project-Id-Version: apt 1.0.5\n" "Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n" -"POT-Creation-Date: 2016-08-24 10:13+0200\n" +"POT-Creation-Date: 2016-08-30 22:20+0200\n" "PO-Revision-Date: 2016-06-11 22:38+0200\n" "Last-Translator: Petter Reinholdtsen <pere@hungry.com>\n" "Language-Team: Norwegian Bokmål <i18n-no@lister.ping.uio.no>\n" @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: apt 1.0.5\n" "Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n" -"POT-Creation-Date: 2016-08-24 10:13+0200\n" +"POT-Creation-Date: 2016-08-30 22:20+0200\n" "PO-Revision-Date: 2006-06-12 14:35+0545\n" "Last-Translator: Shiva Pokharel <pokharelshiva@hotmail.com>\n" "Language-Team: Nepali <info@mpp.org.np>\n" @@ -12,7 +12,7 @@ msgid "" msgstr "" "Project-Id-Version: apt 1.2.11\n" "Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n" -"POT-Creation-Date: 2016-08-24 10:13+0200\n" +"POT-Creation-Date: 2016-08-30 22:20+0200\n" "PO-Revision-Date: 2016-04-27 18:12+0200\n" "Last-Translator: Frans Spiesschaert <Frans.Spiesschaert@yucom.be>\n" "Language-Team: Debian Dutch l10n Team <debian-l10n-dutch@lists.debian.org>\n" @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: apt 1.0.5\n" "Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n" -"POT-Creation-Date: 2016-08-24 10:13+0200\n" +"POT-Creation-Date: 2016-08-30 22:20+0200\n" "PO-Revision-Date: 2005-02-14 23:30+0100\n" "Last-Translator: Havard Korsvoll <korsvoll@skulelinux.no>\n" "Language-Team: Norwegian nynorsk <i18n-nn@lister.ping.uio.no>\n" @@ -11,7 +11,7 @@ msgid "" msgstr "" "Project-Id-Version: apt 0.9.7.3\n" "Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n" -"POT-Creation-Date: 2016-08-24 10:13+0200\n" +"POT-Creation-Date: 2016-08-30 22:20+0200\n" "PO-Revision-Date: 2012-07-28 21:53+0200\n" "Last-Translator: Michał Kułach <michal.kulach@gmail.com>\n" "Language-Team: Polish <debian-l10n-polish@lists.debian.org>\n" @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: apt 1.0.5\n" "Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n" -"POT-Creation-Date: 2016-08-24 10:13+0200\n" +"POT-Creation-Date: 2016-08-30 22:20+0200\n" "PO-Revision-Date: 2012-06-29 15:45+0100\n" "Last-Translator: Miguel Figueiredo <elmig@debianpt.org>\n" "Language-Team: Portuguese <traduz@debianpt.org>\n" diff --git a/po/pt_BR.po b/po/pt_BR.po index 64784d6b7..b736797a7 100644 --- a/po/pt_BR.po +++ b/po/pt_BR.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: apt 1.0.5\n" "Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n" -"POT-Creation-Date: 2016-08-24 10:13+0200\n" +"POT-Creation-Date: 2016-08-30 22:20+0200\n" "PO-Revision-Date: 2008-11-17 02:33-0200\n" "Last-Translator: Felipe Augusto van de Wiel (faw) <faw@debian.org>\n" "Language-Team: Brazilian Portuguese <debian-l10n-portuguese@lists.debian." @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: apt 1.0.5\n" "Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n" -"POT-Creation-Date: 2016-08-24 10:13+0200\n" +"POT-Creation-Date: 2016-08-30 22:20+0200\n" "PO-Revision-Date: 2008-11-15 02:21+0200\n" "Last-Translator: Eddy Petrișor <eddy.petrisor@gmail.com>\n" "Language-Team: Romanian <debian-l10n-romanian@lists.debian.org>\n" @@ -12,7 +12,7 @@ msgid "" msgstr "" "Project-Id-Version: apt 1.2.12\n" "Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n" -"POT-Creation-Date: 2016-08-24 10:13+0200\n" +"POT-Creation-Date: 2016-08-30 22:20+0200\n" "PO-Revision-Date: 2016-05-19 20:50+0300\n" "Last-Translator: Yuri Kozlov <yuray@komyakino.ru>\n" "Language-Team: Russian <debian-l10n-russian@lists.debian.org>\n" @@ -10,7 +10,7 @@ msgid "" msgstr "" "Project-Id-Version: apt 1.0.5\n" "Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n" -"POT-Creation-Date: 2016-08-24 10:13+0200\n" +"POT-Creation-Date: 2016-08-30 22:20+0200\n" "PO-Revision-Date: 2012-06-28 20:49+0100\n" "Last-Translator: Ivan Masár <helix84@centrum.sk>\n" "Language-Team: Slovak <sk-i18n@lists.linux.sk>\n" @@ -4,7 +4,7 @@ msgid "" msgstr "" "Project-Id-Version: apt 0.5.5\n" "Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n" -"POT-Creation-Date: 2016-08-24 10:13+0200\n" +"POT-Creation-Date: 2016-08-30 22:20+0200\n" "PO-Revision-Date: 2012-06-27 21:29+0000\n" "Last-Translator: Andrej Znidarsic <andrej.znidarsic@gmail.com>\n" "Language-Team: Slovenian <sl@li.org>\n" @@ -10,7 +10,7 @@ msgid "" msgstr "" "Project-Id-Version: apt\n" "Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n" -"POT-Creation-Date: 2016-08-24 10:13+0200\n" +"POT-Creation-Date: 2016-08-30 22:20+0200\n" "PO-Revision-Date: 2015-08-19 21:33+0200\n" "Last-Translator: Anders Jonsson <anders.jonsson@norsjovallen.se>\n" "Language-Team: Swedish <debian-l10n-swedish@debian.org>\n" @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: apt 1.0.5\n" "Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n" -"POT-Creation-Date: 2016-08-24 10:13+0200\n" +"POT-Creation-Date: 2016-08-30 22:20+0200\n" "PO-Revision-Date: 2014-12-12 13:00+0700\n" "Last-Translator: Theppitak Karoonboonyanan <thep@debian.org>\n" "Language-Team: Thai <thai-l10n@googlegroups.com>\n" @@ -10,7 +10,7 @@ msgid "" msgstr "" "Project-Id-Version: apt 1.0.5\n" "Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n" -"POT-Creation-Date: 2016-08-24 10:13+0200\n" +"POT-Creation-Date: 2016-08-30 22:20+0200\n" "PO-Revision-Date: 2007-03-29 21:36+0800\n" "Last-Translator: Eric Pareja <xenos@upm.edu.ph>\n" "Language-Team: Tagalog <debian-tl@banwa.upm.edu.ph>\n" @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: apt 1.0.5\n" "Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n" -"POT-Creation-Date: 2016-08-24 10:13+0200\n" +"POT-Creation-Date: 2016-08-30 22:20+0200\n" "PO-Revision-Date: 2016-07-21 18:43+0300\n" "Last-Translator: Mert Dirik <mertdirik@gmail.com>\n" "Language-Team: Debian l10n Turkish <debian-l10n-turkish@lists.debian.org>\n" @@ -12,7 +12,7 @@ msgid "" msgstr "" "Project-Id-Version: apt 1.0.5\n" "Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n" -"POT-Creation-Date: 2016-08-24 10:13+0200\n" +"POT-Creation-Date: 2016-08-30 22:20+0200\n" "PO-Revision-Date: 2012-09-25 20:19+0300\n" "Last-Translator: A. Bondarenko <artem.brz@gmail.com>\n" "Language-Team: Українська <uk@li.org>\n" @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: apt 1.0.8\n" "Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n" -"POT-Creation-Date: 2016-08-24 10:13+0200\n" +"POT-Creation-Date: 2016-08-30 22:20+0200\n" "PO-Revision-Date: 2014-09-12 13:48+0700\n" "Last-Translator: Trần Ngọc Quân <vnwildman@gmail.com>\n" "Language-Team: Vietnamese <translation-team-vi@lists.sourceforge.net>\n" diff --git a/po/zh_CN.po b/po/zh_CN.po index 8456bc89e..54cc25854 100644 --- a/po/zh_CN.po +++ b/po/zh_CN.po @@ -10,8 +10,8 @@ msgid "" msgstr "" "Project-Id-Version: apt 1.2.x\n" "Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n" -"POT-Creation-Date: 2016-08-24 10:13+0200\n" -"PO-Revision-Date: 2016-06-27 08:00+0000\n" +"POT-Creation-Date: 2016-08-30 22:20+0200\n" +"PO-Revision-Date: 2016-08-20 13:00+0000\n" "Last-Translator: Zhou Mo <cdluminate@gmail.com>\n" "Language-Team: Chinese (simplified) <i18n-zh@googlegroups.com>\n" "Language: zh_CN\n" @@ -361,12 +361,12 @@ msgstr "%s=%s 的 Changelog 不可用" #: apt-pkg/acquire-worker.cc #, c-format msgid "The method '%s' is explicitly disabled via configuration." -msgstr "" +msgstr "方法‘%s’已经被显式设置为禁用。" #: apt-pkg/acquire-worker.cc methods/connect.cc #, c-format msgid "If you meant to use Tor remember to use %s instead of %s." -msgstr "" +msgstr "如果您需要使用Tor,请确认使用%s而不是%s。" #: apt-pkg/acquire-worker.cc #, c-format @@ -1223,43 +1223,39 @@ msgstr "无法写入临时状态文件 %s" #: apt-pkg/edsp.cc msgid "Send scenario to solver" -msgstr "向solver发送情景" +msgstr "向依赖解决器发送情景" #: apt-pkg/edsp.cc msgid "Send request to solver" -msgstr "向solver发送请求" +msgstr "向依赖解决器发送请求" #: apt-pkg/edsp.cc msgid "Prepare for receiving solution" -msgstr "准备接收解决方案" +msgstr "准备接收依赖解决方案" #: apt-pkg/edsp.cc msgid "External solver failed without a proper error message" -msgstr "外部solver出错,错误信息不恰当" +msgstr "外部依赖解决器出错,错误信息不恰当" #: apt-pkg/edsp.cc msgid "Execute external solver" -msgstr "执行外部solver" +msgstr "执行外部依赖解决器" #: apt-pkg/edsp.cc -#, fuzzy msgid "Execute external planner" -msgstr "执行外部solver" +msgstr "执行外部安装顺序规划器" #: apt-pkg/edsp.cc -#, fuzzy msgid "Send request to planner" -msgstr "向solver发送请求" +msgstr "向安装顺序规划器发送请求" #: apt-pkg/edsp.cc -#, fuzzy msgid "Send scenario to planner" -msgstr "向solver发送情景" +msgstr "向安装顺序规划器发送情景" #: apt-pkg/edsp.cc -#, fuzzy msgid "External planner failed without a proper error message" -msgstr "外部solver出错,错误信息不恰当" +msgstr "外部安装顺序规划器出错,错误信息不恰当" #: apt-pkg/indexcopy.cc #, c-format @@ -2805,7 +2801,6 @@ msgid "detect proxy using apt.conf" msgstr "用 apt.conf 检测代理设置" #: cmdline/apt-internal-planner.cc -#, fuzzy msgid "" "Usage: apt-internal-planner\n" "\n" @@ -2813,10 +2808,10 @@ msgid "" "installation planner for the APT family like an external one,\n" "for debugging or the like.\n" msgstr "" -"用法: apt-internal-solver\n" +"用法: apt-internal-planner\n" "\n" -"apt-internal-solver 可以像外部解析器那样使用当前的APT家族内部解析器,\n" -"以便调试等用途。\n" +"apt-internal-planner 是一个可以像外部规划器那样使用当前的APT家族内部\n" +"安装顺序规划器的接口,以便调试等用途。\n" #: cmdline/apt-internal-solver.cc msgid "" @@ -2828,8 +2823,8 @@ msgid "" msgstr "" "用法: apt-internal-solver\n" "\n" -"apt-internal-solver 可以像外部解析器那样使用当前的APT家族内部解析器,\n" -"以便调试等用途。\n" +"apt-internal-solver 是一个可以像外部解析器那样使用当前的APT家族内部\n" +"依赖解析器的接口,以便调试等用途。\n" #: cmdline/apt-mark.cc #, c-format @@ -3359,7 +3354,7 @@ msgstr "无法找到文件" #: methods/connect.cc #, c-format msgid "Direct connection to %s domains is blocked by default." -msgstr "" +msgstr "通向 %s 域名的直接连接被设为默认阻止。" #: methods/connect.cc methods/http.cc #, c-format diff --git a/po/zh_TW.po b/po/zh_TW.po index 5d5410f27..63f09de2f 100644 --- a/po/zh_TW.po +++ b/po/zh_TW.po @@ -10,7 +10,7 @@ msgid "" msgstr "" "Project-Id-Version: apt 1.2.X\n" "Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n" -"POT-Creation-Date: 2016-08-24 10:13+0200\n" +"POT-Creation-Date: 2016-08-30 22:20+0200\n" "PO-Revision-Date: 2009-01-28 10:41+0800\n" "Last-Translator: Tetralet <tetralet@gmail.com>\n" "Language-Team: Debian-user in Chinese [Big5] <debian-chinese-big5@lists." diff --git a/prepare-release b/prepare-release index f740f2152..0004de310 100755 --- a/prepare-release +++ b/prepare-release @@ -178,7 +178,7 @@ elif [ "$1" = 'buildlog' ]; then shift done elif [ "$1" = 'travis-ci' ]; then - apt-get install -qy --no-install-recommends dctrl-tools equivs gdebi-core + apt-get install -qy --no-install-recommends dctrl-tools equivs gdebi-core moreutils test_deb_control > test-control equivs-build test-control diff --git a/shippable.yml b/shippable.yml new file mode 100644 index 000000000..24b2545f7 --- /dev/null +++ b/shippable.yml @@ -0,0 +1,15 @@ +language: none + +build: + pre_ci_boot: + image_name: ubuntu + image_tag: xenial + pull: true + ci: + - apt-get install -qq build-essential + - ./prepare-release travis-ci + - mkdir build + - ( cd build && cmake .. ) + - make -C build -j 4 + - CTEST_OUTPUT_ON_FAILURE=1 make -C build test + - ./test/integration/run-tests -q diff --git a/test/integration/framework b/test/integration/framework index 1e356ffaf..067cc6e8a 100644 --- a/test/integration/framework +++ b/test/integration/framework @@ -5,6 +5,8 @@ EXIT_CODE=0 while [ -n "$1" ]; do if [ "$1" = "-q" ]; then export MSGLEVEL=2 + elif [ "$1" = "-qq" ]; then + export MSGLEVEL=1 elif [ "$1" = "-v" ]; then export MSGLEVEL=4 elif [ "$1" = '--color=no' ]; then @@ -31,7 +33,6 @@ if [ "${MSGCOLOR:-YES}" = 'YES' ]; then fi fi - if [ "$MSGCOLOR" != 'NO' ]; then CERROR="\033[1;31m" # red CWARNING="\033[1;33m" # yellow @@ -143,6 +144,9 @@ if [ $MSGLEVEL -le 4 ]; then msgdebug() { true; } msgndebug() { true; } fi +if [ $MSGLEVEL -le 1 ]; then + msgpass() { true; } +fi msgdone() { if [ "$1" = "debug" -a $MSGLEVEL -le 4 ] || [ "$1" = "info" -a $MSGLEVEL -le 3 ] || @@ -196,6 +200,9 @@ aptinternalplanner() { runapt "${APTINTERNALPLANNER}" "$@"; } dpkg() { "${TMPWORKINGDIRECTORY}/rootdir/usr/bin/dpkg" "$@" } +dpkg_version() { + command perl -MDpkg -E 'say $Dpkg::PROGVERSION' +} dpkgcheckbuilddeps() { command dpkg-checkbuilddeps --admindir="${TMPWORKINGDIRECTORY}/rootdir/var/lib/dpkg" "$@" } @@ -276,8 +283,13 @@ find_project_binary_dir() { fi } setupenvironment() { + # Next check needs a gnu stat, let's figure that out early. + stat=stat + if command -v gnustat >/dev/null 2>&1; then + stat=gnustat + fi # privilege dropping and testing doesn't work if /tmp isn't world-writeable (as e.g. with libpam-tmpdir) - if [ -n "$TMPDIR" ] && [ "$(id -u)" = '0' ] && [ "$(stat --format '%a' "$TMPDIR")" != '1777' ]; then + if [ -n "$TMPDIR" ] && [ "$(id -u)" = '0' ] && [ "$($stat --format '%a' "$TMPDIR")" != '1777' ]; then unset TMPDIR fi TMPWORKINGDIRECTORY="$(mktemp -d)" @@ -290,12 +302,24 @@ setupenvironment() { fi msgninfo "Preparing environment for ${0##*/} in ${TMPWORKINGDIRECTORY}…" + # Setup coreutils on BSD systems + mkdir "${TMPWORKINGDIRECTORY}/bin" + for prefix in gnu g; do + for command in stat touch sed cp tr sha1sum sha256sum md5sum sha512sum grep date wc chmod head readlink tar expr base64; do + if command -v $prefix$command 2>/dev/null >/dev/null; then + [ -e "${TMPWORKINGDIRECTORY}/bin/$command" ] || ln -sf $(command -v $prefix$command) "${TMPWORKINGDIRECTORY}/bin/$command" + fi + done + done + export PATH="${TMPWORKINGDIRECTORY}/bin/:$PATH" + + mkdir -m 700 "${TMPWORKINGDIRECTORY}/downloaded" if [ "$(id -u)" = '0' ]; then # relax permissions so that running as root with user switching works umask 022 chmod 711 "$TMPWORKINGDIRECTORY" - chown _apt:root "${TMPWORKINGDIRECTORY}/downloaded" + chown _apt:$(id -gn) "${TMPWORKINGDIRECTORY}/downloaded" fi TESTDIRECTORY="$(readlink -f "$(dirname $0)")" @@ -352,6 +376,11 @@ setupenvironment() { ln -s "${TMPWORKINGDIRECTORY}/keys/joesixpack.pub" rootdir/etc/apt/trusted.gpg.d/joesixpack.gpg echo "Dir \"${TMPWORKINGDIRECTORY}/rootdir\";" >> aptconfig.conf + echo "Dir::Etc \"etc\";" >> aptconfig.conf + echo "Dir::State \"var/lib/apt\";" >> aptconfig.conf + echo "Dir::Cache \"var/cache/apt\";" >> aptconfig.conf + echo "Dir::Etc \"etc/apt\";" >> aptconfig.conf + echo "Dir::Log \"var/log/apt\";" >> aptconfig.conf echo "APT::Get::Show-User-Simulation-Note \"false\";" >> aptconfig.conf echo "Dir::Bin::Methods \"${TMPWORKINGDIRECTORY}/rootdir/usr/lib/apt/methods\";" >> aptconfig.conf # either store apt-key were we can access it, even if we run it as a different user @@ -386,11 +415,13 @@ EOF cp "${TMPWORKINGDIRECTORY}/rootdir/usr/bin/dpkg" "${TMPWORKINGDIRECTORY}/rootdir/usr/bin/gdb-dpkg" cat >> "${TMPWORKINGDIRECTORY}/rootdir/usr/bin/dpkg" <<EOF exec fakeroot '${DPKG:-dpkg}' --root='${TMPWORKINGDIRECTORY}/rootdir' \\ + --admindir="${TMPWORKINGDIRECTORY}/rootdir/var/lib/dpkg" \\ --log='${TMPWORKINGDIRECTORY}/rootdir/var/log/dpkg.log' \\ --force-not-root --force-bad-path "\$@" EOF cat >> "${TMPWORKINGDIRECTORY}/rootdir/usr/bin/gdb-dpkg" <<EOF exec fakeroot gdb --quiet -ex run '${DPKG:-dpkg}' --args '${DPKG:-dpkg}' --root='${TMPWORKINGDIRECTORY}/rootdir' \\ + --admindir="${TMPWORKINGDIRECTORY}/rootdir/var/lib/dpkg" \\ --log='${TMPWORKINGDIRECTORY}/rootdir/var/log/dpkg.log' \\ --force-not-root --force-bad-path "\$@" EOF @@ -410,13 +441,15 @@ EOF # in testcases, it can appear as if localhost has a rotation setup, # hide this as we can't really deal with it properly echo 'Acquire::Failure::ShowIP "false";' + # randomess and tests don't play well together + echo 'Acquire::IndexTargets::Randomized "false";' # fakeroot can't fake everything, so disabled in production but good for tests echo 'APT::Sandbox::Verify "true";' } >> aptconfig.conf cp "${TESTDIRECTORY}/apt.pem" "${TMPWORKINGDIRECTORY}/rootdir/etc/webserver.pem" if [ "$(id -u)" = '0' ]; then - chown _apt:root "${TMPWORKINGDIRECTORY}/rootdir/etc/webserver.pem" + chown _apt:$(id -gn) "${TMPWORKINGDIRECTORY}/rootdir/etc/webserver.pem" fi echo "Acquire::https::CaInfo \"${TMPWORKINGDIRECTORY}/rootdir/etc/webserver.pem\";" > rootdir/etc/apt/apt.conf.d/99https echo "Apt::Cmd::Disable-Script-Warning \"1\";" > rootdir/etc/apt/apt.conf.d/apt-binary @@ -428,16 +461,13 @@ EOF # create some files in /tmp and look at user/group to get what this means TEST_DEFAULT_USER="$(id -un)" - if [ "$(uname)" = 'GNU/kFreeBSD' ]; then - TEST_DEFAULT_GROUP='root' - else - TEST_DEFAULT_GROUP="$(id -gn)" - fi + touch "${TMPWORKINGDIRECTORY}/test-file" + TEST_DEFAULT_GROUP=$(stat --format '%G' "${TMPWORKINGDIRECTORY}/test-file") # cleanup the environment a bit # prefer our apt binaries over the system apt binaries export PATH="${BUILDDIRECTORY}:${PATH}:/usr/local/sbin:/usr/sbin:/sbin" - export LC_ALL=C.UTF-8 + export LC_ALL=C unset LANGUAGE APT_CONFIG unset GREP_OPTIONS DEB_BUILD_PROFILES unset http_proxy HTTP_PROXY https_proxy HTTPS_PROXY no_proxy @@ -500,7 +530,15 @@ configdpkg() { fi fi rm -f rootdir/etc/apt/apt.conf.d/00foreigndpkg - if command dpkg --assert-multi-arch >/dev/null 2>&1 ; then + # if multi-arch make sure dpkg can detect itself as capable of it + if getarchitectures | grep -E -q '[^ ]+ [^ ]+'; then + if [ "0" = "$(dpkg -l dpkg 2> /dev/null | grep '^i' | wc -l)" ]; then + # dpkg doesn't really check the version as long as it is fully installed, + # but just to be sure we choose one above the required version + insertinstalledpackage 'dpkg' "all" '1.16.2+fake' + fi + fi + if dpkg --assert-multi-arch >/dev/null 2>&1 ; then local ARCHS="$(getarchitectures)" local DPKGARCH="$(dpkg --print-architecture)" # this ensures that even if multi-arch isn't active in the view @@ -515,14 +553,6 @@ configdpkg() { fi fi done - # if multi-arch make sure dpkg can detect itself as capable of it - if echo "$ARCHS" | grep -E -q '[^ ]+ [^ ]+'; then - if [ "0" = "$(dpkg -l dpkg 2> /dev/null | grep '^i' | wc -l)" ]; then - # dpkg doesn't really check the version as long as it is fully installed, - # but just to be sure we choose one above the required version - insertinstalledpackage 'dpkg' "all" '1.16.2+fake' - fi - fi fi } @@ -568,7 +598,11 @@ int execvp(const char *file, char *const argv[]) { return func_execvp(newfile, argv); } EOF - testempty --nomsg gcc -Wall -Wextra -fPIC -shared -o noopchroot.so noopchroot.c -ldl + if cc -ldl 2>&1 | grep -q dl; then + testempty --nomsg cc -Wall -Wextra -fPIC -shared -o noopchroot.so noopchroot.c + else + testempty --nomsg cc -Wall -Wextra -fPIC -shared -o noopchroot.so noopchroot.c -ldl + fi } configcompression() { if [ "$1" = 'ALL' ]; then @@ -626,10 +660,10 @@ _setupsimplenativepackage() { local VERSION="$3" local RELEASE="${4:-unstable}" local DEPENDENCIES="$5" - local DESCRIPTION="${6:-"an autogenerated dummy ${NAME}=${VERSION}/${RELEASE} + local DESCRIPTION="${6:-an autogenerated dummy ${NAME}=${VERSION}/${RELEASE} If you find such a package installed on your system, something went horribly wrong! They are autogenerated - und used only by testcases and serve no other purpose…"}" + und used only by testcases and serve no other purpose…}" local SECTION="${7:-others}" local PRIORITY="${8:-optional}" @@ -662,7 +696,7 @@ Standards-Version: 3.9.3" if [ "$SECTION" != '<none>' ]; then echo "Section: $SECTION" fi - local BUILDDEPS="$(echo "$DEPENDENCIES" | grep '^Build-')" + local BUILDDEPS="$(printf "%b\n" "$DEPENDENCIES" | grep '^Build-')" test -z "$BUILDDEPS" || echo "$BUILDDEPS" echo " Package: $NAME" @@ -672,21 +706,33 @@ Package: $NAME" else echo "Architecture: any" fi - local DEPS="$(echo "$DEPENDENCIES" | grep -v '^Build-')" + local DEPS="$(printf "%b\n" "$DEPENDENCIES" | grep -v '^Build-')" test -z "$DEPS" || echo "$DEPS" - echo "Description: $DESCRIPTION" + printf "%b\n" "Description: $DESCRIPTION" } > "${BUILDDIR}/debian/control" echo '3.0 (native)' > "${BUILDDIR}/debian/source/format" } +make_tiny_rules() { + local OUT="$1" + if command -v gmake >/dev/null 2>&1; then + [ -e ${TMPWORKINGDIRECTORY}/bin/make ] || ln -s $(command -v gmake) ${TMPWORKINGDIRECTORY}/bin/make + echo "#!${TMPWORKINGDIRECTORY}/bin/make -f" > "$OUT" + else + echo '#!/usr/bin/make -f' > "$OUT" + fi + echo '%:' >> "$OUT" + echo ' dh $@' >> "$OUT" +} + setupsimplenativepackage() { _setupsimplenativepackage "$@" local NAME="$1" local VERSION="$3" local BUILDDIR="${TMPWORKINGDIRECTORY}/incoming/${NAME}-${VERSION}" test -e "${BUILDDIR}/debian/compat" || echo '7' > "${BUILDDIR}/debian/compat" - test -e "${BUILDDIR}/debian/rules" || cp /usr/share/doc/debhelper/examples/rules.tiny "${BUILDDIR}/debian/rules" + test -e "${BUILDDIR}/debian/rules" || make_tiny_rules "${BUILDDIR}/debian/rules" } buildsimplenativepackage() { @@ -767,7 +813,7 @@ buildpackage() { if [ "$ARCH" = "all" ]; then ARCH="$(dpkg-architecture -qDEB_HOST_ARCH 2> /dev/null)" fi - testsuccess --nomsg dpkg-buildpackage -uc -us -a$ARCH + testsuccess --nomsg dpkg-buildpackage -uc -us -a$ARCH -d cp "${TMPWORKINGDIRECTORY}/rootdir/tmp/testsuccess.output" "$BUILDLOG" local PKGS="$(grep '^dpkg-deb: building package' "$BUILDLOG" | cut -d'/' -f 2 | sed -e "s#'\.##")" local SRCS="$(grep '^dpkg-source: info: building' "$BUILDLOG" | grep -o '[a-z0-9._+~-]*$')" @@ -844,10 +890,10 @@ insertpackage() { local VERSION="$4" local DEPENDENCIES="$5" local PRIORITY="${6:-optional}" - local DESCRIPTION="${7:-"an autogenerated dummy ${NAME}=${VERSION}/${RELEASES} + local DESCRIPTION="${7:-an autogenerated dummy ${NAME}=${VERSION}/${RELEASES} If you find such a package installed on your system, something went horribly wrong! They are autogenerated - und used only by testcases and serve no other purpose…"}" + und used only by testcases and serve no other purpose…}" local ARCHS="" for RELEASE in $(printf '%s' "$RELEASES" | tr ',' '\n'); do if [ "$RELEASE" = 'installed' ]; then @@ -872,9 +918,10 @@ Maintainer: Joe Sixpack <joe@example.org>" test "$arch" = 'none' || echo "Architecture: $arch" echo "Version: $VERSION Filename: pool/main/${NAME}/${NAME}_${VERSION}_${arch}.deb" - test -z "$DEPENDENCIES" || echo "$DEPENDENCIES" + test -z "$DEPENDENCIES" || printf "%b\n" "$DEPENDENCIES" echo "Description: $(printf '%s' "$DESCRIPTION" | head -n 1)" echo "Description-md5: $(printf '%s' "$DESCRIPTION" | md5sum | cut -d' ' -f 1)" + echo "SHA256: 0000000000000000000000000000000000000000000000000000000000000000" echo } >> "${PPATH}/Packages" done @@ -907,7 +954,7 @@ Binary: $BINARY Version: $VERSION Maintainer: Joe Sixpack <joe@example.org> Architecture: $ARCH" >> $FILE - test -z "$DEPENDENCIES" || echo "$DEPENDENCIES" >> "$FILE" + test -z "$DEPENDENCIES" || printf "%b\n" "$DEPENDENCIES" >> "$FILE" echo "Files: $(echo -n "$DSCFILE" | md5sum | cut -d' ' -f 1) $(echo -n "$DSCFILE" | wc -c) "$DSCFILE" $(echo -n "$TARFILE" | md5sum | cut -d' ' -f 1) $(echo -n "$TARFILE" | wc -c) "$TARFILE" @@ -925,10 +972,10 @@ insertinstalledpackage() { local DEPENDENCIES="$4" local PRIORITY="${5:-optional}" local STATUS="${6:-install ok installed}" - local DESCRIPTION="${7:-"an autogenerated dummy ${NAME}=${VERSION}/installed + local DESCRIPTION="${7:-an autogenerated dummy ${NAME}=${VERSION}/installed If you find such a package installed on your system, something went horribly wrong! They are autogenerated - und used only by testcases and serve no other purpose…"}" + und used only by testcases and serve no other purpose…}" local FILE='rootdir/var/lib/dpkg/status' local INFO='rootdir/var/lib/dpkg/info' @@ -941,8 +988,8 @@ Installed-Size: 42 Maintainer: Joe Sixpack <joe@example.org> Version: $VERSION" >> "$FILE" test "$arch" = 'none' || echo "Architecture: $arch" >> "$FILE" - test -z "$DEPENDENCIES" || echo "$DEPENDENCIES" >> "$FILE" - echo "Description: $DESCRIPTION" >> "$FILE" + test -z "$DEPENDENCIES" || printf "%b\n" "$DEPENDENCIES" >> "$FILE" + printf "%b\n" "Description: $DESCRIPTION" >> "$FILE" echo >> "$FILE" if [ "$(dpkg-query -W --showformat='${Multi-Arch}')" = 'same' ]; then echo -n > "${INFO}/${NAME}:${arch}.list" @@ -1275,7 +1322,12 @@ changetowebserver() { } changetohttpswebserver() { - if ! command -v stunnel4 >/dev/null 2>&1; then + local stunnel4 + if command -v stunnel4 >/dev/null 2>&1; then + stunnel4=stunnel4 + elif command -v stunnel >/dev/null 2>&1; then + stunnel4=stunnel + else msgdie 'You need to install stunnel4 for https testcases' fi if [ ! -e "${TMPWORKINGDIRECTORY}/aptarchive/aptwebserver.pid" ]; then @@ -1289,14 +1341,14 @@ output = /dev/null accept = 0 connect = $APTHTTPPORT " > "${TMPWORKINGDIRECTORY}/stunnel.conf" - stunnel4 "${TMPWORKINGDIRECTORY}/stunnel.conf" + $stunnel4 "${TMPWORKINGDIRECTORY}/stunnel.conf" waitforpidfile "${TMPWORKINGDIRECTORY}/aptarchive/stunnel.pid" local PID="$(cat "${TMPWORKINGDIRECTORY}/aptarchive/stunnel.pid")" if [ -z "$PID" ]; then - msgdie 'Could not fork stunnel4 successfully' + msgdie 'Could not fork $stunnel4 successfully' fi addtrap 'prefix' "kill ${PID};" - APTHTTPSPORT="$(lsof -i -n | awk "/^stunnel4 / && \$2 == \"${PID}\" {print \$9; exit; }" | cut -d':' -f 2)" + APTHTTPSPORT="$(lsof -i -n | awk "/^$stunnel4 / && \$2 == \"${PID}\" {print \$9; exit; }" | cut -d':' -f 2)" webserverconfig 'aptwebserver::port::https' "$APTHTTPSPORT" "https://localhost:${APTHTTPSPORT}" rewritesourceslist "https://localhost:${APTHTTPSPORT}/" } @@ -1916,7 +1968,7 @@ mkdir() { command mkdir -m 700 -p "${TMPWORKINGDIRECTORY}/rootdir/var/lib/apt/lists/partial" touch "${TMPWORKINGDIRECTORY}/rootdir/var/lib/apt/lists/lock" if [ "$(id -u)" = '0' ]; then - chown _apt:root "${TMPWORKINGDIRECTORY}/rootdir/var/lib/apt/lists/partial" + chown _apt:$(id -gn) "${TMPWORKINGDIRECTORY}/rootdir/var/lib/apt/lists/partial" fi else command mkdir "$@" @@ -1988,7 +2040,7 @@ testaptautotestnodpkgwarning() { if expr match "$2" '^-dy\?' >/dev/null 2>&1; then return; fi # download-only mode shift done - testfailure grep '^dpkg: warning:.*ignor.*' "${TMPWORKINGDIRECTORY}/rootdir/tmp-before/${TESTCALL}.output" + testfailure grep '^dpkg: warning:.*\(ignor\|unknown\).*' "${TMPWORKINGDIRECTORY}/rootdir/tmp-before/${TESTCALL}.output" } aptautotest_aptget_install() { testaptautotestnodpkgwarning "$@"; } diff --git a/test/integration/run-tests b/test/integration/run-tests index 78f24fbaf..7c0b74ce2 100755 --- a/test/integration/run-tests +++ b/test/integration/run-tests @@ -5,6 +5,8 @@ TESTTORUN='' while [ -n "$1" ]; do if [ "$1" = "-q" ]; then export MSGLEVEL=2 + elif [ "$1" = "-qq" ]; then + export MSGLEVEL=1 elif [ "$1" = "-v" ]; then export MSGLEVEL=4 elif [ "$1" = '--color=no' ]; then @@ -50,7 +52,9 @@ if [ -n "$TESTTORUN" ]; then CURRENTTRAP="rm -f \"$OUTPUT\"; $CURRENTTRAP" trap "$CURRENTTRAP" 0 HUP INT QUIT ILL ABRT FPE SEGV PIPE TERM { - if [ "$MSGLEVEL" -le 2 ]; then + if [ "$MSGLEVEL" -le 1 ]; then + printf "${TESTTORUN##*/}" + elif [ "$MSGLEVEL" -le 2 ]; then printf "${CTEST}Testcase ${CHIGH}${TESTTORUN##*/}${CRESET}: " else printf "${CTEST}Run Testcase ${CHIGH}${TESTTORUN##*/}${CRESET}\n" @@ -58,12 +62,20 @@ if [ -n "$TESTTORUN" ]; then if ! "$TESTTORUN"; then FAIL='yes' if [ "$MSGLEVEL" -le 2 ]; then + printf >&2 "\n${CHIGH}Running ${TESTTORUN##*/} -> FAILED${CRESET}\n" + elif [ "$MSGLEVEL" -le 2 ]; then printf >&2 "\n${CHIGH}Running ${TESTTORUN##*/} -> FAILED${CRESET}" else echo >&2 "${CHIGH}Running ${TESTTORUN##*/} -> FAILED${CRESET}" fi + else + if [ "$MSGLEVEL" -le 1 ]; then + printf " " + fi fi - if [ "$MSGLEVEL" -le 2 ]; then + if [ "$MSGLEVEL" -le 1 ]; then + : + elif [ "$MSGLEVEL" -le 2 ]; then echo fi } >"$OUTPUT" 2>&1 @@ -89,11 +101,20 @@ if [ -n "$APT_TEST_JOBS" ]; then if [ "$MSGCOLOR" != 'NO' ]; then export MSGCOLOR='ALWAYS' fi - exec parallel -j "$APT_TEST_JOBS" "./$(basename "$0")" -- $(echo "$TESTLIST") + parallel=parallel + if command -v moreutils-parallel >/dev/null 2>&1; then + parallel=moreutils-parallel + fi + exec $parallel -j "$APT_TEST_JOBS" "./$(basename "$0")" -- $(echo "$TESTLIST") fi TOTAL="$(echo "$TESTLIST" | wc -l)" +if [ "$MSGLEVEL" -le 1 ]; then + printf "${CTEST}Running testcases${CRESET}: " +fi for testcase in $TESTLIST; do - if [ "$MSGLEVEL" -le 2 ]; then + if [ "$MSGLEVEL" -le 1 ]; then + printf "${testcase##*/}" + elif [ "$MSGLEVEL" -le 2 ]; then printf "($(($ALL+1))/${TOTAL}) ${CTEST}Testcase ${CHIGH}${testcase##*/}${CRESET}: " else printf "${CTEST}Run Testcase ($(($ALL+1))/${TOTAL}) ${CHIGH}${testcase##*/}${CRESET}\n" @@ -101,16 +122,23 @@ for testcase in $TESTLIST; do if ! ${testcase}; then FAIL=$((FAIL+1)) FAILED_TESTS="$FAILED_TESTS ${testcase##*/}" - if [ "$MSGLEVEL" -le 2 ]; then + if [ "$MSGLEVEL" -le 1 ]; then + printf >&2 "\n${CHIGH}Running ${testcase##*/} -> FAILED${CRESET}\n" + elif [ "$MSGLEVEL" -le 2 ]; then printf >&2 "\n${CHIGH}Running ${testcase##*/} -> FAILED${CRESET}" else echo >&2 "${CHIGH}Running ${testcase##*/} -> FAILED${CRESET}" fi else PASS=$((PASS+1)) + if [ "$MSGLEVEL" -le 1 ]; then + printf " " + fi fi ALL=$((ALL+1)) - if [ "$MSGLEVEL" -le 2 ]; then + if [ "$MSGLEVEL" -le 1 ]; then + : + elif [ "$MSGLEVEL" -le 2 ]; then echo fi done diff --git a/test/integration/test-apt-config b/test/integration/test-apt-config index abae83ee6..f2068b789 100755 --- a/test/integration/test-apt-config +++ b/test/integration/test-apt-config @@ -24,7 +24,7 @@ testsuccessequal "ARCH='amd64'" aptconfig shell ARCH APT::Architecture ROOTDIR="$(readlink -f rootdir)" testsuccessequal "CONFIG='apt.conf'" aptconfig shell CONFIG Dir::Etc::main testsuccessequal "CONFIG='${ROOTDIR}/etc/apt/apt.conf'" aptconfig shell CONFIG Dir::Etc::main/f -testsuccessequal "CONFIG='etc/apt/'" aptconfig shell CONFIG Dir::Etc +testsuccessequal "CONFIG='etc/apt'" aptconfig shell CONFIG Dir::Etc testsuccessequal "CONFIG='${ROOTDIR}/etc/apt/'" aptconfig shell CONFIG Dir::Etc/ # old style testsuccessequal "CONFIG='${ROOTDIR}/etc/apt/'" aptconfig shell CONFIG Dir::Etc/d diff --git a/test/integration/test-apt-ftparchive-cachedb-lp1274466 b/test/integration/test-apt-ftparchive-cachedb-lp1274466 index c230e47dc..3a5527230 100755 --- a/test/integration/test-apt-ftparchive-cachedb-lp1274466 +++ b/test/integration/test-apt-ftparchive-cachedb-lp1274466 @@ -11,14 +11,19 @@ setupenvironment configarchitecture "i386" confighashes 'MD5' 'SHA1' 'SHA256' 'SHA512' +db_dump=db_dump +if command -v db_dump-5 >/dev/null 2>&1; then + db_dump=db_dump-5 +fi + # gather the db and the deb, ensure mtime is not modfied as its saved in the DB cp -p "$TESTDIR/deb-lp1274466-cachedb.deb" foo_1_i386.deb cp -p "$TESTDIR/cachedb-lp1274466-old-format.db" old-format.db # verify that the format is different testsuccess aptftparchive --db new-format.db packages . -db_dump new-format.db > new-format.dump -db_dump old-format.db > old-format.dump +$db_dump new-format.db > new-format.dump +$db_dump old-format.db > old-format.dump testfailure diff -u old-format.dump new-format.dump # ensure the new format as the sha512 @@ -47,7 +52,7 @@ Description: an autogenerated dummy foo=1/test " aptftparchive --db old-format.db packages . # ensure that the db is updated and contains the new sha512 -db_dump old-format.db > old-format.dump +$db_dump old-format.db > old-format.dump testsuccess grep 7da58ff901a40ecf42a730dc33198b182e9ba9ec98799fc2c2b6fabeeee40cc12a0e7cadb4b66764235c56e1009dbfe8a9a566fb1eedf47a992d1fff2cc3332c old-format.dump diff --git a/test/integration/test-apt-get-autoremove b/test/integration/test-apt-get-autoremove index cfee748af..8af864acb 100755 --- a/test/integration/test-apt-get-autoremove +++ b/test/integration/test-apt-get-autoremove @@ -152,3 +152,6 @@ Remv foo-multi2-1 [1] Remv foo-multi2-2 [1] Remv foo-plus-1 [1] Remv foo-plus-2 [1]' apt autoremove -s + +testdpkgstatus 'pi' '1' 'unrelated' +testsuccess apt purge unrelated -y diff --git a/test/integration/test-apt-get-changelog b/test/integration/test-apt-get-changelog index 0812db500..ee7b3ef97 100755 --- a/test/integration/test-apt-get-changelog +++ b/test/integration/test-apt-get-changelog @@ -122,13 +122,13 @@ testsuccess apt install dpkg -y # at this moment, we still have the Releasefile claim to be origin:ubuntu echo 'Acquire::Changelogs::AlwaysOnline::Origin::Ubuntu "false";' >> rootdir/etc/apt/apt.conf.d/nooriginchangelogs testsuccessequal "'http://localhost:${APTHTTPPORT}/pool/main/d/dpkg/dpkg_42/changelog' dpkg.changelog" apt changelog dpkg --print-uris -testsuccessequal "'gzip:///usr/share/doc/dpkg/changelog.Debian.gz' dpkg.changelog" apt changelog dpkg --print-uris -o Acquire::Changelogs::AlwaysOnline=false +testsuccessequal "'copy://${TMPWORKINGDIRECTORY}/rootdir/usr/share/doc/dpkg/changelog' dpkg.changelog" apt changelog dpkg --print-uris -o Acquire::Changelogs::AlwaysOnline=false testsuccessequal "'http://localhost:${APTHTTPPORT}/pool/main/d/dpkg/dpkg_42/changelog' dpkg.changelog" apt changelog dpkg --print-uris -o Acquire::Changelogs::AlwaysOnline=true testsuccessequal "'http://localhost:${APTHTTPPORT}/pool/main/d/dpkg/dpkg_42/changelog' dpkg.changelog" apt changelog dpkg --print-uris -o Acquire::Changelogs::AlwaysOnline=false -o Acquire::Changelogs::AlwaysOnline::Origin::Ubuntu=true -testsuccessequal "'gzip:///usr/share/doc/dpkg/changelog.Debian.gz' dpkg.changelog" apt changelog dpkg --print-uris -o Acquire::Changelogs::AlwaysOnline=false -o Acquire::Changelogs::AlwaysOnline::Origin::Debian=true +testsuccessequal "'copy://${TMPWORKINGDIRECTORY}/rootdir/usr/share/doc/dpkg/changelog' dpkg.changelog" apt changelog dpkg --print-uris -o Acquire::Changelogs::AlwaysOnline=false -o Acquire::Changelogs::AlwaysOnline::Origin::Debian=true testsuccess apt changelog dpkg -d testfilestats 'dpkg.changelog' '%U:%G:%a' '=' "${TEST_DEFAULT_USER}:${TEST_DEFAULT_GROUP}:644" head -n 3 dpkg.changelog > dpkg.change -testfileequal 'dpkg.change' "$(apthelper cat-file '/usr/share/doc/dpkg/changelog.Debian.gz' | head -n 3)" +testfileequal 'dpkg.change' "$(apthelper cat-file 'rootdir/usr/share/doc/dpkg/changelog' | head -n 3)" rm -f dpkg.change dpkg.changelog diff --git a/test/integration/test-apt-get-install-deb b/test/integration/test-apt-get-install-deb index 5f2877dfd..36e94a2dc 100755 --- a/test/integration/test-apt-get-install-deb +++ b/test/integration/test-apt-get-install-deb @@ -125,8 +125,12 @@ createpkg 'leading-newline' ' createpkg 'trailing-newline' '' ' ' +echo 'Package: /pkg-/ +Pin: release a=experimental +Pin-Priority: 501' > rootdir/etc/apt/preferences.d/pinit + testsuccess aptget install ./incoming/pkg-as-it-should-be_0_all.deb -testsuccess aptget install ./incoming/pkg-leading-newline_0_all.deb +testsuccess aptget install "$(readlink -f ./incoming/pkg-leading-newline_0_all.deb)" testsuccess aptget install ./incoming/pkg-trailing-newline_0_all.deb testempty apt clean @@ -168,3 +172,29 @@ testsuccess apt show --with-source ./Packages pkg-as-it-should-be testequal 'Package: pkg-as-it-should-be' head -n1 rootdir/tmp/testsuccess.output testsuccess apt install -y --with-source ./Packages pkg-as-it-should-be testdpkginstalled 'pkg-as-it-should-be' +rm -f ./Packages + +echo 'dpkg::install::recursive "true"; +dpkg::install::recursive::force "true"; +dpkg::install::recursive::minimum "0";' > rootdir/etc/apt/apt.conf.d/lowerminimum.conf +mv ./incoming/pkg-as-it-should-be_0_all.deb ./incoming/pkg-as-it-should-be_0_all.ddeb +testsuccess aptget install -y ./incoming/pkg-as-it-should-be_0_all.ddeb --reinstall +testfailure grep 'is already the newest version' rootdir/tmp/testsuccess.output +testsuccess apt purge -y pkg-as-it-should-be +testdpkgnotinstalled 'pkg-as-it-should-be' + +mv ./incoming/pkg-as-it-should-be_0_all.ddeb ./incoming/pkg-as-it-should-be_0_all.foobar +echo "Package: pkg-as-it-should-be +Architecture: all +Version: 0 +Installed-Size: 2903 +Filename: incoming/pkg-as-it-should-be_0_all.foobar +Size: $(stat -c %s incoming/pkg-as-it-should-be_0_all.foobar) +SHA256: $(sha256sum incoming/pkg-as-it-should-be_0_all.foobar | cut -d' ' -f 1) +" | gzip > Packages.gz +testsuccess apt install --with-source ./Packages.gz pkg-as-it-should-be -s +testsuccess apt install --with-source ./Packages.gz pkg-as-it-should-be --print-uris +testsuccess apt show --with-source ./Packages.gz pkg-as-it-should-be +testequal 'Package: pkg-as-it-should-be' head -n1 rootdir/tmp/testsuccess.output +testsuccess apt install -y --with-source ./Packages.gz pkg-as-it-should-be +testdpkginstalled 'pkg-as-it-should-be' diff --git a/test/integration/test-apt-key b/test/integration/test-apt-key index 759ce1487..96cfe41fa 100755 --- a/test/integration/test-apt-key +++ b/test/integration/test-apt-key @@ -81,6 +81,20 @@ gpg: unchanged: 1' aptkey --fakeroot update testsuccess --nomsg aptkey --fakeroot del d141dbac8dae testempty aptkey list + if [ "$(id -u)" != '0' ]; then + msgtest 'Test key removal with' 'unreadable key' + cleanplate + cp -a "${KEYDIR}/joesixpack.pub" "${ROOTDIR}/etc/apt/trusted.gpg.d/joesixpack.gpg" + echo 'foobar' > "${ROOTDIR}/etc/apt/trusted.gpg.d/unreadablekey.gpg" + chmod 000 "${ROOTDIR}/etc/apt/trusted.gpg.d/unreadablekey.gpg" + testwarning --nomsg aptkey --fakeroot del d141dbac8dae + testwarning aptkey list + chmod 644 "${ROOTDIR}/etc/apt/trusted.gpg.d/unreadablekey.gpg" + rm -f "${ROOTDIR}/etc/apt/trusted.gpg.d/unreadablekey.gpg" + grep -v '^W: ' "${ROOTDIR}/tmp/testwarning.output" > "${ROOTDIR}/aptkeylist.output" || true + testempty cat "${ROOTDIR}/aptkeylist.output" + fi + msgtest 'Test key removal with' 'single key in real file' cleanplate cp -a "${KEYDIR}/joesixpack.pub" "${ROOTDIR}/etc/apt/trusted.gpg.d/joesixpack.gpg" @@ -202,6 +216,16 @@ gpg: unchanged: 1' aptkey --fakeroot update msgtest 'Test verify a file' 'with all keys' testsuccess --nomsg aptkey --quiet --readonly verify "${SIGNATURE}.gpg" "${SIGNATURE}" + if [ "$(id -u)" != '0' ]; then + msgtest 'Test verify a file' 'with unreadable key' + echo 'foobar' > "${ROOTDIR}/etc/apt/trusted.gpg.d/unreadablekey.gpg" + chmod 000 "${ROOTDIR}/etc/apt/trusted.gpg.d/unreadablekey.gpg" + testwarning --nomsg aptkey --quiet --readonly verify "${SIGNATURE}.gpg" "${SIGNATURE}" + testwarning aptkey list + chmod 644 "${ROOTDIR}/etc/apt/trusted.gpg.d/unreadablekey.gpg" + rm -f "${ROOTDIR}/etc/apt/trusted.gpg.d/unreadablekey.gpg" + fi + msgtest 'Test verify a file' 'with good keyring' testsuccess --nomsg aptkey --quiet --readonly --keyring "${KEYDIR}/testcase-multikey.pub" verify "${SIGNATURE}.gpg" "${SIGNATURE}" diff --git a/test/integration/test-apt-redirect-loop b/test/integration/test-apt-redirect-loop index b54f74276..e1a8aeea0 100755 --- a/test/integration/test-apt-redirect-loop +++ b/test/integration/test-apt-redirect-loop @@ -7,9 +7,6 @@ TESTDIR="$(readlink -f "$(dirname "$0")")" setupenvironment configarchitecture "i386" -insertpackage 'stable' 'apt' 'all' '1' -setupaptarchive --no-update - echo 'alright' > aptarchive/working changetohttpswebserver webserverconfig 'aptwebserver::redirect::replace::/redirectme3/' '/redirectme/' diff --git a/test/integration/test-apt-update-simple b/test/integration/test-apt-update-simple index ca969e61b..ccf719790 100755 --- a/test/integration/test-apt-update-simple +++ b/test/integration/test-apt-update-simple @@ -6,10 +6,28 @@ TESTDIR="$(readlink -f "$(dirname "$0")")" setupenvironment configarchitecture 'amd64' -insertpackage 'unstable' 'unrelated' 'all' '0.5~squeeze1' -insertsource 'unstable' 'unrelated' 'all' '0.5~squeeze1' +insertpackage 'unstable' 'foo' 'all' '1' +insertpackage 'unstable' 'bar' 'amd64' '1' +insertpackage 'unstable' 'bar' 'i386' '1' +insertsource 'unstable' 'foo' 'all' '1' + +sed -e 's#^Description-en:#Description-de:#' \ + aptarchive/dists/unstable/main/i18n/Translation-en > aptarchive/dists/unstable/main/i18n/Translation-de setupaptarchive --no-update changetowebserver -testsuccess aptget update -o Debug::Acquire::Auth=1 +# the framework modifies some configs to ensure testability, +# at the expense of creating an environment which doesn't always +# reflect apts "normal" behavior on a "normal" system +echo 'Acquire::IndexTargets::Randomized "true"; +Acquire::Languages { "environment"; "en"; "de"; }; +' > rootdir/etc/apt/apt.conf.d/restore-simplicity + +testempty aptget indextargets +testsuccess aptget update +testequal 'main/source/Sources +main/binary-amd64/Packages +main/binary-all/Packages +main/i18n/Translation-en +main/i18n/Translation-de' aptget indextargets --format '$(METAKEY)' diff --git a/test/integration/test-authentication-basic b/test/integration/test-authentication-basic index 9a15c7604..3bfd076ce 100755 --- a/test/integration/test-authentication-basic +++ b/test/integration/test-authentication-basic @@ -30,7 +30,7 @@ testauthsuccess() { # lets see if got/retains acceptable permissions if [ -n "$AUTHCONF" ]; then if [ "$(id -u)" = '0' ]; then - testfilestats "$AUTHCONF" '%U:%G:%a' '=' "_apt:root:600" + testfilestats "$AUTHCONF" '%U:%G:%a' '=' "_apt:$(id -gn):600" else testfilestats "$AUTHCONF" '%U:%G:%a' '=' "${TEST_DEFAULT_USER}:${TEST_DEFAULT_GROUP}:600" fi diff --git a/test/integration/test-bug-605394-versioned-or-groups b/test/integration/test-bug-605394-versioned-or-groups index a362463d5..43f35f79b 100755 --- a/test/integration/test-bug-605394-versioned-or-groups +++ b/test/integration/test-bug-605394-versioned-or-groups @@ -24,3 +24,7 @@ if aptget dist-upgrade --trivial-only -o Debug::pkgProblemResolver=1 -o Debug::p else msgpass fi + +# the Packages file includes only MD5 +testfailure aptget dist-upgrade -y +testsuccess grep 'Insufficient information available to perform this download securely' rootdir/tmp/testfailure.output diff --git a/test/integration/test-bug-661537-build-profiles-support b/test/integration/test-bug-661537-build-profiles-support index 91115ea18..d24484de9 100755 --- a/test/integration/test-bug-661537-build-profiles-support +++ b/test/integration/test-bug-661537-build-profiles-support @@ -76,7 +76,7 @@ Building dependency tree... } msgtest 'Check if version of installed dpkg is high enough for' 'build profiles support' -if dpkg --compare-versions "$(command dpkg-query --showformat='${Version}' --show dpkg)" 'ge' '1.17.14'; then +if dpkg --compare-versions "$(dpkg_version)" 'ge' '1.17.14'; then msgpass testwithdpkg() { msgtest "Test with" "dpkg-checkbuilddeps -d '$1' -P '$2'" diff --git a/test/integration/test-bug-712116-dpkg-pre-install-pkgs-hook-multiarch b/test/integration/test-bug-712116-dpkg-pre-install-pkgs-hook-multiarch index d9fd3d30d..bf93367c9 100755 --- a/test/integration/test-bug-712116-dpkg-pre-install-pkgs-hook-multiarch +++ b/test/integration/test-bug-712116-dpkg-pre-install-pkgs-hook-multiarch @@ -32,7 +32,7 @@ if [ -n \"${2}\" ]; then FD=\$APT_HOOK_INFO_FD if [ "\$FD" != \"${2}\" ]; then echo \"ERROR: Information is not on requested FD: \$FD != ${2}\" >> ${hook}-v${1}.list; fi fi -while read </proc/\$\$/fd/\$FD line; do +while read </dev/fd/\$FD line; do if echo \"\$line\" | grep -Fq '**'; then echo \"\$line\" fi diff --git a/test/integration/test-bug-722207-print-uris-even-if-very-quiet b/test/integration/test-bug-722207-print-uris-even-if-very-quiet index d8d3c7218..82c1d715f 100755 --- a/test/integration/test-bug-722207-print-uris-even-if-very-quiet +++ b/test/integration/test-bug-722207-print-uris-even-if-very-quiet @@ -20,7 +20,7 @@ APTARCHIVE=$(readlink -f ./aptarchive) testsuccessequal "'file://${APTARCHIVE}/pool/main/apt/apt_2_all.deb' apt_2_all.deb 0 " aptget upgrade -qq --print-uris testsuccessequal "'file://${APTARCHIVE}/pool/main/apt/apt_2_all.deb' apt_2_all.deb 0 " aptget dist-upgrade -qq --print-uris testsuccessequal "'file://${APTARCHIVE}/pool/main/apt/apt_2_all.deb' apt_2_all.deb 0 " aptget install apt -qq --print-uris -testsuccessequal "'file://${APTARCHIVE}/pool/main/apt/apt_2_all.deb' apt_2_all.deb 0 " aptget download apt -qq --print-uris +testsuccessequal "'file://${APTARCHIVE}/pool/main/apt/apt_2_all.deb' apt_2_all.deb 0 SHA256:0000000000000000000000000000000000000000000000000000000000000000" aptget download apt -qq --print-uris testsuccessequal "'file://${APTARCHIVE}/apt_2.dsc' apt_2.dsc 9 SHA256:7776436a6d741497f1cd958014e1a05b352224231428152aae39da3c17fd2fd4 'file://${APTARCHIVE}/apt_2.tar.gz' apt_2.tar.gz 12 SHA256:f57f565eabe3fde0ec6e6e0bcc8db1d86fe2b4d6344a380a23520ddbb7728e99" aptget source apt -qq --print-uris testsuccessequal "'http://metadata.ftp-master.debian.org/changelogs/main/a/apt/apt_2_changelog' apt.changelog" aptget changelog apt -qq --print-uris diff --git a/test/integration/test-bug-769609-triggers-still-pending-after-run b/test/integration/test-bug-769609-triggers-still-pending-after-run index bd43578a5..ce2c193dd 100755 --- a/test/integration/test-bug-769609-triggers-still-pending-after-run +++ b/test/integration/test-bug-769609-triggers-still-pending-after-run @@ -8,7 +8,7 @@ setupenvironment configarchitecture 'amd64' msgtest 'Check if installed dpkg supports' 'noawait trigger' -if dpkg-checkbuilddeps -d 'dpkg (>= 1.16.1)' /dev/null; then +if dpkg --compare-versions "$(dpkg_version)" 'ge' '1.16.1'; then msgpass else msgskip 'dpkg version too old' @@ -23,7 +23,7 @@ buildtriggerpackages() { cat >"${BUILDDIR}/debian/postinst" <<EOF #!/bin/sh if [ "\$1" = 'triggered' ]; then - ls -l /proc/self/fd/ + echo "TRIGGER IS RUNNING" fi EOF echo "$TYPE /usr/share/doc" > "${BUILDDIR}/debian/triggers" @@ -49,26 +49,26 @@ runtests() { testsuccess aptget install trigdepends-$TYPE -y --reinstall cp rootdir/tmp/testsuccess.output terminal.output testsuccess grep '^REWRITE ' terminal.output - testsuccess grep ' root root ' terminal.output + testsuccess grep 'TRIGGER IS RUNNING' terminal.output testdpkginstalled triggerable-$TYPE trigdepends-$TYPE testsuccess aptget install trigstuff -y cp rootdir/tmp/testsuccess.output terminal.output testsuccess grep '^REWRITE ' terminal.output - testsuccess grep ' root root ' terminal.output + testsuccess grep 'TRIGGER IS RUNNING' terminal.output testdpkginstalled triggerable-$TYPE trigdepends-$TYPE trigstuff testsuccess aptget purge trigstuff -y cp rootdir/tmp/testsuccess.output terminal.output testsuccess grep '^REWRITE ' terminal.output - testsuccess grep ' root root ' terminal.output + testsuccess grep 'TRIGGER IS RUNNING' terminal.output testdpkginstalled triggerable-$TYPE trigdepends-$TYPE testdpkgnotinstalled trigstuff testsuccess aptget purge trigdepends-$TYPE -y cp rootdir/tmp/testsuccess.output terminal.output testfailure grep '^REWRITE ' terminal.output - testfailure grep ' root root ' terminal.output + testfailure grep 'TRIGGER IS RUNNING' terminal.output testdpkgnotinstalled triggerable-$TYPE trigdepends-$TYPE } #runtests 'interest' diff --git a/test/integration/test-external-dependency-solver-protocol b/test/integration/test-external-dependency-solver-protocol index 10b07e896..17a30cf2f 100755 --- a/test/integration/test-external-dependency-solver-protocol +++ b/test/integration/test-external-dependency-solver-protocol @@ -26,7 +26,7 @@ insertpackage 'experimental' 'coolstuff' 'i386,amd64' '3' 'Depends: cool, stuff' setupaptarchive testsuccess aptget install --solver apt coolstuff -s -testempty find -name 'edsp.last.*' +testempty find . -name 'edsp.last.*' echo 'Dir::Log::Solver "edsp.last.xz";' > rootdir/etc/apt/apt.conf.d/log-edsp.conf testfailure aptget install --solver dump coolstuff -s @@ -152,7 +152,7 @@ testsuccess grep 'ERR_UNSOLVABLE' rootdir/tmp/testfailure.output configarchitecture 'armel' testfailure aptget install --solver apt awesomecoolstuff:i386 -s msgtest 'An invalid EDSP file generates a' 'hard error' -if echo "Request: This is a test\nFoo: bar\n\n" | aptinternalsolver > solver.result 2>&1; then +if printf "%b\n" "Request: This is a test\nFoo: bar\n\n" | aptinternalsolver > solver.result 2>&1; then cat solver.result msgfail else diff --git a/test/integration/test-handle-redirect-as-used-mirror-change b/test/integration/test-handle-redirect-as-used-mirror-change index 2e8fbeff6..2655f713c 100755 --- a/test/integration/test-handle-redirect-as-used-mirror-change +++ b/test/integration/test-handle-redirect-as-used-mirror-change @@ -78,3 +78,9 @@ testsuccessequal "Ign:1 http://0.0.0.0:${APTHTTPPORT}/storage unstable InRelease 404 Not Found Hit:2 http://0.0.0.0:${APTHTTPPORT} unstable Release Reading package lists..." aptget update + +rm -rf rootdir/var/lib/apt/lists +find aptarchive -name 'Release.gpg' -delete +find aptarchive -name 'Release' -delete +testwarning aptget update +testsuccess grep 'does not have a Release file' rootdir/tmp/testwarning.output diff --git a/test/integration/test-kernel-helper-autoremove b/test/integration/test-kernel-helper-autoremove index 417dafd65..a70841d9d 100755 --- a/test/integration/test-kernel-helper-autoremove +++ b/test/integration/test-kernel-helper-autoremove @@ -6,7 +6,7 @@ TESTDIR="$(readlink -f "$(dirname "$0")")" setupenvironment configarchitecture 'amd64' -CURRENTKERNEL="linux-image-$(uname -r)" +CURRENTKERNEL="linux-image-$(uname -r | tr '[A-Z]' '[a-z]')" insertinstalledpackage "$CURRENTKERNEL" 'amd64' '5-1' # debug packages do not need our protection insertinstalledpackage "${CURRENTKERNEL}-dbg" 'amd64' '5-1' @@ -49,7 +49,7 @@ testprotected() { testsuccess --nomsg grep '^\^linux-image-100\\\.0\\\.0-1-generic\$$' protected.list msgtest 'Check kernel autoremoval protection list includes' 'running kernel' - testsuccess --nomsg grep "^\\^linux-image-$(uname -r | sed -e 's#\.#\\\\.#g')\\\$\$" protected.list + testsuccess --nomsg grep "^\\^linux-image-$(uname -r | tr '[A-Z]' '[a-z]' | sed -e 's#\.#\\\\.#g')\\\$\$" protected.list msgtest 'Check kernel autoremoval protection list does not include' 'metapackages' testfailure --nomsg grep -e '^\^linux-image-amd64\$$' -e '^\^linux-image-686-pae\$$' -e ':i386' protected.list diff --git a/test/integration/test-no-fds-leaked-to-maintainer-scripts b/test/integration/test-no-fds-leaked-to-maintainer-scripts index baf85e311..7b5d6727e 100755 --- a/test/integration/test-no-fds-leaked-to-maintainer-scripts +++ b/test/integration/test-no-fds-leaked-to-maintainer-scripts @@ -8,6 +8,11 @@ setupenvironment configarchitecture 'amd64' 'i386' configdpkgnoopchroot +if [ ! -e /proc/self/fd ]; then + msgskip "needs /proc/self/fd" + exit 0 +fi + setupsimplenativepackage "fdleaks" 'all' '1.0' 'unstable' BUILDDIR="incoming/fdleaks-1.0" for script in 'preinst' 'postinst' 'prerm' 'postrm'; do @@ -24,7 +29,7 @@ buildpackage "$BUILDDIR" 'unstable' 'main' 'native' rm -rf "$BUILDDIR" PKGNAME='fdleaks:all' -if ! dpkg-checkbuilddeps -d 'dpkg (>= 1.16.2)' /dev/null >/dev/null 2>&1; then +if dpkg --compare-versions "$(dpkg_version)" 'lt' '1.16.2'; then PKGNAME='fdleaks' fi diff --git a/test/integration/test-releasefile-verification b/test/integration/test-releasefile-verification index 20ca613da..e043fa8b5 100755 --- a/test/integration/test-releasefile-verification +++ b/test/integration/test-releasefile-verification @@ -107,6 +107,19 @@ runtest() { " aptcache show apt installaptold + if [ "$(id -u)" != '0' ]; then + msgmsg 'Cold archive signed by' 'Joe Sixpack + unreadable key' + rm -rf rootdir/var/lib/apt/lists + echo 'foobar' > rootdir/etc/apt/trusted.gpg.d/unreadablekey.gpg + chmod 000 rootdir/etc/apt/trusted.gpg.d/unreadablekey.gpg + updatewithwarnings '^W: .* is not readable by user' + chmod 644 rootdir/etc/apt/trusted.gpg.d/unreadablekey.gpg + rm -f rootdir/etc/apt/trusted.gpg.d/unreadablekey.gpg + testsuccessequal "$(cat "${PKGFILE}") +" aptcache show apt + installaptold + fi + msgmsg 'Good warm archive signed by' 'Joe Sixpack' prepare "${PKGFILE}-new" signreleasefiles 'Joe Sixpack' diff --git a/test/interactive-helper/test_fileutl.cc b/test/interactive-helper/test_fileutl.cc index e660c2981..7c4b95759 100644 --- a/test/interactive-helper/test_fileutl.cc +++ b/test/interactive-helper/test_fileutl.cc @@ -4,6 +4,7 @@ #include <sys/types.h> #include <sys/stat.h> +#include <sys/wait.h> #include <unistd.h> #include <stdlib.h> #include <fcntl.h> diff --git a/vendor/debian/apt-vendor.ent b/vendor/debian/apt-vendor.ent index 8d5416ced..41484c42e 100644 --- a/vendor/debian/apt-vendor.ent +++ b/vendor/debian/apt-vendor.ent @@ -6,10 +6,10 @@ <!ENTITY keyring-master-filename ""> <!ENTITY keyring-uri ""> -<!ENTITY sourceslist-list-format "deb http://httpredir.debian.org/debian &debian-stable-codename; main contrib non-free +<!ENTITY sourceslist-list-format "deb http://deb.debian.org/debian &debian-stable-codename; main contrib non-free deb http://security.debian.org &debian-stable-codename;/updates main contrib non-free"> <!ENTITY sourceslist-sources-format "Types: deb -URIs: http://httpredir.debian.org/debian +URIs: http://deb.debian.org/debian Suites: &debian-stable-codename; Components: main contrib non-free diff --git a/vendor/debian/sources.list.in b/vendor/debian/sources.list.in index 0fae88e5e..73a2ec9c4 100644 --- a/vendor/debian/sources.list.in +++ b/vendor/debian/sources.list.in @@ -3,5 +3,5 @@ &sourceslist-list-format; # Uncomment if you want the apt-get source function to work -#deb-src http://httpredir.debian.org/debian &debian-stable-codename; main contrib non-free +#deb-src http://deb.debian.org/debian &debian-stable-codename; main contrib non-free #deb-src http://security.debian.org &debian-stable-codename;/updates main contrib non-free diff --git a/vendor/getinfo b/vendor/getinfo index 37e0c1480..37eb74cef 100755 --- a/vendor/getinfo +++ b/vendor/getinfo @@ -6,7 +6,7 @@ BASEDIR="$(readlink -f "$(dirname $0)")" getcurrent() { # search for an exact match to use the correct sources.list example cd $BASEDIR - DISTROS="$(find -mindepth 1 -maxdepth 1 -type d | cut -d'/' -f 2)" + DISTROS="$(find . -mindepth 1 -maxdepth 1 -type d | cut -d'/' -f 2)" for DISTRO in $DISTROS; do if dpkg-vendor --is $DISTRO; then echo $DISTRO |