Julian Andres Klode лет назад: 10
Родитель
Сommit
e02c3a9ec2
100 измененных файлов с 1366 добавлено и 2619 удалено
  1. 88 30
      .gitignore
  2. 9 2
      .travis.yml
  3. 285 0
      CMake/Documentation.cmake
  4. 48 0
      CMake/FindBerkeleyDB.cmake
  5. 88 0
      CMake/Misc.cmake
  6. 178 0
      CMake/Translations.cmake
  7. 1 1
      buildlib/apti18n.h.in
  8. 20 23
      buildlib/config.h.in
  9. 16 0
      CMake/run_if_exists.sh
  10. 0 0
      CMake/statvfs.h.in
  11. 8 0
      CMake/vendor_substitute.cmake
  12. 144 0
      CMakeLists.txt
  13. 0 84
      COMPILING
  14. 0 53
      Makefile
  15. 0 112
      README.make
  16. 15 10
      README.md
  17. 2 1
      abicheck/apt_build.xml.in
  18. 1 1
      abicheck/run_abi_test
  19. 26 0
      apt-inst/CMakeLists.txt
  20. 0 26
      apt-inst/makefile
  21. 46 0
      apt-pkg/CMakeLists.txt
  22. 1 1
      apt-pkg/deb/dpkgpm.cc
  23. 0 37
      apt-pkg/makefile
  24. 23 0
      apt-private/CMakeLists.txt
  25. 0 21
      apt-private/makefile
  26. 0 2
      apt-private/private-cachefile.h
  27. 0 2
      apt-private/private-cacheset.h
  28. 0 62
      buildlib/configure.mak
  29. 0 31
      buildlib/copy.mak
  30. 0 185
      buildlib/defaults.mak
  31. 0 75
      buildlib/docbook.mak
  32. 0 85
      buildlib/environment.mak.in
  33. 0 20
      buildlib/fail.mak
  34. 0 250
      buildlib/install-sh
  35. 0 77
      buildlib/library.mak
  36. 0 14
      buildlib/libversion.mak
  37. 0 46
      buildlib/makefile.in
  38. 0 30
      buildlib/manpage.mak
  39. 0 6
      buildlib/netdb.h.in
  40. 0 74
      buildlib/po4a_manpage.mak
  41. 0 27
      buildlib/podomain.mak
  42. 0 60
      buildlib/program.mak
  43. 0 68
      buildlib/python.mak
  44. 0 60
      buildlib/staticlibrary.mak
  45. 0 110
      buildlib/tools.m4
  46. 59 0
      cmdline/CMakeLists.txt
  47. 0 119
      cmdline/makefile
  48. 0 218
      configure.ac
  49. 14 0
      debian/NEWS
  50. 1 0
      debian/apt-doc.install
  51. 1 0
      debian/apt-transport-https.files
  52. 0 1
      debian/apt-transport-https.install
  53. 19 0
      debian/apt-utils.install
  54. 2 0
      debian/apt.files
  55. 39 0
      debian/apt.install
  56. 0 9
      debian/apt.install.in
  57. 0 0
      debian/apt.systemd.daily
  58. 21 0
      debian/changelog
  59. 1 1
      debian/compat
  60. 4 2
      debian/control
  61. 1 0
      debian/copyright
  62. 2 0
      debian/libapt-inst2.0.install
  63. 0 2
      debian/libapt-inst2.0.install.in
  64. 3 0
      debian/libapt-pkg-dev.install
  65. 0 3
      debian/libapt-pkg-dev.install.in
  66. 1 5
      debian/libapt-pkg-doc.docs
  67. 1 0
      debian/libapt-pkg-doc.install
  68. 2 0
      debian/libapt-pkg5.0.install
  69. 0 2
      debian/libapt-pkg5.0.install.in
  70. 4 4
      debian/libapt-pkg5.0.symbols
  71. 24 340
      debian/rules
  72. 7 5
      debian/tests/run-tests
  73. 85 0
      doc/CMakeLists.txt
  74. 6 6
      doc/Doxyfile.in
  75. 1 1
      doc/apt-ftparchive.1.xml
  76. 1 1
      doc/apt-get.8.xml
  77. 1 1
      doc/apt-secure.8.xml
  78. 1 1
      doc/apt-verbatim.ent
  79. 1 1
      doc/apt.conf.5.xml
  80. 0 37
      doc/en/makefile
  81. 4 0
      doc/examples/CMakeLists.txt
  82. 0 11
      doc/lang.makefile
  83. 0 113
      doc/makefile
  84. 2 2
      doc/po/apt-doc.pot
  85. 1 1
      doc/po/de.po
  86. 1 1
      doc/po/es.po
  87. 1 1
      doc/po/fr.po
  88. 1 1
      doc/po/it.po
  89. 1 1
      doc/po/ja.po
  90. 1 1
      doc/po/nl.po
  91. 1 1
      doc/po/pl.po
  92. 1 1
      doc/po/pt.po
  93. 1 1
      doc/po/pt_BR.po
  94. 1 1
      doc/sources.list.5.xml
  95. 4 0
      dselect/CMakeLists.txt
  96. 0 17
      dselect/makefile
  97. 10 0
      ftparchive/CMakeLists.txt
  98. 0 21
      ftparchive/makefile
  99. 35 0
      methods/CMakeLists.txt
  100. 0 0
      methods/makefile

+ 88 - 30
.gitignore

@@ -1,22 +1,92 @@
-*~
-# build artifacts
-/aclocal.m4
-/autom4te.cache/
-/build/
-/buildlib/config.guess
-/buildlib/config.sub
-/configure
-
-# copy of COPYING
-/debian/copyright
-
-# generated files in the process to build all
-# apt man pages and other documentation
-/doc/*/
+# Include directory
+include/
+
+# Cmake files
+CMakeCache.txt
+CMakeFiles
+CMakeScripts
+Makefile
+cmake_install.cmake
+install_manifest.txt
+CTestTestfile.cmake
+Testing/
+
+gtest-*
+
+# Compiled output
+*.o
+*.so*
+*.versionscript
+
+# Templates
+*.pot
+*.pot-*
+!/po/apt-all.pot
+
+# Vendor files
+
+**/vendor/sources.list
+**/LC_MESSAGES/
+
+**/ftparchive/apt-ftparchive
+**/cmdline/apt
+**/cmdline/apt-cache
+**/cmdline/apt-cdrom
+**/cmdline/apt-config
+**/cmdline/apt-extracttemplates
+**/cmdline/apt-get
+**/cmdline/apt-helper
+**/cmdline/apt-key
+**/cmdline/apt-mark
+**/cmdline/apt-sortpkgs
+**/cmdline/planners
+**/cmdline/solvers
+**/cmdline/apt
+
+**/methods/file
+**/methods/copy
+**/methods/store
+**/methods/gpgv
+**/methods/cdrom
+**/methods/http
+**/methods/https
+**/methods/mirror
+**/methods/ftp
+**/methods/rred
+**/methods/rsh
+**/methods/ssh
+**/methods/gzip
+**/methods/bzip2
+**/methods/xz
+**/methods/lzma
+
+**/test/interactive-helper/aptwebserver
+**/test/interactive-helper/extract-control
+**/test/interactive-helper/rpmver
+**/test/interactive-helper/testdeb
+**/test/interactive-helper/mthdcat
+**/test/interactive-helper/test_fileutl
+**/test/interactive-helper/test_udevcdrom
+**/test/libapt/libapt_test
+
+# Documentation
+Doxyfile
+doxygen/
+*.html/
+*.text.html
+*.text
+*.*stamp*
+*.[1-9]
+**/doc/*/*.xml
+**/doc/*/*.dbk
 !/doc/examples/
 !/doc/examples/
-!/doc/po/
-/doc/en/*
-!/doc/en/makefile
+
+# Backend files
+Makefile
+*.ninja
+.ninja*
+
+!CMakeLists.txt
 
 
 # package building artifacts
 # package building artifacts
 /debian/*.log
 /debian/*.log
@@ -32,18 +102,6 @@
 /debian/libapt-pkg-doc/
 /debian/libapt-pkg-doc/
 /debian/apt-transport-https/
 /debian/apt-transport-https/
 
 
-# generated from *.in files
-/cmdline/apt-key
-/doc/apt-vendor.ent
-/doc/examples/sources.list
-/debian/apt.install
-/debian/libapt-pkg*.install
-/debian/libapt-inst*.install
-/debian/libapt-pkg-dev.install
-/vendor/current
-/vendor/*/sources.list
-/vendor/*/makefile.auto
-
 # generated for and by abicheck
 # generated for and by abicheck
 /abicheck/apt_build.xml
 /abicheck/apt_build.xml
 /abicheck/apt_installed.xml
 /abicheck/apt_installed.xml

+ 9 - 2
.travis.yml

@@ -3,15 +3,22 @@ sudo: required
 dist: trusty
 dist: trusty
 before_install:
 before_install:
  - sudo add-apt-repository 'deb http://archive.ubuntu.com/ubuntu/ wily main universe' -y
  - sudo add-apt-repository 'deb http://archive.ubuntu.com/ubuntu/ wily main universe' -y
+ - sudo add-apt-repository 'deb http://archive.ubuntu.com/ubuntu/ xenial main' -y
  - |
  - |
    sudo sh -c '/bin/echo -e "Package: *\nPin: release n=wily\nPin-Priority: 1" > /etc/apt/preferences.d/wily'
    sudo sh -c '/bin/echo -e "Package: *\nPin: release n=wily\nPin-Priority: 1" > /etc/apt/preferences.d/wily'
+   sudo sh -c '/bin/echo -e "Package: *\nPin: release n=xenial\nPin-Priority: 1" > /etc/apt/preferences.d/xenial'
  - sudo apt-get update -qq
  - sudo apt-get update -qq
 install:
 install:
  - sudo ./prepare-release travis-ci
  - sudo ./prepare-release travis-ci
  - sudo apt-get -qq -y -t wily install gettext liblz4-dev python3-apt
  - sudo apt-get -qq -y -t wily install gettext liblz4-dev python3-apt
- - make
+ - sudo apt-get -qq -y -t xenial install cmake
+before_script:
+ - ( mkdir build && cd build && cmake .. )
+ - make -C build -j4
 script:
 script:
- - make test
+ - make -C build test
  - ./test/integration/run-tests -q
  - ./test/integration/run-tests -q
  - sudo adduser --force-badname --system --home /nonexistent --no-create-home --quiet _apt || true
  - sudo adduser --force-badname --system --home /nonexistent --no-create-home --quiet _apt || true
  - sudo ./test/integration/run-tests -q
  - sudo ./test/integration/run-tests -q
+ - make -C build install DESTDIR=$PWD/rootdir
+ - find rootdir -print0 | xargs -0 ls -ld

+ 285 - 0
CMake/Documentation.cmake

@@ -0,0 +1,285 @@
+# po4a/docbook documentation support for CMake
+# - see documentation of add_docbook()
+#
+# Copyright (C) 2016 Julian Andres Klode <jak@debian.org>.
+#
+# Permission is hereby granted, free of charge, to any person
+# obtaining a copy of this software and associated documentation files
+# (the "Software"), to deal in the Software without restriction,
+# including without limitation the rights to use, copy, modify, merge,
+# publish, distribute, sublicense, and/or sell copies of the Software,
+# and to permit persons to whom the Software is furnished to do so,
+# subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be
+# included in all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
+# BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
+# ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+# CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+# SOFTWARE.
+
+
+# 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
+# a two char language code like de, or a 5 char code of the form de_DE.
+function(po4a_components doc lang sec ext translated_full_document)
+    get_filename_component(name ${translated_full_document} NAME)
+    string(REPLACE "." ";" name "${name}")          # Make it a list
+
+    list(GET name 0 _doc)   # First element is always the document
+    list(GET name 1 _lang)  # Second *might* be a language
+    list(GET name -2 _sec)  # Second-last *might* be a section
+    list(GET name -1 _ext)  # Last element is always the file type
+
+    # If the language code is neither a file type, nor a section, nor a language
+    # assume it is part of the file name and use the next component as the lang.
+    if(_lang AND NOT _lang MATCHES "^(xml|dbk|[0-9]|[a-z][a-z]|[a-z][a-z]_[A-Z][A-Z])$")
+        set(_doc "${_doc}.${_lang}")
+        list(GET name 2 _lang)
+    endif()
+    # If no language is present, we get a section; both not present => type
+    if(_lang MATCHES "xml|dbk|[0-9]")
+        set(_lang "")
+    endif()
+    if(NOT _sec MATCHES "^[0-9]$")        # A (manpage) section must be a number
+        set(_sec "")
+    endif()
+
+    set(${doc} ${_doc} PARENT_SCOPE)
+    set(${lang} ${_lang} PARENT_SCOPE)
+    set(${sec} ${_sec} PARENT_SCOPE)
+    set(${ext} ${_ext} PARENT_SCOPE)
+endfunction()
+
+
+# Process one document
+function(po4a_one stamp_out out full_document language deps)
+    path_join(full_path "${CMAKE_CURRENT_SOURCE_DIR}" "${full_document}")
+    po4a_components(document _ section ext "${full_document}")
+
+    # Calculate target file name
+    set(dest "${language}/${document}.${language}")
+    if(section)
+        set(dest "${dest}.${section}")
+    endif()
+
+    # po4a might drop files not translated enough, so build a stamp file
+    set(stamp ${CMAKE_CURRENT_BINARY_DIR}/${dest}.po4a-stamp)
+    add_custom_command(
+        OUTPUT ${stamp}
+        COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_CURRENT_BINARY_DIR}/${language}
+        COMMAND po4a --previous --no-backups
+                     --package-name='${PROJECT}-doc'
+                     --package-version='${PACKAGE_VERSION}'
+                     --msgid-bugs-address='${PACKAGE_MAIL}'
+                     --translate-only ${dest}.${ext}
+                     --srcdir ${CMAKE_CURRENT_SOURCE_DIR}
+                     --destdir ${CMAKE_CURRENT_BINARY_DIR}
+                      ${CMAKE_CURRENT_SOURCE_DIR}/po4a.conf
+        COMMAND ${CMAKE_COMMAND} -E touch ${stamp}
+        COMMENT "Generating ${dest}.${ext} (or dropping it)"
+        DEPENDS ${full_document} ${deps} po/${language}.po
+    )
+    # Return result
+    set(${stamp_out} ${stamp} PARENT_SCOPE)
+    set(${out} ${CMAKE_CURRENT_BINARY_DIR}/${dest}.${ext} PARENT_SCOPE)
+endfunction()
+
+function(xsltproc_one)
+    set(generated "")
+    set(options HTML TEXT MANPAGE)
+    set(oneValueArgs STAMP STAMP_OUT FULL_DOCUMENT)
+    set(multiValueArgs INSTALL DEPENDS)
+    cmake_parse_arguments(DOC "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
+
+    po4a_components(document language section ext "${DOC_FULL_DOCUMENT}")
+
+    # Default parameters
+    set(params
+        --nonet
+        --xinclude
+        --stringparam chunk.quietly yes
+        --stringparam man.output.quietly yes
+        --path ${PROJECT_SOURCE_DIR}/vendor/${CURRENT_VENDOR}/
+        --path ${CMAKE_CURRENT_SOURCE_DIR}/
+    )
+
+    # Parameters if localized
+    if(language)
+        list(APPEND params -stringparam l10n.gentext.default.language ${language})
+    endif()
+
+    path_join(full_input_path ${CMAKE_CURRENT_SOURCE_DIR} ${DOC_FULL_DOCUMENT})
+
+    if (DOC_MANPAGE)
+        if (language)
+        set(manpage_output "${CMAKE_CURRENT_BINARY_DIR}/${language}/${document}.${section}")
+        else()
+        set(manpage_output "${CMAKE_CURRENT_BINARY_DIR}/${document}.${section}")
+        endif()
+        set(manpage_stylesheet "${CMAKE_CURRENT_SOURCE_DIR}/manpage-style.xsl")
+
+        install(FILES ${manpage_output}
+                DESTINATION ${CMAKE_INSTALL_MANDIR}/${language}/man${section}
+                OPTIONAL)
+    endif()
+    if (DOC_HTML)
+        if (language)
+        set(html_output "${CMAKE_CURRENT_BINARY_DIR}/${language}/${document}.${language}.html")
+        else()
+        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")
+        install(DIRECTORY ${html_output}
+                DESTINATION ${DOC_INSTALL}
+                OPTIONAL)
+
+    endif()
+    if (DOC_TEXT)
+        if (language)
+        set(text_output "${CMAKE_CURRENT_BINARY_DIR}/${language}/${document}.${language}.text")
+        else()
+        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")
+
+        file(RELATIVE_PATH text_output_relative ${CMAKE_CURRENT_BINARY_DIR} ${text_output})
+
+        add_custom_command(OUTPUT ${text_output}.w3m-stamp
+                            COMMAND ${PROJECT_SOURCE_DIR}/CMake/run_if_exists.sh
+                                    --stdout ${text_output}
+                                    ${text_output}.html
+                                    env LC_ALL=C.UTF-8 w3m -cols 78 -dump
+                                    -o display_charset=UTF-8
+                                    -no-graph -T text/html ${text_output}.html
+                            COMMAND ${CMAKE_COMMAND} -E touch ${text_output}.w3m-stamp
+                            COMMENT "Generating ${text_output_relative} (if not dropped by po4a)"
+                            DEPENDS "${text_output}.html.xsltproc-stamp"
+                            )
+        list(APPEND generated ${text_output}.w3m-stamp)
+
+        install(FILES ${text_output}
+                DESTINATION ${DOC_INSTALL}
+                OPTIONAL)
+        set(text_output "${text_output}.html")
+    endif()
+
+    foreach(type in manpage html text)
+        if (NOT ${type}_output)
+            continue()
+        endif()
+
+        set(output ${${type}_output})
+        set(stylesheet ${${type}_stylesheet})
+        set(type_params ${${type}_params})
+        file(RELATIVE_PATH output_relative ${CMAKE_CURRENT_BINARY_DIR} ${output})
+
+        add_custom_command(OUTPUT ${output}.xsltproc-stamp
+                COMMAND ${PROJECT_SOURCE_DIR}/CMake/run_if_exists.sh
+                        ${full_input_path}
+                        xsltproc ${params} ${type_params} -o ${output}
+                                 ${stylesheet}
+                                 ${full_input_path}
+                COMMAND ${CMAKE_COMMAND} -E touch ${output}.xsltproc-stamp
+                COMMENT "Generating ${output_relative} (if not dropped by po4a)"
+                DEPENDS ${DOC_STAMP} ${DOC_DEPENDS})
+
+        list(APPEND generated ${output}.xsltproc-stamp)
+    endforeach()
+
+    set(${DOC_STAMP_OUT} ${generated} PARENT_SCOPE)
+endfunction()
+
+
+# add_docbook(Name [ALL] [HTML] [TEXT] [MANPAGE]
+#             [INSTALL install dir]
+#             [DEPENDS depend ...]
+#             [DOCUMENTS documents ...]
+#             [LINGUAS lingua ...])
+#
+# Generate a target called name with all the documents being converted to
+# the chosen output formats and translated to the chosen languages using po4a.
+#
+# For the translation support, the po4a.conf must be written so that
+# translations for a document guide.xml are written to LANG/guide.LANG.xml,
+# and for a manual page man.5.xml to a file called LANG/man.LANG.5.xml.
+#
+# The guide and manual page names may also contain a second component separated
+# by a dot, it must however not be a valid language code.
+#
+# Note that po4a might chose not to generate a translated manual page for a
+# given language if the translation rate is not high enough. We deal with this
+# by creating stamp files.
+function(add_docbook target)
+    set(generated "")
+    set(options HTML TEXT MANPAGE ALL)
+    set(multiValueArgs INSTALL DOCUMENTS LINGUAS DEPENDS)
+    cmake_parse_arguments(DOC "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
+
+    if (DOC_HTML)
+        list(APPEND formats HTML)
+    endif()
+    if (DOC_TEXT)
+        list(APPEND formats TEXT)
+    endif()
+    if (DOC_MANPAGE)
+        list(APPEND formats MANPAGE)
+    endif()
+
+    foreach(document ${DOC_DOCUMENTS})
+        foreach(lang ${DOC_LINGUAS})
+            po4a_one(po4a_stamp po4a_out ${document} "${lang}" "${DOC_DEPENDS}")
+            xsltproc_one(STAMP_OUT xslt_stamp
+                         STAMP ${po4a_stamp}
+                         FULL_DOCUMENT ${po4a_out}
+                         INSTALL ${DOC_INSTALL}
+                         ${formats})
+
+            list(APPEND stamps ${xslt_stamp})
+        endforeach()
+            xsltproc_one(STAMP_OUT xslt_stamp
+                         STAMP ${document}
+                         FULL_DOCUMENT ${document}
+                         INSTALL ${DOC_INSTALL}
+                         ${formats})
+
+            list(APPEND stamps ${xslt_stamp})
+    endforeach()
+
+    if (DOC_ALL)
+        add_custom_target(${target} ALL DEPENDS ${stamps})
+    else()
+        add_custom_target(${target} DEPENDS ${stamps})
+    endif()
+endfunction()
+
+# Add an update-po4a target
+function(add_update_po4a target pot header)
+    set(WRITE_HEADER "")
+
+    if (header)
+        set(WRITE_HEADER
+            COMMAND sed -n "/^\#$/,$p" ${pot} > ${pot}.headerfree
+            COMMAND cat ${header} ${pot}.headerfree > ${pot}
+            COMMAND rm ${pot}.headerfree
+        )
+    endif()
+    add_custom_target(${target}
+        COMMAND po4a --previous --no-backups --force --no-translations
+                --msgmerge-opt --add-location=file
+                --porefs noline,wrap
+                --package-name=${PROJECT_NAME}-doc --package-version=${PACKAGE_VERSION}
+                --msgid-bugs-address=${PACKAGE_MAIL} po4a.conf
+        ${WRITE_HEADER}
+        VERBATIM
+        WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
+    )
+endfunction()

+ 48 - 0
CMake/FindBerkeleyDB.cmake

@@ -0,0 +1,48 @@
+# - Try to find Berkeley DB
+# Once done this will define
+#
+#  BERKELEY_DB_FOUND - system has Berkeley DB
+#  BERKELEY_DB_INCLUDE_DIRS - the Berkeley DB include directory
+#  BERKELEY_DB_LIBRARIES - Link these to use Berkeley DB
+#  BERKELEY_DB_DEFINITIONS - Compiler switches required for using Berkeley DB
+
+# Copyright (c) 2006, Alexander Dymo, <adymo@kdevelop.org>
+# Copyright (c) 2016, Julian Andres Klode <jak@debian.org>
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+#
+# 1. Redistributions of source code must retain the copyright
+#    notice, this list of conditions and the following disclaimer.
+# 2. Redistributions in binary form must reproduce the copyright
+#    notice, this list of conditions and the following disclaimer in the
+#    documentation and/or other materials provided with the distribution.
+# 3. The name of the author may not be used to endorse or promote products
+#    derived from this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+# IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+find_path(BERKELEY_DB_INCLUDE_DIRS db.h
+  /usr/include/db5
+  /usr/local/include/db5
+  /usr/include/db4
+  /usr/local/include/db4
+)
+
+find_library(BERKELEY_DB_LIBRARIES NAMES db )
+
+include(FindPackageHandleStandardArgs)
+find_package_handle_standard_args(Berkeley "Could not find Berkeley DB >= 4.1" BERKELEY_DB_INCLUDE_DIRS BERKELEY_DB_LIBRARIES)
+# show the BERKELEY_DB_INCLUDE_DIRS and BERKELEY_DB_LIBRARIES variables only in the advanced view
+mark_as_advanced(BERKELEY_DB_INCLUDE_DIRS BERKELEY_DB_LIBRARIES)

+ 88 - 0
CMake/Misc.cmake

@@ -0,0 +1,88 @@
+include(CheckCXXCompilerFlag)
+
+# Flatten our header structure
+function(flatify target headers)
+    foreach(header ${headers})
+        get_filename_component(tgt ${header} NAME)
+        configure_file(${header} ${target}/${tgt} @ONLY)
+    endforeach(header ${headers})
+endfunction()
+
+
+function(add_optional_compile_options flags)
+    foreach(flag ${flags})
+        check_cxx_compiler_flag(-${flag} have-compiler-flag:-${flag})
+        if (have-compiler-flag:-${flag})
+            add_compile_options("-${flag}")
+        endif()
+    endforeach()
+endfunction()
+
+# Substitute vendor references in a file
+function(add_vendor_file)
+    set(options)
+    set(oneValueArgs OUTPUT INPUT MODE)
+    set(multiValueArgs VARIABLES)
+    cmake_parse_arguments(AVF "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
+
+    set(in ${CMAKE_CURRENT_SOURCE_DIR}/${AVF_INPUT})
+    set(out ${CMAKE_CURRENT_BINARY_DIR}/${AVF_OUTPUT})
+
+    add_custom_command(
+        OUTPUT ${out}
+        COMMAND ${CMAKE_COMMAND} -DPROJECT_SOURCE_DIR=${PROJECT_SOURCE_DIR}
+                                 "-DVARS=${AVF_VARIABLES}"
+                                 -DCURRENT_VENDOR=${CURRENT_VENDOR}
+                                 -DIN=${in}
+                                 -DOUT=${out}
+                                 -P ${PROJECT_SOURCE_DIR}/CMake/vendor_substitute.cmake
+        COMMAND chmod ${AVF_MODE} ${out}
+        DEPENDS ${in}
+                ${PROJECT_SOURCE_DIR}/doc/apt-verbatim.ent
+                ${PROJECT_SOURCE_DIR}/vendor/${CURRENT_VENDOR}/apt-vendor.ent
+                ${PROJECT_SOURCE_DIR}/vendor/getinfo
+                ${PROJECT_SOURCE_DIR}/CMake/vendor_substitute.cmake
+        VERBATIM
+    )
+
+    # Woud like to use ${AVF_OUTPUT} as target name, but then ninja gets
+    # cycles.
+    add_custom_target(vendor-${AVF_OUTPUT} ALL DEPENDS ${out})
+endfunction()
+
+# Add symbolic links to a file
+function(add_slaves destination master)
+    set(slaves "")
+    foreach(slave ${ARGN})
+        add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${slave}
+                           COMMAND ${CMAKE_COMMAND} -E create_symlink ${master} ${CMAKE_CURRENT_BINARY_DIR}/${slave})
+        list(APPEND slaves ${CMAKE_CURRENT_BINARY_DIR}/${slave})
+    endforeach()
+
+    STRING(REPLACE "/" "-" master "${master}")
+    add_custom_target(${master}-slaves ALL DEPENDS ${slaves})
+    install(FILES ${slaves} DESTINATION ${destination})
+endfunction()
+
+# Generates a simple version script versioning everything with current SOVERSION
+function(add_version_script target)
+    get_target_property(soversion ${target} SOVERSION)
+    set(script "${CMAKE_CURRENT_BINARY_DIR}/${target}.versionscript")
+    string(REPLACE "-" "" name "${target}_${soversion}")
+    string(TOUPPER "${name}" name)
+    add_custom_command(OUTPUT "${script}"
+                       COMMAND echo "${name} {global: *; };" > "${script}"
+                       VERBATIM )
+    add_custom_target(${target}-versionscript DEPENDS "${script}")
+    target_link_libraries(${target} PRIVATE -Wl,-version-script="${script}")
+    add_dependencies(${target} ${target}-versionscript)
+endfunction()
+
+function(path_join out path1 path2)
+    string(SUBSTRING ${path2} 0 1 init_char)
+    if ("${init_char}" STREQUAL "/")
+        set(${out} "${path2}" PARENT_SCOPE)
+    else()
+        set(${out} "${path1}/${path2}" PARENT_SCOPE)
+    endif()
+endfunction()

+ 178 - 0
CMake/Translations.cmake

@@ -0,0 +1,178 @@
+# translations.cmake - Translations using APT's translation system.
+# Copyright (C) 2009, 2016 Julian Andres Klode <jak@debian.org>
+
+function(apt_add_translation_domain)
+    set(options)
+    set(oneValueArgs DOMAIN)
+    set(multiValueArgs TARGETS SCRIPTS EXCLUDE_LANGUAGES)
+    cmake_parse_arguments(NLS "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
+    # Build the list of source files of the target
+    set(files "")
+    set(abs_files "")
+    set(scripts "")
+    set(abs_scripts "")
+    set(targets ${NLS_TARGETS})
+    set(domain ${NLS_DOMAIN})
+    set(xgettext_params
+        --add-comments
+        --foreign
+        --package-name=${PROJECT_NAME}
+        --package-version=${PACKAGE_VERSION}
+        --msgid-bugs-address=${PACKAGE_MAIL}
+    )
+    foreach(source ${NLS_SCRIPTS})
+            path_join(file "${CMAKE_CURRENT_SOURCE_DIR}" "${source}")
+            file(RELATIVE_PATH relfile ${PROJECT_SOURCE_DIR} ${file})
+            list(APPEND scripts ${relfile})
+            list(APPEND abs_scripts ${file})
+        endforeach()
+    foreach(target ${targets})
+        get_target_property(source_dir ${target} SOURCE_DIR)
+        get_target_property(sources ${target} SOURCES)
+        foreach(source ${sources})
+            path_join(file "${source_dir}" "${source}")
+            file(RELATIVE_PATH relfile ${PROJECT_SOURCE_DIR} ${file})
+            set(files ${files} ${relfile})
+            set(abs_files ${abs_files} ${file})
+        endforeach()
+
+        target_compile_definitions(${target} PRIVATE -DAPT_DOMAIN="${domain}")
+    endforeach()
+
+    if("${scripts}" STREQUAL "")
+        set(sh_pot "/dev/null")
+    else()
+        set(sh_pot ${CMAKE_CURRENT_BINARY_DIR}/${domain}.sh.pot)
+        # Create the template for this specific sub-domain
+        add_custom_command (OUTPUT ${sh_pot}
+            COMMAND xgettext ${xgettext_params} -L Shell
+                             -o ${sh_pot} ${scripts}
+            DEPENDS ${abs_scripts}
+            VERBATIM
+            WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
+        )
+    endif()
+
+
+    add_custom_command (OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${domain}.c.pot
+        COMMAND xgettext ${xgettext_params} -k_ -kN_
+                         --keyword=P_:1,2
+                         -o ${CMAKE_CURRENT_BINARY_DIR}/${domain}.c.pot ${files}
+        DEPENDS ${abs_files}
+        VERBATIM
+        WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
+    )
+
+    # We are building a ${domain}.pot with a header for launchpad, but we also
+    # 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.
+    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
+                         ${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
+                         ${sh_pot}
+                         ${CMAKE_CURRENT_BINARY_DIR}/${domain}.c.pot
+                         --output=${CMAKE_CURRENT_BINARY_DIR}/${domain}.pot-tmp0
+        COMMAND cmake -E copy_if_different
+                         ${CMAKE_CURRENT_BINARY_DIR}/${domain}.pot-tmp0
+                         ${CMAKE_CURRENT_BINARY_DIR}/${domain}.pot-tmp
+        DEPENDS ${sh_pot}
+                ${CMAKE_CURRENT_BINARY_DIR}/${domain}.c.pot
+        WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
+    )
+
+    # We need a target to depend on otherwise, the msgmerge might not get called
+    # with the make generator
+    add_custom_target(nls-${domain}-template DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/${domain}.pot)
+
+    # Build .mo files
+    file(GLOB translations "${PROJECT_SOURCE_DIR}/po/*.po")
+    list(SORT translations)
+    foreach(file ${translations})
+        get_filename_component(langcode ${file} NAME_WE)
+        if ("${langcode}" IN_LIST NLS_EXCLUDE_LANGUAGES)
+            continue()
+        endif()
+        set(outdir ${CMAKE_CURRENT_BINARY_DIR}/locale/${langcode}/LC_MESSAGES)
+        file(MAKE_DIRECTORY ${outdir})
+        # Command to merge and compile the messages. As explained in the custom
+        # command for msgcomm, this depends on byproduct to avoid reruns
+        add_custom_command(OUTPUT ${outdir}/${domain}.po
+            COMMAND msgmerge -qo ${outdir}/${domain}.po ${file} ${CMAKE_CURRENT_BINARY_DIR}/${domain}.pot-tmp
+            DEPENDS ${file} ${CMAKE_CURRENT_BINARY_DIR}/${domain}.pot-tmp
+        )
+        add_custom_command(OUTPUT ${outdir}/${domain}.mo
+            COMMAND msgfmt --statistics -o ${outdir}/${domain}.mo  ${outdir}/${domain}.po
+            DEPENDS ${outdir}/${domain}.po
+        )
+
+        set(mofiles ${mofiles} ${outdir}/${domain}.mo)
+        install(FILES ${outdir}/${domain}.mo
+                DESTINATION "${CMAKE_INSTALL_LOCALEDIR}/${langcode}/LC_MESSAGES")
+    endforeach(file ${translations})
+
+    add_custom_target(nls-${domain} ALL DEPENDS ${mofiles} nls-${domain}-template)
+endfunction()
+
+# Usage: apt_add_update_po(output domain [domain ...])
+function(apt_add_update_po)
+    set(options)
+    set(oneValueArgs TEMPLATE)
+    set(multiValueArgs DOMAINS EXCLUDE_LANGUAGES)
+    cmake_parse_arguments(NLS "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
+    set(output ${CMAKE_CURRENT_SOURCE_DIR}/${NLS_TEMPLATE}.pot)
+    foreach(domain ${NLS_DOMAINS})
+        list(APPEND potfiles ${CMAKE_CURRENT_BINARY_DIR}/${domain}.pot)
+    endforeach()
+
+    get_filename_component(master_name ${output} NAME_WE)
+    add_custom_target(nls-${master_name}
+                       COMMAND msgcomm --sort-by-file --add-location=file
+                                        --more-than=0 --output=${output}
+                                ${potfiles}
+                       DEPENDS ${potfiles})
+
+    file(GLOB translations "${PROJECT_SOURCE_DIR}/po/*.po")
+    if (NOT TARGET update-po)
+        add_custom_target(update-po)
+    endif()
+    foreach(translation ${translations})
+            get_filename_component(langcode ${translation} NAME_WE)
+            if ("${langcode}" IN_LIST NLS_EXCLUDE_LANGUAGES)
+                continue()
+            endif()
+            add_custom_target(update-po-${langcode}
+                COMMAND msgmerge -q --update --backup=none ${translation} ${output}
+                DEPENDS nls-${master_name}
+            )
+            add_dependencies(update-po update-po-${langcode})
+    endforeach()
+    add_dependencies(update-po nls-${master_name})
+endfunction()
+
+function(apt_add_po_statistics excluded)
+    add_custom_target(statistics)
+    file(GLOB translations "${PROJECT_SOURCE_DIR}/po/*.po")
+    foreach(translation ${translations})
+            get_filename_component(langcode ${translation} NAME_WE)
+            if ("${langcode}" IN_LIST excluded)
+                add_custom_command(
+                    TARGET statistics PRE_BUILD
+                    COMMAND printf "%-6s " "${langcode}:"
+                    COMMAND echo "ignored"
+                    VERBATIM
+                )
+                continue()
+            endif()
+            add_custom_command(
+                TARGET statistics PRE_BUILD
+                COMMAND printf "%-6s " "${langcode}:"
+                COMMAND msgfmt --statistics -o /dev/null ${translation}
+                VERBATIM
+            )
+    endforeach()
+endfunction()

+ 1 - 1
buildlib/apti18n.h.in

@@ -4,7 +4,7 @@
    in each C file. */
    in each C file. */
 
 
 // Set by autoconf
 // Set by autoconf
-#undef USE_NLS
+#cmakedefine USE_NLS
 
 
 #ifdef USE_NLS
 #ifdef USE_NLS
 // apt will use the gettext implementation of the C library
 // apt will use the gettext implementation of the C library

+ 20 - 23
buildlib/config.h.in

@@ -1,56 +1,53 @@
 /* Define if your processor stores words with the most significant
 /* Define if your processor stores words with the most significant
    byte first (like Motorola and SPARC, unlike Intel and VAX).  */
    byte first (like Motorola and SPARC, unlike Intel and VAX).  */
-#undef WORDS_BIGENDIAN
+#cmakedefine WORDS_BIGENDIAN
 
 
 /* Define if we have the timegm() function */
 /* Define if we have the timegm() function */
-#undef HAVE_TIMEGM
+#cmakedefine HAVE_TIMEGM
 
 
 /* Define if we have the zlib library for gzip */
 /* Define if we have the zlib library for gzip */
-#undef HAVE_ZLIB
+#cmakedefine HAVE_ZLIB
 
 
 /* Define if we have the bz2 library for bzip2 */
 /* Define if we have the bz2 library for bzip2 */
-#undef HAVE_BZ2
+#cmakedefine HAVE_BZ2
 
 
 /* Define if we have the lzma library for lzma/xz */
 /* Define if we have the lzma library for lzma/xz */
-#undef HAVE_LZMA
+#cmakedefine HAVE_LZMA
 
 
 /* Define if we have the lz4 library for lz4 */
 /* Define if we have the lz4 library for lz4 */
-#undef HAVE_LZ4
+#cmakedefine HAVE_LZ4
 
 
 /* These two are used by the statvfs shim for glibc2.0 and bsd */
 /* These two are used by the statvfs shim for glibc2.0 and bsd */
 /* Define if we have sys/vfs.h */
 /* Define if we have sys/vfs.h */
-#undef HAVE_VFS_H
-#undef HAVE_STRUCT_STATFS_F_TYPE
+#cmakedefine HAVE_VFS_H
+#cmakedefine HAVE_STRUCT_STATFS_F_TYPE
 
 
 /* Define if we have sys/mount.h */
 /* Define if we have sys/mount.h */
-#undef HAVE_MOUNT_H
+#cmakedefine HAVE_MOUNT_H
 
 
 /* Define if we have enabled pthread support */
 /* Define if we have enabled pthread support */
-#undef HAVE_PTHREAD
-
-/* If there is no socklen_t, define this for the netdb shim */
-#undef NEED_SOCKLEN_T_DEFINE
+#cmakedefine HAVE_PTHREAD
 
 
 /* Check for getresuid() function and similar ones */
 /* Check for getresuid() function and similar ones */
-#undef HAVE_GETRESUID
-#undef HAVE_GETRESGID
-#undef HAVE_SETRESUID
-#undef HAVE_SETRESGID
+#cmakedefine HAVE_GETRESUID
+#cmakedefine HAVE_GETRESGID
+#cmakedefine HAVE_SETRESUID
+#cmakedefine HAVE_SETRESGID
 
 
-/* Define to the size of the filesize containing structures */
-#undef _FILE_OFFSET_BITS
+/* Check for ptsname_r() */
+#cmakedefine HAVE_PTSNAME_R
 
 
 /* Define the arch name string */
 /* Define the arch name string */
-#undef COMMON_ARCH
+#define COMMON_ARCH "${COMMON_ARCH}"
 
 
 /* The package name string */
 /* The package name string */
-#undef PACKAGE
+#define PACKAGE "${PACKAGE}"
 
 
 /* The version number string */
 /* The version number string */
-#undef PACKAGE_VERSION
+#define PACKAGE_VERSION "${PACKAGE_VERSION}"
 
 
 /* The mail address to reach upstream */
 /* The mail address to reach upstream */
-#undef PACKAGE_MAIL
+#define PACKAGE_MAIL "${PACKAGE_MAIL}"
 
 
 #define APT_8_CLEANER_HEADERS
 #define APT_8_CLEANER_HEADERS
 #define APT_9_CLEANER_HEADERS
 #define APT_9_CLEANER_HEADERS

+ 16 - 0
CMake/run_if_exists.sh

@@ -0,0 +1,16 @@
+#!/bin/sh
+# Small helper for running a command
+out=""
+if [ "$1" = "--stdout" ]; then
+    out="$2"
+    shift 2
+fi
+
+if [ -e "$1" ]; then
+    shift
+    if [ "$out" ]; then
+        exec "$@" > $out
+    else
+        exec "$@"
+    fi
+fi

buildlib/statvfs.h.in → CMake/statvfs.h.in


+ 8 - 0
CMake/vendor_substitute.cmake

@@ -0,0 +1,8 @@
+file(READ ${IN} input)
+foreach(variable ${VARS})
+    execute_process(COMMAND ${PROJECT_SOURCE_DIR}/vendor/getinfo
+                            --vendor ${CURRENT_VENDOR} ${variable}
+                    OUTPUT_VARIABLE value OUTPUT_STRIP_TRAILING_WHITESPACE)
+    string(REPLACE "&${variable};" "${value}" input "${input}")
+endforeach()
+file(WRITE ${OUT} "${input}")

+ 144 - 0
CMakeLists.txt

@@ -0,0 +1,144 @@
+# Copyright (C) 2009, 2016 Julian Andres Klode <jak@debian.org>.
+# Licensed under the same terms as APT; i.e. GPL 2 or later.
+
+# set minimum version
+project(apt)
+cmake_minimum_required(VERSION 3.4.0)
+
+enable_testing()
+
+option(WITH_DOC "Build documentation." ON)
+option(USE_NLS "Localisation support." ON)
+
+set(CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/CMake")
+
+# Work around bug in GNUInstallDirs
+if (EXISTS "/etc/debian_version")
+  set(CMAKE_INSTALL_LIBEXECDIR "lib")
+endif()
+
+# Include stuff
+include(Misc)
+include(Translations)
+include(CheckIncludeFiles)
+include(CheckFunctionExists)
+include(CheckStructHasMember)
+include(GNUInstallDirs)
+include(TestBigEndian)
+find_package(Threads)
+find_package(PkgConfig)
+
+# Set compiler flags
+set(CMAKE_CXX_STANDARD 11)
+set(CMAKE_CXX_STANDARD_REQUIRED ON)
+set(CMAKE_VISIBILITY_INLINES_HIDDEN 1)
+
+add_optional_compile_options(Wall)
+add_optional_compile_options(Wextra)
+add_optional_compile_options(Wcast-align)
+add_optional_compile_options(Wlogical-op)
+add_optional_compile_options(Wredundant-decls)
+add_optional_compile_options(Wmissing-declarations)
+add_optional_compile_options(Wunsafe-loop-optimizations)
+add_optional_compile_options(Wctor-dtor-privacy)
+add_optional_compile_options(Wdisabled-optimization)
+add_optional_compile_options(Winit-self)
+add_optional_compile_options(Wmissing-include-dirs)
+add_optional_compile_options(Wnoexcept)
+add_optional_compile_options(Wsign-promo)
+add_optional_compile_options(Wundef)
+
+# apt-ftparchive dependencies
+find_package(BerkeleyDB REQUIRED)
+if (BERKELEY_DB_FOUND)
+  set(HAVE_BDB 1)
+endif()
+
+
+# apt-transport-https dependencies
+find_package(CURL REQUIRED)
+if (CURL_FOUND)
+  set(HAVE_CURL 1)
+endif()
+
+# (De)Compressor libraries
+find_package(ZLIB REQUIRED)
+if (ZLIB_FOUND)
+  set(HAVE_ZLIB 1)
+endif()
+
+
+find_package(BZip2)
+if (BZIP2_FOUND)
+  set(HAVE_BZ2 1)
+endif()
+
+pkg_check_modules(LZMA liblzma)
+if (LZMA_FOUND)
+  set(HAVE_LZMA 1)
+endif()
+
+pkg_check_modules(LZ4 liblz4)
+if (LZ4_FOUND)
+  set(HAVE_LZ4 1)
+endif()
+
+# Mount()ing and stat()ing and friends
+
+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 @ONLY)
+endif()
+
+CHECK_STRUCT_HAS_MEMBER("struct statfs" f_type sys/vfs.h HAVE_STRUCT_STATFS_F_TYPE)
+
+# Other checks
+check_function_exists(getresuid HAVE_GETRESUID)
+check_function_exists(getresgid HAVE_GETRESGID)
+check_function_exists(setresuid HAVE_SETRESUID)
+check_function_exists(setresgid HAVE_SETRESGID)
+check_function_exists(ptsname_r HAVE_PTSNAME_R)
+check_function_exists(timegm HAVE_TIMEGM)
+test_big_endian(WORDS_BIGENDIAN)
+
+if (CMAKE_USE_PTHREADS_INIT)
+  set(HAVE_PTHREAD 1)
+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~pre3+cmake2")
+
+if (NOT DEFINED COMMON_ARCH)
+  execute_process(COMMAND dpkg-architecture -qDEB_HOST_ARCH
+                  OUTPUT_VARIABLE COMMON_ARCH OUTPUT_STRIP_TRAILING_WHITESPACE)
+endif()
+
+# 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)
+add_subdirectory(apt-private)
+add_subdirectory(apt-inst)
+add_subdirectory(cmdline)
+add_subdirectory(doc)
+add_subdirectory(dselect)
+add_subdirectory(ftparchive)
+add_subdirectory(methods)
+add_subdirectory(po)
+add_subdirectory(test)
+
+# Link update-po4a into the update-po target
+add_dependencies(update-po update-po4a)

+ 0 - 84
COMPILING

@@ -1,84 +0,0 @@
-General Information
-~~~~~~~~~~~~~~~~~~~
-To compile this you need a couple things
-  - A working POSIX system with working POSIX gcc, g++, make (GNU),
-    ar, sh, awk and sed in the path
-  - GNU Make 3.74 or so, -- normal UNIX make will NOT work
-    * Note 3.77 is broken.    
-  - A working ANSI C++ compiler, this is not g++ 2.7.* 
-    g++ 2.8 works OK and newer egcs work well also. Nobody has tried it
-    on other compilers :< You will need a properly working STL as well.
-  - A C library with the usual POSIX functions and a BSD socket layer. 
-    If your OS conforms to the Single Unix Spec then you are fine:
-      http://www.opengroup.org/onlinepubs/7908799/index.html      
-  - Refer to the Build-Depends information in debian/control for
-    additional requirements (some of which are Debian-specific)
-
-** NOTICE **
-The C++ global constructors do not link correctly when using non-shared
-libraries. This is probably the correct behavior of the linker, but I have
-not yet had time to devise a work around for it. The correct thing to 
-do is add a reference to debSystem in apt-pkg/init.cc, 
-assert(&debSystem == 0) would be fine for instance.
-
-Guidelines
-~~~~~~~~~~
-I am not interested in making 'ultra portable code'. I will accept patches
-to make the code that already exists conform more to SUS or POSIX, but
-I don't really care if your not-SUS OS doesn't work. It is simply too
-much work to maintain patches for dysfunctional OSs. I highly suggest you
-contact your vendor and express interest in a conforming C library.
-
-That said, there are lots of finicky problems that must be dealt with even
-between the supported OS's. Primarily the path I choose to take is to put
-a shim header file in build/include that transparently adds the required 
-functionality. Patches to make autoconf detect these cases and generate the 
-required shims are OK.
-
-Current shims:
-  * sys/statvfs.h to convert from BSD/old-glibc statfs to SUS statvfs
-  * rfc2553 hostname resolution (methods/rfc*), shims to normal gethostbyname.
-    The more adventurous could steal the KAME IPv6 enabled resolvers for those
-    OS's with IPv6 support but no rfc2553 (why?)
-  * define _XOPEN_EXTENDED_SOURCE to bring in h_errno on HP-UX
-  * socklen_t shim in netdb.h if the OS does not have socklen_t
-  
-The only completely non-shimmed OS is Linux with glibc2.1, glibc2.0 requires
-the first three shims.
-
-Platform Notes
-~~~~~~~~~~~~~~
-Debian GNU Linux 2.1 'slink'
-Debian GNU Linux 'potato'
-Debian GNU Linux 'woody'
-  * All Archs
-  - Works flawlessly
-  - You will want to have docbook-xml and docbook2man installed to get
-    best results.
-  - No IPv6 Support in glibc's < 2.1.
-
-Sun Solaris
-  SunOS cab101 5.7 Generic_106541-04 sun4u sparc
-  SunOS csu201 5.8 Generic_108528-04 sun4u sparc  
-  - Works fine
-  - Note, no IPv6 Support, OS lacks RFC 2553 hostname resolution
-
-OpenBSD
-  OpenBSD gsb086 2.5 CMPUT#0 i386 unknown
-  OpenBSD csu101 2.7 CMPUT#1 i386 unknown  
-  - OS needs 'ranlib' to generate the symbol table after 'ar'.. (not using
-    GNU ar with the gnu tool chain :<)
-  - '2.5' does not have RFC 2553 hostname resolution, but '2.7' does
-  - Testing on '2.7' suggests the OS has a bug in its handling of 
-    ftruncate on files that have been written via mmap. It fills the page 
-    that crosses the truncation boundary with 0's. 
-    
-HP-UX
-  HP-UX nyquist B.10.20 C 9000/780 2016574337 32-user license
-  - Evil OS, does not conform very well to SUS
-     1) snprintf exists but is not prototyped, ignore spurious warnings
-     2) No socklen_t
-     3) Requires -D_XOPEN_SOURCE_EXTENDED for h_errno
-    configure should fix the last two (see above)
-  - Note, no IPv6 Support, OS lacks RFC 2553 hostname resolution
-    

+ 0 - 53
Makefile

@@ -1,53 +0,0 @@
-# -*- make -*-
-
-# This is the top level make file for APT, it recurses to each lower
-# level make file and runs it with the proper target
-ifndef NOISY
-.SILENT:
-endif
-
-.PHONY: default
-default: startup all
-
-.PHONY: fast headers library clean veryclean all binary program doc test update-po
-all headers library clean veryclean binary program doc manpages docbook test update-po startup dirs:
-	$(MAKE) -C vendor $@
-	$(MAKE) -C apt-pkg $@
-	$(MAKE) -C apt-inst $@
-	$(MAKE) -C apt-private $@
-	$(MAKE) -C methods $@
-	$(MAKE) -C cmdline $@
-	$(MAKE) -C ftparchive $@
-	$(MAKE) -C dselect $@
-	$(MAKE) -C doc $@
-	$(MAKE) -C po $@
-	# FIXME: -C test has issue swith parallel builds, investigate!
-	-$(MAKE) -C test $@
-
-fast:
-	$(MAKE) -C vendor all
-	$(MAKE) -C apt-pkg all
-	$(MAKE) -C apt-inst all
-	$(MAKE) -C apt-private all
-	$(MAKE) -C methods all
-	$(MAKE) -C cmdline all
-	$(MAKE) -C ftparchive all
-	$(MAKE) -C test all
-
-all headers library clean veryclean binary program doc manpages docbook test update-po: startup dirs
-
-dirs: startup
-
-# Some very common aliases
-.PHONY: maintainer-clean dist-clean distclean pristine sanity
-maintainer-clean dist-clean distclean pristine sanity: veryclean
-veryclean: clean
-
-# The startup target builds the necessary configure scripts. It should
-# be used after a CVS checkout.
-CONVERTED=environment.mak include/config.h include/apti18n.h build/doc/Doxyfile makefile
-include buildlib/configure.mak
-$(BUILDDIR)/include/config.h: buildlib/config.h.in
-$(BUILDDIR)/include/apti18n.h: buildlib/apti18n.h.in
-$(BUILDDIR)/environment.mak: buildlib/environment.mak.in
-$(BUILDDIR)/makefile: buildlib/makefile.in

+ 0 - 112
README.make

@@ -1,112 +0,0 @@
-The Make System
-~~~ ~~~~ ~~~~~~
-To compile this program you require GNU Make. In fact you probably need
-GNU Make 3.76.1 or newer. The makefiles contained make use of many 
-GNU Make specific features and will not run on other makes.
-
-The make system has a number of interesting properties that are not found
-in other systems such as automake or the GNU makefile standards. In
-general some semblance of expectedness is kept so as not to be too
-surprising. Basically the following will work as expected:
-
-   ./configure
-   make
- or
-   cd build
-   ../configure
-   make
-
-There are a number of other things that are possible that may make software
-development and software packaging simpler. The first of these is the
-environment.mak file. When configure is run it creates an environment.mak
-file in the build directory. This contains -all- configurable parameters
-for all of the make files in all of the subdirectories. Changing one
-of these parameters will have an immediate effect. The use of makefile.in 
-and configure substitutions across build makefiles is not used at all.
-
-Furthermore, the make system runs with a current directory equal to the
-source directory regardless of the destination directory. This means
-#include "" and #include <> work as expected and more importantly
-running 'make' in the source directory will work as expected. The
-environment variable or make parameter 'BUILD' sets the build directory.
-It may be an absolute path or a path relative to the top level directory.
-By default build-arch/ then build/ will be used with a fall back to ./ This 
-means you can get all the advantages of a build directory without having to
-cd into it to edit your source code!
-
-The make system also performs dependency generation on the fly as the
-compiler runs. This is extremely fast and accurate. There is however
-one failure condition that occurs when a header file is erased. In
-this case you should run make clean to purge the .o and .d files to
-rebuild.
-
-The final significant deviation from normal make practices is 
-in how the build directory is managed. It is not nearly a mirror of
-the source directory but is logically divided in the following manner
-   bin/
-     methods/
-   doc/
-     examples/
-   include/
-     apt-pkg/
-   obj/
-     apt-pkg/
-     cmdline/
-     [...]
-Only .o and .d files are placed in the obj/ subdirectory. The final compiled
-binaries are placed in bin, published headers for inter-component linking
-are placed in include/ and documentation is generated into doc/. This means
-all runnable programs are within the bin/ directory, a huge benefit for
-debugging inter-program relationships. The .so files are also placed in
-bin/ for simplicity.
-
-By default make is put into silent mode. During operation there should be
-no shell or compiler messages only status messages from the makefiles, 
-if any pop up that indicates there may be a problem with your environment.
-For debugging you can disable this by setting NOISY=1, ala
-   make NOISY=1
-
-Using the makefiles
-~~~~~ ~~~ ~~~~~~~~~
-The makefiles for the components are really simple. The complexity is hidden
-within the buildlib/ directory. Each makefile defines a set of make variables
-for the bit it is going to make then includes a makefile fragment from
-the buildlib/. This fragment generates the necessary rules based on the
-originally defined variables. This process can be repeated as many times as
-necessary for as many programs or libraries as are in the directory.
-
-Many of the make fragments have some useful properties involving sub
-directories and other interesting features. They are more completely 
-described in the fragment code in buildlib. Some tips on writing fragments
-are included in buildlib/defaults.mak
-
-The fragments are NEVER processed by configure, so if you make changes to 
-them they will have an immediate effect.
-
-Autoconf
-~~~~~~~~
-Straight out of CVS you have to initialize autoconf. This requires 
-automake (I really don't know why) and autoconf and requires doing 
-  aclocal -I buildlib
-  autoconf
-[Alternatively you can run make startup in the top level build dir]
-
-Autoconf is configured to do some basic system probes for optional and 
-required functionality and generate an environment.mak and include/config.h 
-from it's findings. It will then write a 'makefile' and run make dirs to 
-create the output directory tree.
-
-It is not my belief that autoconf should be used to generate substantial 
-source code markup to escape OS problems. If an OS problem does crop up 
-it can likely be corrected by installing the correct files into the 
-build include/ dir and perhaps writing some replacement code and 
-linking it in. To the fullest extent possible the source code should conform
-to standards and not cater to broken systems.
-
-Autoconf will also write a makefile into the top level of the build dir, 
-this simply acts as a wrapper to the main top level make in the source tree.
-There is one big warning, you can't use both this make file and the
-ones in the top level tree. Make is not able to resolve rules that 
-go to the same file through different paths and this will confuse the
-depends mechanism. I recommend always using the makefiles in the
-source directory and exporting BUILD.

+ 15 - 10
README.md

@@ -45,12 +45,21 @@ are encouraged to do as well.
 
 
 ### Coding
 ### Coding
 
 
-APT uses its own autoconf based build system, see [README.make](http://anonscm.debian.org/gitweb/?p=apt/apt.git;a=blob;f=README.make)
-for the glory details, but to get started, just run:
+APT uses cmake. To start building, you need to run
 
 
-	$ make
+  cmake <path to source directory>
 
 
-from a fresh git checkout.
+from a build directory. For example, if you want to build in the source tree,
+run:
+
+  cmake .
+
+Then you can use make as you normally would (pass -j <count> to perform <count>
+jobs in parallel).
+
+You can also use the Ninja generator of cmake, to do that pass
+  -G Ninja
+to the cmake invocation, and then use ninja instead of make.
 
 
 The source code uses in most parts a relatively uncommon indent convention,
 The source code uses in most parts a relatively uncommon indent convention,
 namely 3 spaces with 8 space tab (see [doc/style.txt](http://anonscm.debian.org/gitweb/?p=apt/apt.git;a=blob;f=doc/style.txt) for more on this).
 namely 3 spaces with 8 space tab (see [doc/style.txt](http://anonscm.debian.org/gitweb/?p=apt/apt.git;a=blob;f=doc/style.txt) for more on this).
@@ -86,12 +95,8 @@ Testing
 
 
 ### Manual execution
 ### Manual execution
 
 
-When you make changes and want to run them manually, make sure your
-`$LD_LIBRARY_PATH` points to the libraries you have built, e.g. via:
-
-	$ export LD_LIBRARY_PATH=$(pwd)/build/bin
-	$ ./build/bin/apt-get moo
-
+When you make changes and want to run them manually, you can just do so. CMake
+automatically inserts an rpath so the binaries find the correct libraries.
 
 
 ### Integration tests
 ### Integration tests
 
 

+ 2 - 1
abicheck/apt_build.xml.in

@@ -7,5 +7,6 @@
  </headers>
  </headers>
    
    
  <libs>
  <libs>
-  @build_path@/bin/
+  @build_path@/apt-pkg/
+  @build_path@/apt-inst/
  </libs>
  </libs>

+ 1 - 1
abicheck/run_abi_test

@@ -8,7 +8,7 @@ if [ ! -d ../build ]; then
 	exit 1
 	exit 1
 fi
 fi
 
 
-if command -v abi-compliance-checker 2>/dev/null >&2; then
+if ! command -v abi-compliance-checker 2>/dev/null >&2; then
 	echo "Please install the 'abi-compliance-checker' package"
 	echo "Please install the 'abi-compliance-checker' package"
 	exit 1
 	exit 1
 fi
 fi

+ 26 - 0
apt-inst/CMakeLists.txt

@@ -0,0 +1,26 @@
+# Include apt-pkg directly, as some files have #include <system.h>
+include_directories(${PROJECT_BINARY_DIR}/include/apt-pkg)
+
+# Set the version of the library
+set(MAJOR 2.0)
+set(MINOR 0)
+set(APT_INST_MAJOR ${MAJOR} PARENT_SCOPE)
+
+# Definition of the C++ files used to build the library
+file(GLOB_RECURSE library "*.cc")
+file(GLOB_RECURSE headers "*.h")
+
+# Create a library using the C++ files
+add_library(apt-inst SHARED ${library})
+
+# Link the library and set the SONAME
+target_link_libraries(apt-inst PUBLIC apt-pkg ${CMAKE_THREAD_LIBS_INIT})
+target_link_libraries(apt-inst PRIVATE ${CMAKE_THREAD_LIBS_INIT})
+set_target_properties(apt-inst PROPERTIES VERSION ${MAJOR}.${MINOR})
+set_target_properties(apt-inst PROPERTIES SOVERSION ${MAJOR})
+add_version_script(apt-inst)
+
+# Install the library and the headers
+install(TARGETS apt-inst LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})
+install(FILES ${headers} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/apt-pkg)
+flatify(${PROJECT_BINARY_DIR}/include/apt-pkg/ "${headers}")

+ 0 - 26
apt-inst/makefile

@@ -1,26 +0,0 @@
-# -*- make -*-
-BASE=..
-SUBDIR=apt-inst
-
-# Header location
-SUBDIRS = contrib deb
-HEADER_TARGETDIRS = apt-pkg
-
-# Bring in the default rules
-include ../buildlib/defaults.mak
-
-# The library name and version (indirectly used from init.h)
-include ../buildlib/libversion.mak
-
-# The library name
-LIBRARY=apt-inst
-MAJOR=2.0
-MINOR=0
-SLIBS=$(PTHREADLIB) -lapt-pkg
-APT_DOMAIN:=libapt-inst$(MAJOR)
-LIBRARYDEPENDS=$(LIB)/libapt-pkg.so
-
-SOURCE = $(sort $(wildcard *.cc */*.cc))
-HEADERS = $(addprefix apt-pkg/,$(notdir $(sort $(wildcard *.h */*.h))))
-
-include $(LIBRARY_H)

+ 46 - 0
apt-pkg/CMakeLists.txt

@@ -0,0 +1,46 @@
+# Include apt-pkg directly, as some files have #include <system.h>
+include_directories(${PROJECT_BINARY_DIR}/include/apt-pkg)
+
+add_definitions("-DAPT_PKG_EXPOSE_STRING_VIEW")
+
+# Set the version of the library
+execute_process(COMMAND awk -v ORS=. "/^\#define APT_PKG_M/ {print \$3}"
+                COMMAND sed "s/\\.\$//"
+                INPUT_FILE ${CMAKE_CURRENT_SOURCE_DIR}/contrib/macros.h
+                OUTPUT_VARIABLE MAJOR OUTPUT_STRIP_TRAILING_WHITESPACE)
+execute_process(COMMAND grep "^#define APT_PKG_RELEASE"
+                COMMAND cut -d " " -f 3
+                INPUT_FILE ${CMAKE_CURRENT_SOURCE_DIR}/contrib/macros.h
+                OUTPUT_VARIABLE MINOR OUTPUT_STRIP_TRAILING_WHITESPACE)
+
+message(STATUS "Building libapt-pkg ${MAJOR} (release ${MINOR})")
+set(APT_PKG_MAJOR ${MAJOR} PARENT_SCOPE) # exporting for methods/CMakeLists.txt
+
+# Definition of the C++ files used to build the library
+file(GLOB_RECURSE library "*.cc")
+file(GLOB_RECURSE headers "*.h")
+
+# Create a library using the C++ files
+add_library(apt-pkg SHARED ${library})
+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}
+                                   ${LZMA_INCLUDE_DIRS}
+                                   ${LZ4_INCLUDE_DIRS})
+target_link_libraries(apt-pkg
+                      PRIVATE -lutil -ldl -lresolv
+                             ${CMAKE_THREAD_LIBS_INIT}
+                             ${ZLIB_LIBRARIES}
+                             ${BZIP2_LIBRARIES}
+                             ${LZMA_LIBRARIES}
+                             ${LZ4_LIBRARIES})
+set_target_properties(apt-pkg PROPERTIES VERSION ${MAJOR}.${MINOR})
+set_target_properties(apt-pkg PROPERTIES SOVERSION ${MAJOR})
+add_version_script(apt-pkg)
+
+# Install the library and the header files
+install(TARGETS apt-pkg LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})
+install(FILES ${headers} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/apt-pkg)
+flatify(${PROJECT_BINARY_DIR}/include/apt-pkg/ "${headers}")

+ 1 - 1
apt-pkg/deb/dpkgpm.cc

@@ -1094,7 +1094,7 @@ void pkgDPkgPM::StartPtyMagic()						/*{{{*/
       _error->Errno("unlockpt", "Unlocking the slave of master fd %d failed!", d->master);
       _error->Errno("unlockpt", "Unlocking the slave of master fd %d failed!", d->master);
    else
    else
    {
    {
-#ifdef HAVE_PTS_NAME_R
+#ifdef HAVE_PTSNAME_R
       char slave_name[64];	// 64 is used by bionic
       char slave_name[64];	// 64 is used by bionic
       if (ptsname_r(d->master, slave_name, sizeof(slave_name)) != 0)
       if (ptsname_r(d->master, slave_name, sizeof(slave_name)) != 0)
 #else
 #else

+ 0 - 37
apt-pkg/makefile

@@ -1,37 +0,0 @@
-# -*- make -*-
-BASE=..
-SUBDIR=apt-pkg
-
-# Header location
-SUBDIRS = deb edsp contrib
-HEADER_TARGETDIRS = apt-pkg
-
-# Bring in the default rules
-include ../buildlib/defaults.mak
-
-# The library name and version (indirectly used from init.h)
-include ../buildlib/libversion.mak
-
-CPPFLAGS+=-DAPT_PKG_EXPOSE_STRING_VIEW
-LIBRARY=apt-pkg
-MAJOR=$(LIBAPTPKG_MAJOR)
-MINOR=$(LIBAPTPKG_RELEASE)
-SLIBS=$(PTHREADLIB) $(INTLLIBS) -lutil -ldl -lresolv
-ifeq ($(HAVE_ZLIB),yes)
-SLIBS+= -lz
-endif
-ifeq ($(HAVE_BZ2),yes)
-SLIBS+= -lbz2
-endif
-ifeq ($(HAVE_LZMA),yes)
-SLIBS+= -llzma
-endif
-ifeq ($(HAVE_LZ4),yes)
-SLIBS+= -llz4
-endif
-APT_DOMAIN:=libapt-pkg$(LIBAPTPKG_MAJOR)
-
-SOURCE = $(sort $(wildcard *.cc */*.cc))
-HEADERS = $(addprefix apt-pkg/,$(notdir $(sort $(wildcard *.h */*.h))))
-
-include $(LIBRARY_H)

+ 23 - 0
apt-private/CMakeLists.txt

@@ -0,0 +1,23 @@
+# Set the version of the library
+set(MAJOR 0.0)
+set(MINOR 0)
+
+# Definition of the C++ files used to build the library
+file(GLOB_RECURSE library "*.cc")
+file(GLOB_RECURSE headers "*.h")
+
+# Create a library using the C++ files
+add_library(apt-private SHARED ${library})
+
+# Link the library and set the SONAME
+target_link_libraries(apt-private PUBLIC apt-pkg)
+set_target_properties(apt-private PROPERTIES VERSION ${MAJOR}.${MINOR})
+set_target_properties(apt-private PROPERTIES SOVERSION ${MAJOR})
+add_version_script(apt-private)
+
+# Install the library and the headers
+install(TARGETS apt-private
+        LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
+        NAMELINK_SKIP)
+
+flatify(${PROJECT_BINARY_DIR}/include/apt-private/ "${headers}")

+ 0 - 21
apt-private/makefile

@@ -1,21 +0,0 @@
-# -*- make -*-
-BASE=..
-SUBDIR=apt-private
-
-# Header location
-HEADER_TARGETDIRS = apt-private
-
-# Bring in the default rules
-include ../buildlib/defaults.mak
-
-# The library name
-LIBRARY=apt-private
-MAJOR=0.0
-MINOR=0
-SLIBS=$(PTHREADLIB) -lapt-pkg
-CXXFLAGS += -fvisibility=hidden -fvisibility-inlines-hidden
-
-SOURCE = $(sort $(wildcard *.cc))
-HEADERS = $(addprefix apt-private/,$(sort $(wildcard *.h)))
-
-include $(LIBRARY_H)

+ 0 - 2
apt-private/private-cachefile.h

@@ -9,8 +9,6 @@
 #include <apt-pkg/sourcelist.h>
 #include <apt-pkg/sourcelist.h>
 #include <apt-pkg/cacheset.h>
 #include <apt-pkg/cacheset.h>
 
 
-#include <apti18n.h>
-
 // class CacheFile - Cover class for some dependency cache functions	/*{{{*/
 // class CacheFile - Cover class for some dependency cache functions	/*{{{*/
 class APT_PUBLIC CacheFile : public pkgCacheFile
 class APT_PUBLIC CacheFile : public pkgCacheFile
 {
 {

+ 0 - 2
apt-private/private-cacheset.h

@@ -11,8 +11,6 @@
 #include <set>
 #include <set>
 #include <string>
 #include <string>
 
 
-#include <apti18n.h>
-
 class OpProgress;
 class OpProgress;
 
 
 class VerIteratorWithCaching
 class VerIteratorWithCaching

+ 0 - 62
buildlib/configure.mak

@@ -1,62 +0,0 @@
-# -*- make -*-
-
-# This make fragment is included by the toplevel make to handle configure
-# and setup. It defines a target called startup that when run will init
-# the build directory, generate configure from configure.ac, create aclocal
-# and has rules to run config.status should one of the .in files change.
-
-# Input
-#  BUILDDIR - The build directory
-#  CONVERTED - List of files output by configure $(BUILD) is prepended
-#              The caller must provide depends for these files
-# It would be a fairly good idea to run this after a cvs checkout.
-BUILDDIR=build
-
-.PHONY: startup missing-config-files
-startup: $(BUILDDIR)/configure-stamp $(addprefix $(BUILDDIR)/,$(CONVERTED))
-
-# use the files provided from the system instead of carry around
-# and use (most of the time outdated) copycats
-ifeq (file-okay,$(shell test -r buildlib/config.sub && echo 'file-okay'))
-buildlib/config.sub:
-else
-   ifeq (file-okay,$(shell test -r /usr/share/misc/config.sub && echo 'file-okay'))
-buildlib/config.sub:
-	ln -sf /usr/share/misc/config.sub buildlib/config.sub
-   else
-buildlib/config.sub: missing-config-files
-   endif
-endif
-
-ifeq (file-okay,$(shell test -r buildlib/config.guess && echo 'file-okay'))
-buildlib/config.guess:
-else
-   ifeq (file-okay,$(shell test -r /usr/share/misc/config.guess && echo 'file-okay'))
-buildlib/config.guess:
-	ln -sf /usr/share/misc/config.guess buildlib/config.guess
-   else
-buildlib/config.guess: missing-config-files
-   endif
-endif
-
-missing-config-files:
-	@echo "APT needs 'config.guess' and 'config.sub' in buildlib/ for configuration."
-	@echo "On Debian systems these are available in the 'autotools-dev' package."
-	@echo
-	@echo "The latest versions can be acquired from the upstream git repository:"
-	@echo "http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD"
-	@echo "http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD"
-	exit 100
-
-configure: aclocal.m4 configure.ac
-	autoconf
-
-aclocal.m4: $(wildcard buildlib/*.m4)
-	aclocal -I buildlib
-
-$(BUILDDIR)/configure-stamp: configure buildlib/config.guess buildlib/config.sub
-	/usr/bin/test -e '$(BUILDDIR)' || mkdir '$(BUILDDIR)'
-	(HERE="`pwd`"; cd '$(BUILDDIR)' && "$$HERE/configure")
-	touch '$(BUILDDIR)/configure-stamp'
-
-$(addprefix $(BUILDDIR)/,$(CONVERTED)): $(BUILDDIR)/configure-stamp

+ 0 - 31
buildlib/copy.mak

@@ -1,31 +0,0 @@
-# -*- make -*-
-
-# This installs arbitrary files into a directory
-
-# Input
-# $(SOURCE) - The documents to use
-# $(TO)     - The directory to put them in
-# $(TARGET) - The global target to add the local target as a dependency
-#             to.
-# All output is writtin to files in the build/$(TO) directory
-
-# See defaults.mak for information about LOCAL
-
-# Some local definitions
-LOCAL := copy-$(firstword $(SOURCE))
-$(LOCAL)-LIST := $(addprefix $(TO)/,$(SOURCE))
-
-# Install generation hooks
-$(TARGET): $($(LOCAL)-LIST)
-veryclean: veryclean/$(LOCAL)
-
-MKDIRS += $(dir $($(LOCAL)-LIST))
-
-$($(LOCAL)-LIST) : $(TO)/% : %
-	echo Installing $< to $(@D)
-	cp $< $(@D)
-
-# Clean rule
-.PHONY: veryclean/$(LOCAL)
-veryclean/$(LOCAL):
-	-rm -rf $($(@F)-LIST)

+ 0 - 185
buildlib/defaults.mak

@@ -1,185 +0,0 @@
-# -*- make -*-
-
-# This file configures the default environment for the make system
-# The way it works is fairly simple, each module is defined in it's
-# own *.mak file. It expects a set of variables to be set to values
-# for it to operate as expected. When included the module generates
-# the requested rules based on the contents of its control variables.
-
-# This works out very well and allows a good degree of flexibility.
-# To accommodate some of the features we introduce the concept of 
-# local variables. To do this we use the 'Computed Names' feature of
-# gmake. Each module declares a LOCAL scope and access it with,
-#   $($(LOCAL)-VAR)
-# This works very well but it is important to remember that within
-# a rule the LOCAL var is unavailable, it will have to be constructed
-# from the information in the rule invocation. For stock rules like 
-# clean this is simple, we use a local clean rule called clean/$(LOCAL)
-# and then within the rule $(@F) gets back $(LOCAL)! Other rules will
-# have to use some other mechanism (filter perhaps?) The reason such
-# lengths are used is so that each directory can contain several 'instances'
-# of any given module. I notice that the very latest gmake has the concept
-# of local variables for rules. It is possible this feature in conjunction
-# with the generated names will provide a very powerful solution indeed!
-
-# A build directory is used by default, all generated items get put into
-# there. However unlike automake this is not done with a VPATH build
-# (vpath builds break the distinction between #include "" and #include <>)
-# but by explicitly setting the BUILD variable. Make is invoked from
-# within the source itself which is much more compatible with compilation
-# environments.
-ifndef NOISY
-.SILENT:
-endif
-
-# Search for the build directory
-ifdef BUILD
-BUILD_POSSIBLE := $(BUILD) $(BASE)/$(BUILD)
-else
-BUILD_POSSIBLE := $(BASE) $(BASE)/build-$(shell uname -m) $(BASE)/build
-endif
-
-BUILDX:= $(foreach i,$(BUILD_POSSIBLE),$(wildcard $(i)/environment.mak*))
-
-ifeq ($(words $(BUILDX)),0)
-
-# Check for a busted wildcard function. We use this function in several 
-# places, it must work.
-ifeq ($(words $(wildcard *)),0)
-error-all/environment.mak:
-	echo You have a broken version of GNU Make - upgrade.
-	error-out-and-die
-else
-error-all/environment.mak:
-	echo Can not find the build directory in $(BUILD_POSSIBLE) -- use BUILD=
-	error-out-and-die
-endif
-
-# Force include below to come to the error target
-BUILDX := error-all
-else
-BUILDX:= $(patsubst %/,%,$(firstword $(dir $(BUILDX))))
-endif
-
-override BUILD := $(BUILDX)
-
-# Base definitions
-INCLUDE := $(BUILD)/include
-BIN := $(BUILD)/bin
-LIB := $(BIN)
-OBJ := $(BUILD)/obj/$(SUBDIR)
-DEP := $(OBJ)
-DOC := $(BUILD)/docs
-PO := $(BUILD)/po
-LOCALE := $(BUILD)/locale
-PO_DOMAINS := $(BUILD)/po/domains
-
-# Module types
-LIBRARY_H = $(BASE)/buildlib/library.mak
-DOCBOOK_H = $(BASE)/buildlib/docbook.mak
-MANPAGE_H = $(BASE)/buildlib/manpage.mak
-PROGRAM_H = $(BASE)/buildlib/program.mak
-PYTHON_H = $(BASE)/buildlib/python.mak
-COPY_H = $(BASE)/buildlib/copy.mak
-PO4A_MANPAGE_H = $(BASE)/buildlib/po4a_manpage.mak
-FAIL_H = $(BASE)/buildlib/fail.mak
-PODOMAIN_H = $(BASE)/buildlib/podomain.mak
-
-include $(BUILD)/environment.mak
-
-ifdef STATICLIBS
-LIBRARY_H += $(BASE)/buildlib/staticlibrary.mak
-endif
-
-ifdef ONLYSTATICLIBS
-LIBRARY_H = $(BASE)/buildlib/staticlibrary.mak
-endif
-
-# Source location control
-# SUBDIRS specifies sub components of the module that
-# may be located in subdirectories of the source dir. 
-# This should be declared before including this file
-SUBDIRS+=
-
-# Header file control. 
-# TARGETDIRS indicates all of the locations that public headers 
-# will be published to.
-# This should be declared before including this file
-HEADER_TARGETDIRS+=
-
-# Options
-CPPFLAGS+= -I$(INCLUDE)
-LDFLAGS+= -L$(LIB)
-
-# Directors to create
-MKDIRS := $(BIN) 
-
-# Phony rules. Other things hook these by appending to the dependency
-# list
-.PHONY: headers library clean veryclean all binary program doc dirs
-.PHONY: maintainer-clean dist-clean distclean pristine sanity
-all: dirs binary doc
-binary: library program
-maintainer-clean dist-clean distclean pristine sanity: veryclean
-startup headers library clean veryclean program test update-po manpages docbook:
-
-veryclean:
-	echo Very Clean done for $(SUBDIR)
-clean:
-	echo Clean done for $(SUBDIR)
-dirs:
-	mkdir -p $(patsubst %/,%,$(sort $(MKDIRS)))
-
-# Header file control. We want all published interface headers to go
-# into the build directory from their source dirs. We setup some
-# search paths here
-vpath %.h $(SUBDIRS)
-$(INCLUDE)/%.h $(addprefix $(INCLUDE)/,$(addsuffix /%.h,$(HEADER_TARGETDIRS))) : %.h
-	cp $< $@
-
-# Dependency generation. We want to generate a .d file using gnu cpp.
-# For GNU systems the compiler can spit out a .d file while it is compiling,
-# this is specified with the INLINEDEPFLAG. Other systems might have a 
-# makedep program that can be called after compiling, that's illustrated
-# by the DEPFLAG case.
-# Compile rules are expected to call this macro after calling the compiler
-ifdef GCC3DEP
-DFILE = $(DEP)/$(basename $(@F)).d
-else
-DFILE = $(basename $(@F)).d
-endif
-ifdef INLINEDEPFLAG
- define DoDep
-	sed -e "1s/.*:/$(subst /,\\/,$@):/" $(DFILE) > $(DEP)/$(@F).d
-	#sed -e "1s/.*:/$(subst /,\\/,$@):/" $(DEP)/$(basename $(@F)).d > $(DEP)/$(@F).d
-	-rm -f $(basename $(@F)).d
- endef
-else
- ifdef DEPFLAG
-  define DoDep
-	$(CXX) $(DEPFLAG) $(CPPFLAGS) -o $@ $<
-	sed -e "1s/.*:/$(subst /,\\/,$@):/" $(basename $(@F)).d > $(DEP)/$(@F).d
-	-rm -f $(basename $(@F)).d
-  endef
- else
-  define DoDep
-  endef
- endif
-endif	
-
-# Automatic -j support
-ifeq ($(NUM_PROCS),1)
-  PARALLEL_RUN=no
-endif
-
-ifndef PARALLEL_RUN
- PARALLEL_RUN=yes
- export PARALLEL_RUN
- # handle recursion
- ifneq ($(NUM_PROCS),)
-  MAKEFLAGS += -j $(NUM_PROCS)
- endif
-endif
-
-# This makes sorting predictable
-export LC_COLLATE=C.UTF-8

+ 0 - 75
buildlib/docbook.mak

@@ -1,75 +0,0 @@
-# -*- make -*-
-
-# This processes DocBook XML to produce html and plain text output
-
-# Input
-# $(SOURCE) - The documents to use
-
-# All output is written to files in the build doc directory
-
-# See defaults.mak for information about LOCAL
-
-# Some local definitions
-LOCAL := docbook-$(firstword $(SOURCE))
-$(LOCAL)-HTML := $(addsuffix .html,$(addprefix $(DOC)/,$(basename $(SOURCE))))
-$(LOCAL)-TEXT := $(addsuffix .text,$(addprefix $(DOC)/,$(basename $(SOURCE))))
-INCLUDES = apt.ent apt-verbatim.ent apt-vendor.ent
-
-docbook:
-
-
-#---------
-
-# Rules to build HTML documentations
-ifdef XSLTPROC
-
-DOCBOOK_HTML_STYLESHEET := docbook-html-style.xsl
-
-# Install generation hooks
-docbook: $($(LOCAL)-HTML)
-veryclean: veryclean/html/$(LOCAL)
-
-vpath %.dbk $(SUBDIRS)
-vpath $(DOCBOOK_HTML_STYLESHEET) $(SUBDIRS)
-$(DOC)/%.html: %.dbk $(DOCBOOK_HTML_STYLESHEET) $(INCLUDES)
-	echo Creating html for $< to $@
-	-rm -rf $@
-	mkdir -p $@
-	$(DOCBOOK) \
-		--stringparam base.dir $@/ \
-		--stringparam l10n.gentext.default.language $(LC) \
-		$(<D)/$(DOCBOOK_HTML_STYLESHEET) $< || exit 199
-
-# Clean rule
-.PHONY: veryclean/html/$(LOCAL)
-veryclean/html/$(LOCAL):
-	-rm -rf $($(@F)-HTML)
-
-endif
-
-#---------
-
-# Rules to build Text documentations
-ifdef XSLTPROC
-
-DOCBOOK_TEXT_STYLESHEET := docbook-text-style.xsl
-
-# Install generation hooks
-docbook: $($(LOCAL)-TEXT)
-veryclean: veryclean/text/$(LOCAL)
-
-vpath %.dbk $(SUBDIRS)
-vpath $(DOCBOOK_TEXT_STYLESHEET) $(SUBDIRS)
-$(DOC)/%.text: %.dbk $(DOCBOOK_TEXT_STYLESHEET) $(INCLUDES)
-	echo Creating text for $< to $@
-	$(DOCBOOK) \
-		--stringparam l10n.gentext.default.language $(LC) \
-		$(<D)/$(DOCBOOK_TEXT_STYLESHEET) $< | \
-		LC_ALL=C.UTF-8 $(DOCBOOK2TEXT) > $@ || exit 198
-
-# Clean rule
-.PHONY: veryclean/text/$(LOCAL)
-veryclean/text/$(LOCAL):
-	-rm -rf $($(@F)-TEXT)
-
-endif

+ 0 - 85
buildlib/environment.mak.in

@@ -1,85 +0,0 @@
-# This file contains everything that autoconf guessed for your system.
-# if you want you can edit it, just don't re-run configure.
-
-PACKAGE = @PACKAGE@
-PACKAGE_VERSION = @PACKAGE_VERSION@
-PACKAGE_MAIL = @PACKAGE_MAIL@
-
-# C++ compiler options
-CC = @CC@
-CPPFLAGS+= @CPPFLAGS@ @DEFS@ -D_REENTRANT -D_FORTIFY_SOURCE=2
-CXX = @CXX@
-CXXSTD = -std=c++11
-CXXFLAGS+= @CXXFLAGS@ -Wall -Wextra
-CXXFLAGS+= -Wcast-align -Wlogical-op -Wredundant-decls -Wmissing-declarations -Wunsafe-loop-optimizations
-CXXFLAGS+= -Wctor-dtor-privacy -Wdisabled-optimization -Winit-self -Wmissing-include-dirs -Wnoexcept -Wsign-promo -Wundef
-# suggests methods which already have such an attribute
-#CXXFLAGS+= -Wsuggest-attribute=pure -Wsuggest-attribute=const -Wsuggest-attribute=noreturn
-# sanitize options to be enabled for testing
-#CXXFLAGS+= -fsanitize=address -fsanitize=undefined -fno-sanitize=vptr
-# a bit too pedantic to be run by default
-#CXXFLAGS+= -Wpedantic -Wno-long-long -Wno-vla -Wno-variadic-macros
-# hide inlines
-CXXFLAGS+= -fvisibility-inlines-hidden
-NUM_PROCS = @NUM_PROCS@
-
-# Linker stuff
-PICFLAGS+= -fPIC -DPIC
-LFLAGS+= @LDFLAGS@
-LEFLAGS+= 
-SOCKETLIBS:= @SOCKETLIBS@
-AR:=@AR@
-RANLIB:=@RANLIB@
-
-# Dep generation - this only works for gnu stuff
-GCC3DEP = @GCC3DEP@
-INLINEDEPFLAG = -MD
-
-DOXYGEN = @DOXYGEN@
-W3M = @W3M@
-
-# xsltproc for the man pages and documentation
-XSLTPROC := @XSLTPROC@
-
-# DocBook XML
-DOCBOOK = $(XSLTPROC) --nonet --novalid --xinclude
-DOCBOOK2TEXT = $(W3M) -o display_charset=UTF-8 -no-graph -T text/html \
-	-cols 78 -dump
-
-# po4a for the man pages
-PO4A := @PO4A@
-
-# Gettext settings
-GMSGFMT = @GMSGFMT@
-XGETTEXT = @XGETTEXT@
-MSGCOMM:=$(dir $(XGETTEXT))/msgcomm
-MSGMERGE:=$(dir $(XGETTEXT))/msgmerge
-BASH = @BASH@
-
-# Various library checks
-PTHREADLIB = @PTHREADLIB@
-PYTHONLIB = @PYTHONLIB@
-PYTHONVER = @PYTHONVER@
-PYTHONPREFIX = @PYTHONPREFIX@
-PYTHONEXECPREFIX = @PYTHONEXECPREFIX@
-PYTHONINCLUDE = @PYTHONINCLUDE@
-BDBLIB = @BDBLIB@
-INTLLIBS = @INTLLIBS@
-
-# Shim Headerfile control
-HAVE_STATVFS = @HAVE_STATVFS@
-HAVE_ZLIB = @HAVE_ZLIB@
-HAVE_BZ2 = @HAVE_BZ2@
-HAVE_LZMA = @HAVE_LZMA@
-HAVE_LZ4 = @HAVE_LZ4@
-NEED_SOCKLEN_T_DEFINE = @NEED_SOCKLEN_T_DEFINE@
-
-# Shared library things
-HOST_OS = @host_os@
-ifneq ($(words $(filter gnu% linux-gnu% kfreebsd-gnu% %-gnu,$(HOST_OS))),0)
-   SONAME_MAGIC=-Wl,-soname -Wl,
-   LFLAGS_SO=
-else
-   # Do not know how to create shared libraries here.
-   ONLYSTATICLIBS = yes
-endif

+ 0 - 20
buildlib/fail.mak

@@ -1,20 +0,0 @@
-# -*- make -*-
-
-# This prints a failure message but does not abort the make
-
-# Input
-# $(MESSAGE) - The message to show
-# $(PROGRAM) - The program/library/whatever.
-
-# See defaults.mak for information about LOCAL
-
-LOCAL := $(PROGRAM)
-$(LOCAL)-MSG := $(MESSAGE)
-
-# Install hooks
-program: $(PROGRAM)
-
-.PHONY: $(PROGRAM)
-$(PROGRAM) :
-	echo $($@-MSG)
-	

+ 0 - 250
buildlib/install-sh

@@ -1,250 +0,0 @@
-#! /bin/sh
-#
-# install - install a program, script, or datafile
-# This comes from X11R5 (mit/util/scripts/install.sh).
-#
-# Copyright 1991 by the Massachusetts Institute of Technology
-#
-# Permission to use, copy, modify, distribute, and sell this software and its
-# documentation for any purpose is hereby granted without fee, provided that
-# the above copyright notice appear in all copies and that both that
-# copyright notice and this permission notice appear in supporting
-# documentation, and that the name of M.I.T. not be used in advertising or
-# publicity pertaining to distribution of the software without specific,
-# written prior permission.  M.I.T. makes no representations about the
-# suitability of this software for any purpose.  It is provided "as is"
-# without express or implied warranty.
-#
-# Calling this script install-sh is preferred over install.sh, to prevent
-# `make' implicit rules from creating a file called install from it
-# when there is no Makefile.
-#
-# This script is compatible with the BSD install script, but was written
-# from scratch.  It can only install one file at a time, a restriction
-# shared with many OS's install programs.
-
-
-# set DOITPROG to echo to test this script
-
-# Don't use :- since 4.3BSD and earlier shells don't like it.
-doit="${DOITPROG-}"
-
-
-# put in absolute paths if you don't have them in your path; or use env. vars.
-
-mvprog="${MVPROG-mv}"
-cpprog="${CPPROG-cp}"
-chmodprog="${CHMODPROG-chmod}"
-chownprog="${CHOWNPROG-chown}"
-chgrpprog="${CHGRPPROG-chgrp}"
-stripprog="${STRIPPROG-strip}"
-rmprog="${RMPROG-rm}"
-mkdirprog="${MKDIRPROG-mkdir}"
-
-transformbasename=""
-transform_arg=""
-instcmd="$mvprog"
-chmodcmd="$chmodprog 0755"
-chowncmd=""
-chgrpcmd=""
-stripcmd=""
-rmcmd="$rmprog -f"
-mvcmd="$mvprog"
-src=""
-dst=""
-dir_arg=""
-
-while [ x"$1" != x ]; do
-    case $1 in
-	-c) instcmd="$cpprog"
-	    shift
-	    continue;;
-
-	-d) dir_arg=true
-	    shift
-	    continue;;
-
-	-m) chmodcmd="$chmodprog $2"
-	    shift
-	    shift
-	    continue;;
-
-	-o) chowncmd="$chownprog $2"
-	    shift
-	    shift
-	    continue;;
-
-	-g) chgrpcmd="$chgrpprog $2"
-	    shift
-	    shift
-	    continue;;
-
-	-s) stripcmd="$stripprog"
-	    shift
-	    continue;;
-
-	-t=*) transformarg=`echo $1 | sed 's/-t=//'`
-	    shift
-	    continue;;
-
-	-b=*) transformbasename=`echo $1 | sed 's/-b=//'`
-	    shift
-	    continue;;
-
-	*)  if [ x"$src" = x ]
-	    then
-		src=$1
-	    else
-		# this colon is to work around a 386BSD /bin/sh bug
-		:
-		dst=$1
-	    fi
-	    shift
-	    continue;;
-    esac
-done
-
-if [ x"$src" = x ]
-then
-	echo "install:	no input file specified"
-	exit 1
-else
-	true
-fi
-
-if [ x"$dir_arg" != x ]; then
-	dst=$src
-	src=""
-	
-	if [ -d $dst ]; then
-		instcmd=:
-	else
-		instcmd=mkdir
-	fi
-else
-
-# Waiting for this to be detected by the "$instcmd $src $dsttmp" command
-# might cause directories to be created, which would be especially bad 
-# if $src (and thus $dsttmp) contains '*'.
-
-	if [ -f $src -o -d $src ]
-	then
-		true
-	else
-		echo "install:  $src does not exist"
-		exit 1
-	fi
-	
-	if [ x"$dst" = x ]
-	then
-		echo "install:	no destination specified"
-		exit 1
-	else
-		true
-	fi
-
-# If destination is a directory, append the input filename; if your system
-# does not like double slashes in filenames, you may need to add some logic
-
-	if [ -d $dst ]
-	then
-		dst="$dst"/`basename $src`
-	else
-		true
-	fi
-fi
-
-## this sed command emulates the dirname command
-dstdir=`echo $dst | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'`
-
-# Make sure that the destination directory exists.
-#  this part is taken from Noah Friedman's mkinstalldirs script
-
-# Skip lots of stat calls in the usual case.
-if [ ! -d "$dstdir" ]; then
-defaultIFS='	
-'
-IFS="${IFS-${defaultIFS}}"
-
-oIFS="${IFS}"
-# Some sh's can't handle IFS=/ for some reason.
-IFS='%'
-set - `echo ${dstdir} | sed -e 's@/@%@g' -e 's@^%@/@'`
-IFS="${oIFS}"
-
-pathcomp=''
-
-while [ $# -ne 0 ] ; do
-	pathcomp="${pathcomp}${1}"
-	shift
-
-	if [ ! -d "${pathcomp}" ] ;
-        then
-		$mkdirprog "${pathcomp}"
-	else
-		true
-	fi
-
-	pathcomp="${pathcomp}/"
-done
-fi
-
-if [ x"$dir_arg" != x ]
-then
-	$doit $instcmd $dst &&
-
-	if [ x"$chowncmd" != x ]; then $doit $chowncmd $dst; else true ; fi &&
-	if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dst; else true ; fi &&
-	if [ x"$stripcmd" != x ]; then $doit $stripcmd $dst; else true ; fi &&
-	if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dst; else true ; fi
-else
-
-# If we're going to rename the final executable, determine the name now.
-
-	if [ x"$transformarg" = x ] 
-	then
-		dstfile=`basename $dst`
-	else
-		dstfile=`basename $dst $transformbasename | 
-			sed $transformarg`$transformbasename
-	fi
-
-# don't allow the sed command to completely eliminate the filename
-
-	if [ x"$dstfile" = x ] 
-	then
-		dstfile=`basename $dst`
-	else
-		true
-	fi
-
-# Make a temp file name in the proper directory.
-
-	dsttmp=$dstdir/#inst.$$#
-
-# Move or copy the file name to the temp name
-
-	$doit $instcmd $src $dsttmp &&
-
-	trap "rm -f ${dsttmp}" 0 &&
-
-# and set any options; do chmod last to preserve setuid bits
-
-# If any of these fail, we abort the whole thing.  If we want to
-# ignore errors from any of these, just make sure not to ignore
-# errors from the above "$doit $instcmd $src $dsttmp" command.
-
-	if [ x"$chowncmd" != x ]; then $doit $chowncmd $dsttmp; else true;fi &&
-	if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dsttmp; else true;fi &&
-	if [ x"$stripcmd" != x ]; then $doit $stripcmd $dsttmp; else true;fi &&
-	if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dsttmp; else true;fi &&
-
-# Now rename the file to the real destination.
-
-	$doit $rmcmd -f $dstdir/$dstfile &&
-	$doit $mvcmd $dsttmp $dstdir/$dstfile 
-
-fi &&
-
-
-exit 0

+ 0 - 77
buildlib/library.mak

@@ -1,77 +0,0 @@
-# -*- make -*-
-
-# This creates a shared library.
-
-# Input
-# $(SOURCE) - The source code to use
-# $(HEADERS) - Exported header files and private header files
-# $(LIBRARY) - The name of the library without lib or .so
-# $(MAJOR) - The major version number of this library
-# $(MINOR) - The minor version number of this library
-# $(APT_DOMAIN) - The text domain for this library
-
-# All output is writtin to .opic files in the build directory to
-# signify the PIC output.
-
-# See defaults.mak for information about LOCAL
-
-# Some local definitions
-LOCAL := lib$(LIBRARY).so.$(MAJOR).$(MINOR)
-$(LOCAL)-OBJS := $(addprefix $(OBJ)/,$(addsuffix .opic,$(notdir $(basename $(SOURCE)))))
-$(LOCAL)-DEP := $(addprefix $(DEP)/,$(addsuffix .opic.d,$(notdir $(basename $(SOURCE)))))
-$(LOCAL)-HEADERS := $(addprefix $(INCLUDE)/,$(HEADERS))
-$(LOCAL)-SONAME := lib$(LIBRARY).so.$(MAJOR)
-$(LOCAL)-VERSIONSCRIPT := $(LIB)/lib$(LIBRARY)-$(MAJOR)-$(MINOR).symver
-$(LOCAL)-SLIBS := $(SLIBS)
-$(LOCAL)-LIBRARY := $(LIBRARY)
-
-TYPE = src
-include $(PODOMAIN_H)
-
-# Install the command hooks
-headers: $($(LOCAL)-HEADERS)
-library: $(LIB)/lib$(LIBRARY).so $(LIB)/lib$(LIBRARY).so.$(MAJOR)
-clean: clean/$(LOCAL)
-veryclean: veryclean/$(LOCAL)
-
-# Make Directories
-MKDIRS += $(OBJ) $(DEP) $(LIB) $(dir $($(LOCAL)-HEADERS))
-
-# The clean rules
-.PHONY: clean/$(LOCAL) veryclean/$(LOCAL)
-clean/$(LOCAL):
-	-rm -f $($(@F)-OBJS) $($(@F)-DEP) $($(@F)-VERSIONSCRIPT)
-veryclean/$(LOCAL): clean/$(LOCAL)
-	-rm -f $($(@F)-HEADERS) $(LIB)/lib$($(@F)-LIBRARY)*.so*
-
-# Build rules for the two symlinks
-.PHONY: $(LIB)/lib$(LIBRARY).so.$(MAJOR) $(LIB)/lib$(LIBRARY).so
-$(LIB)/lib$(LIBRARY).so.$(MAJOR): $(LIB)/lib$(LIBRARY).so.$(MAJOR).$(MINOR)
-	ln -sf $(<F) $@
-$(LIB)/lib$(LIBRARY).so: $(LIB)/lib$(LIBRARY).so.$(MAJOR).$(MINOR)
-	ln -sf $(<F) $@
-
-$($(LOCAL)-VERSIONSCRIPT):
-	echo '$(shell echo '$(LIBRARY)' | tr -d '-' | tr 'a-z' 'A-Z')_$(MAJOR) { global: *; };' > $@
-
-# The binary build rule
-$(LIB)/lib$(LIBRARY).so.$(MAJOR).$(MINOR): $($(LOCAL)-HEADERS) $($(LOCAL)-OBJS) $(LIBRARYDEPENDS) $($(LOCAL)-VERSIONSCRIPT)
-	-rm -f $(LIB)/lib$($(@F)-LIBRARY)*.so* 2> /dev/null
-	echo Building shared library $@
-	$(CXX) $(CXXSTD) $(CXXFLAGS) $(LDFLAGS) -Wl,--version-script=$($(@F)-VERSIONSCRIPT) $(PICFLAGS) $(LFLAGS) $(LFLAGS_SO)\
-	   -o $@ $(SONAME_MAGIC)$($(@F)-SONAME) -shared \
-	   $(filter %.opic,$^) \
-	   $($(@F)-SLIBS) 
-
-# Compilation rules
-vpath %.cc $(SUBDIRS)
-$(OBJ)/%.opic: %.cc $(LIBRARYDEPENDS)
-	echo Compiling $< to $@
-	$(CXX) -c $(INLINEDEPFLAG) $(CPPFLAGS) $(CXXSTD) $(CXXFLAGS) $(PICFLAGS) -o $@ '$(abspath $<)'
-	$(DoDep)
-
-# Include the dependencies that are available
-The_DFiles = $(wildcard $($(LOCAL)-DEP))
-ifneq ($(words $(The_DFiles)),0)
-include $(The_DFiles)
-endif

+ 0 - 14
buildlib/libversion.mak

@@ -1,14 +0,0 @@
-# -*- make -*-
-# Version number of libapt-pkg.
-# Please increase MAJOR with each ABI break,
-# with each non-ABI break to the lib, please increase RELEASE.
-# The versionnumber is extracted from apt-pkg/macros.h - see also there.
-LIBAPTPKG_MAJOR=$(shell awk -v ORS='.' '/^\#define APT_PKG_M/ {print $$3}' $(BASE)/apt-pkg/contrib/macros.h | sed 's/\.$$//')
-LIBAPTPKG_RELEASE=$(shell grep '^\#define APT_PKG_RELEASE' $(BASE)/apt-pkg/contrib/macros.h | cut -d ' ' -f 3)
-
-# Version number of libapt-inst
-# Please increase MAJOR with each ABI break,
-# with each non-ABI break to the lib, please increase MINOR.
-# The versionnumber is extracted from apt-inst/makefile - see also there.
-LIBAPTINST_MAJOR=$(shell grep '^MAJOR=' $(BASE)/apt-inst/makefile |cut -d '=' -f 2)
-LIBAPTINST_MINOR=$(shell grep '^MINOR=' $(BASE)/apt-inst/makefile |cut -d '=' -f 2)

+ 0 - 46
buildlib/makefile.in

@@ -1,46 +0,0 @@
-# -*- make -*-
-
-# This is the build directory make file, it sets the build directory
-# and runs the src makefile.
-ifndef NOISY
-.SILENT:
-endif
-include environment.mak
-
-SRCDIR=@top_srcdir@
-BUILD:=$(shell pwd)
-export BUILD
-
-# Chain to the parent make to do the actual building
-.PHONY: headers library clean veryclean all binary program doc \
-        veryclean/local
-all headers library clean veryclean binary program doc:
-	$(MAKE) -C $(SRCDIR) -f Makefile $@
-
-# Purge everything.
-.PHONY: maintainer-clean dist-clean pristine sanity distclean
-maintainer-clean dist-clean pristine sanity distclean:
-	-rm -rf $(DIRS)
-	-rm -f config.cache config.log config.status environment.mak makefile
-	
-# Create the required directories and build the shims
-# The configure script fills in below, and then we do the right things..
-# This cannot go in the configure script since the directories have not yet
-# been created.. In any event I like the idea that you can change environment.mak
-# and run make dirs and have the shims updated.
-.PHONY: dirs
-dirs: 
-	$(MAKE) -C $(SRCDIR) -f Makefile $@
-ifeq ($(HAVE_STATVFS),yes)
-	@rm -f include/statvfs.h > /dev/null 2>&1
-else
-	@cp -p $(SRCDIR)/buildlib/statvfs.h.in include/statvfs.h
-	ln -sf . include/sys
-endif
-ifeq ($(NEED_SOCKLEN_T_DEFINE),yes)
-	@cp -p $(SRCDIR)/buildlib/netdb.h.in include/netdb.h
-else
-	@rm -f include/netdb.h > /dev/null 2>&1
-endif
-	rm -f include/python
-	ln -sf $(PYTHONINCLUDE) include/python

+ 0 - 30
buildlib/manpage.mak

@@ -1,30 +0,0 @@
-# -*- make -*-
-
-# This installs man pages into the doc directory
-
-# Input
-# $(SOURCE) - The documents to use
-
-# All output is written to files in the build doc directory
-
-# See defaults.mak for information about LOCAL
-
-# Some local definitions
-LOCAL := manpage-$(firstword $(SOURCE))
-$(LOCAL)-LIST := $(addprefix $(DOC)/,$(SOURCE))
-
-# Install generation hooks
-doc: manpages
-manpages: $($(LOCAL)-LIST)
-veryclean: veryclean/$(LOCAL)
-
-MKDIRS += $(DOC)
-
-$($(LOCAL)-LIST) : $(DOC)/% : %
-	echo Installing man page $< to $(@D)
-	cp $< $(@D)
-
-# Clean rule
-.PHONY: veryclean/$(LOCAL)
-veryclean/$(LOCAL):
-	-rm -rf $($(@F)-LIST)

+ 0 - 6
buildlib/netdb.h.in

@@ -1,6 +0,0 @@
-/* Fix broken unixen. */
-#include <config.h>
-#ifdef NEED_SOCKLEN_T_DEFINE
-        #define socklen_t size_t
-#endif
-#include_next <netdb.h>

+ 0 - 74
buildlib/po4a_manpage.mak

@@ -1,74 +0,0 @@
-# -*- make -*-
-
-# This handles man pages with po4a. We convert to the respective
-# output in the source directory then copy over to the final dest. This
-# means po4a is only needed if compiling from bzr
-
-# Input
-# $(LC)     - The language code of the translation
-
-# See defaults.mak for information about LOCAL
-
-# generate a list of accepted man page translations
-SOURCE = $(patsubst %.xml,%,$(wildcard *.$(LC).?.xml))
-INCLUDES = apt.ent apt-verbatim.ent apt-vendor.ent
-
-manpages:
-
-%.xsl: ../%.xsl
-	cp -a $< .
-
-# Do not use XMLTO, build the manpages directly with XSLTPROC
-ifdef XSLTPROC
-
-STYLESHEET=manpage-style.xsl
-
-LOCAL := po4a-manpage-$(firstword $(SOURCE))
-$(LOCAL)-LIST := $(SOURCE)
-
-# Install generation hooks
-manpages: $($(LOCAL)-LIST)
-clean: clean/$(LOCAL)
-veryclean: veryclean/$(LOCAL)
-
-apt-verbatim.ent: ../apt-verbatim.ent
-	cp -a ../apt-verbatim.ent .
-
-apt-vendor.ent: ../apt-vendor.ent
-	cp -a ../apt-vendor.ent .
-
-$($(LOCAL)-LIST) :: % : %.xml $(STYLESHEET) $(INCLUDES)
-	echo Creating man page $@
-	$(XSLTPROC) \
-		--stringparam l10n.gentext.default.language $(LC) \
-		-o $@ $(STYLESHEET) $< || exit 200 # why xsltproc doesn't respect the -o flag here???
-	test -f $(subst .$(LC),,$@) || echo 'FIXME: xsltproc respects the -o flag now, workaround can be removed'
-	mv -f $(subst .$(LC),,$@) $@
-
-# Clean rule
-.PHONY: clean/$(LOCAL) veryclean/$(LOCAL)
-clean/$(LOCAL):
-	rm -f $($(@F)-LIST) apt.ent apt-verbatim.ent
-veryclean/$(LOCAL):
-	# we are nuking the directory we are working in as it is auto-generated
-	rm -rf '$(abspath .)'
-
-HAVE_PO4A=yes
-endif
-
-# take care of the rest
-INCLUDES :=
-
-ifndef HAVE_PO4A
-# Strip from the source list any man pages we don't have compiled already
-SOURCE := $(wildcard $(SOURCE))
-endif
-
-# Chain to the manpage rule
-ifneq ($(words $(SOURCE)),0)
-include $(MANPAGE_H)
-endif
-
-# DocBook XML Documents
-SOURCE := $(wildcard *.$(LC).dbk)
-include $(DOCBOOK_H)

+ 0 - 27
buildlib/podomain.mak

@@ -1,27 +0,0 @@
-# -*- make -*-
-
-# This creates the file listing used by xgettext and friends based on the
-# declared domain of the make file. It also arranges to set the DOMAIN 
-# CPPFLAG for the compilation.
-
-ifneq ($(APT_DOMAIN),none)
-
-MY_DOMAIN := $(PACKAGE)
-ifdef APT_DOMAIN
-$($(LOCAL)-OBJS): CPPFLAGS := $(CPPFLAGS) -DAPT_DOMAIN='"$(APT_DOMAIN)"'
-MY_DOMAIN := $(APT_DOMAIN)
-endif
-
-MKDIRS += $(PO_DOMAINS)/$(MY_DOMAIN)
-$(PO_DOMAINS)/$(MY_DOMAIN)/$(LOCAL).$(TYPE)list: SRC := $(addprefix $(SUBDIR)/,$(SOURCE))
-$(PO_DOMAINS)/$(MY_DOMAIN)/$(LOCAL).$(TYPE)list: makefile dirs
-	(echo $(SRC) | xargs -n1 echo) > $@.tmp
-	cmp --silent $@.tmp $@ || mv $@.tmp $@
-startup binary program clean update-po: $(PO_DOMAINS)/$(MY_DOMAIN)/$(LOCAL).$(TYPE)list
-
-veryclean: veryclean/$(LOCAL)
-veryclean/po/$(LOCAL): LIST := $(PO_DOMAINS)/$(MY_DOMAIN)/$(LOCAL).$(TYPE)list
-veryclean/po/$(LOCAL):
-	rm -f $(LIST)
-
-endif

+ 0 - 60
buildlib/program.mak

@@ -1,60 +0,0 @@
-# -*- make -*-
-
-# This creates a program
-
-# Input
-# $(SOURCE) - The source code to use
-# $(PROGRAM) - The name of the program
-# $(SLIBS) - Shared libs to link against
-# $(LIB_MAKES) - Shared library make files to depend on - to ensure we get
-# remade when the shared library version increases.
-
-# See defaults.mak for information about LOCAL
-
-# Some local definitions
-LOCAL := $(PROGRAM)
-$(LOCAL)-OBJS := $(addprefix $(OBJ)/,$(addsuffix .o,$(notdir $(basename $(SOURCE)))))
-$(LOCAL)-DEP := $(addprefix $(DEP)/,$(addsuffix .o.d,$(notdir $(basename $(SOURCE)))))
-$(LOCAL)-BIN := $(BIN)/$(PROGRAM)
-$(LOCAL)-SLIBS := $(SLIBS)
-$(LOCAL)-MKS := $(addprefix $(BASE)/,$(LIB_MAKES))
-
-# Install the command hooks
-program: $(BIN)/$(PROGRAM)
-clean: clean/$(LOCAL)
-veryclean: veryclean/$(LOCAL)
-
-TYPE = src
-include $(PODOMAIN_H)
-
-# Make Directories
-MKDIRS += $(OBJ) $(DEP) $(BIN)
-
-# The clean rules
-.PHONY: clean/$(LOCAL) veryclean/$(LOCAL) 
-clean/$(LOCAL):
-	-rm -f $($(@F)-OBJS) $($(@F)-DEP)
-veryclean/$(LOCAL): clean/$(LOCAL)
-	-rm -f $($(@F)-BIN)
-
-# The convience binary build rule
-.PHONY: $(PROGRAM)
-$(PROGRAM): $($(LOCAL)-BIN)
-
-# The binary build rule
-$($(LOCAL)-BIN): $($(LOCAL)-OBJS) $($(LOCAL)-MKS)
-	echo Building program $@
-	$(CXX) $(CXXSTD) $(CXXFLAGS) $(LDFLAGS) $(LFLAGS) -o $@ $(filter %.o,$^) $($(@F)-SLIBS) $(LEFLAGS)
-
-# Compilation rules
-vpath %.cc $(SUBDIRS)
-$(OBJ)/%.o: %.cc
-	echo Compiling $< to $@
-	$(CXX) -c $(INLINEDEPFLAG) $(CPPFLAGS) $(CXXSTD) $(CXXFLAGS) -o $@ '$(abspath $<)'
-	$(DoDep)
-
-# Include the dependencies that are available
-The_DFiles = $(wildcard $($(LOCAL)-DEP))
-ifneq ($(words $(The_DFiles)),0)
-include $(The_DFiles)
-endif 

+ 0 - 68
buildlib/python.mak

@@ -1,68 +0,0 @@
-# -*- make -*-
-
-# This creates a python shared module.
-
-# Input
-# $(SOURCE) - The source code to use
-# $(MODULE) - The name of the module without module or .so 
-
-# All output is writtin to .opic files in the build directory to
-# signify the PIC output.
-
-# See defaults.mak for information about LOCAL
-
-# Some local definitions
-LOCAL := $(MODULE)module.so
-$(LOCAL)-OBJS := $(addprefix $(OBJ)/,$(addsuffix .opic,$(notdir $(basename $(SOURCE)))))
-$(LOCAL)-DEP := $(addprefix $(DEP)/,$(addsuffix .opic.d,$(notdir $(basename $(SOURCE)))))
-$(LOCAL)-SLIBS := $(SLIBS)
-$(LOCAL)-MODULE := $(MODULE)
-
-# Install the command hooks
-library: $(LIB)/$(MODULE)module.so
-clean: clean/$(LOCAL)
-veryclean: veryclean/$(LOCAL)
-
-# Make Directories
-MKDIRS += $(OBJ) $(DEP) $(LIB) 
-
-# The clean rules
-.PHONY: clean/$(LOCAL) veryclean/$(LOCAL)
-clean/$(LOCAL):
-	-rm -f $($(@F)-OBJS) $($(@F)-DEP)
-veryclean/$(LOCAL): clean/$(LOCAL)
-	-rm -f $($(@F)-HEADERS) $(LIB)/$($(@F)-MODULE)module.so*
-
-# The binary build rule.
-ifdef PYTHONLIB
-ifndef ONLYSTATICLIBS
-$(LIB)/$(MODULE)module.so: $($(LOCAL)-OBJS)
-	-rm -f $(LIB)/$($(@F)-MODULE)module.so* 2> /dev/null
-	echo Building shared Python module $@
-	$(CXX) $(CXXSTD) $(CXXFLAGS) $(LDFLAGS) $(PICFLAGS) $(LFLAGS) $(LFLAGS_SO)\
-	   -o $@ -shared \
-	   $(filter %.opic,$^) \
-	   $($(@F)-SLIBS) $(PYTHONLIB)
-else
-.PHONY: $(LIB)/$(MODULE)module.so
-$(LIB)/$(MODULE)module.so: 
-	echo Don't know how to make a python module here, not building $@
-endif # ifndef ONLYSTATICLIBS
-else
-.PHONY: $(LIB)/$(MODULE)module.so
-$(LIB)/$(MODULE)module.so: 
-	echo No python support, not building $@
-endif  # ifdef PYTHONLIB
-
-# Compilation rules
-vpath %.cc $(SUBDIRS)
-$(OBJ)/%.opic: %.cc
-	echo Compiling $< to $@
-	$(CXX) -c $(INLINEDEPFLAG) $(CPPFLAGS) $(CXXSTD) $(CXXFLAGS) $(PICFLAGS) -o $@ '$(abspath $<)'
-	$(DoDep)
-
-# Include the dependencies that are available
-The_DFiles = $(wildcard $($(LOCAL)-DEP))
-ifneq ($(words $(The_DFiles)),0)
-include $(The_DFiles)
-endif 

+ 0 - 60
buildlib/staticlibrary.mak

@@ -1,60 +0,0 @@
-# -*- make -*-
-
-# This creates a static library.
-
-# Input
-# $(SOURCE) - The source code to use
-# $(HEADERS) - Exported header files and private header files
-# $(LIBRARY) - The name of the library without lib or .so 
-
-# All output is writtin to .o files in the build directory
-
-# See defaults.mak for information about LOCAL
-
-# Some local definitions
-LOCAL := lib$(LIBRARY).a
-$(LOCAL)-OBJS := $(addprefix $(OBJ)/,$(addsuffix .o,$(notdir $(basename $(SOURCE)))))
-$(LOCAL)-DEP := $(addprefix $(DEP)/,$(addsuffix .o.d,$(notdir $(basename $(SOURCE)))))
-$(LOCAL)-HEADERS := $(addprefix $(INCLUDE)/,$(HEADERS))
-$(LOCAL)-LIB := $(LIB)/lib$(LIBRARY).a
-
-# Install the command hooks
-headers: $($(LOCAL)-HEADERS)
-library: $($(LOCAL)-LIB)
-clean: clean/$(LOCAL)
-veryclean: veryclean/$(LOCAL)
-
-# Make Directories
-MKDIRS += $(OBJ) $(DEP) $(LIB) $(dir $($(LOCAL)-HEADERS))
-
-# The clean rules
-.PHONY: clean/$(LOCAL) veryclean/$(LOCAL)
-clean/$(LOCAL):
-	-rm -f $($(@F)-OBJS) $($(@F)-DEP)
-veryclean/$(LOCAL): clean/$(LOCAL)
-	-rm -f $($(@F)-HEADERS) $($(@F)-LIB)
-
-# Build rules for the two symlinks
-.PHONY: $($(LOCAL)-LIB)
-	
-# The binary build rule
-$($(LOCAL)-LIB): $($(LOCAL)-HEADERS) $($(LOCAL)-OBJS)
-	echo Building library $@
-	-rm $@ > /dev/null 2>&1
-	$(AR) cq $@ $(filter %.o,$^)
-ifneq ($(words $(RANLIB)),0)
-	$(RANLIB) $@
-endif
-
-# Compilation rules
-vpath %.cc $(SUBDIRS)
-$(OBJ)/%.o: %.cc
-	echo Compiling $< to $@
-	$(CXX) -c $(INLINEDEPFLAG) $(CPPFLAGS) $(CXXSTD) $(CXXFLAGS) -o $@ '$(abspath $<)'
-	$(DoDep)
-
-# Include the dependencies that are available
-The_DFiles = $(wildcard $($(LOCAL)-DEP))
-ifneq ($(words $(The_DFiles)),0)
-include $(The_DFiles)
-endif 

+ 0 - 110
buildlib/tools.m4

@@ -1,110 +0,0 @@
-AC_DEFUN([ah_HAVE_GETCONF],
-	[AC_ARG_WITH(getconf,
-		[  --with-getconf          Enable automagical buildtime configuration],
-		[if test "$withval" = "yes"; then
-			AC_PATH_PROG(GETCONF, getconf)
-		elif test ! "$withval" = "no";then 
-			AC_MSG_CHECKING([getconf])
-			AC_MSG_RESULT([$withval])
-			GETCONF=$withval
-		fi],
-		[AC_PATH_PROG(GETCONF, getconf)]
-	)
-	AC_SUBST(GETCONF)
-])
-
-dnl ah_GET_CONF(variable, value ..., [default])
-AC_DEFUN([ah_GET_GETCONF],
-	[AC_REQUIRE([ah_HAVE_GETCONF])
-	if test ! -z "$GETCONF";then
-		old_args="[$]@"
-		set -- $2
-		while eval test -z \"\$$1\" -a ! -z \"[$]1\";do
-			eval $1=`$GETCONF "[$]1" 2>/dev/null`
-			shift
-		done
-	fi
-	if eval test -z \"\$$1\" -o \"\$$1\" = "-1";then
-		eval $1="$3"
-	fi
-])
-AC_DEFUN([ah_NUM_CPUS],
-	[AC_MSG_CHECKING([number of cpus])
-	AC_ARG_WITH(cpus,
-		[  --with-cpus             The number of cpus to be used for building(see --with-procs, default 1)],
-		[
-		if test "$withval" = "yes"; then
-			ah_GET_GETCONF(NUM_CPUS, SC_NPROCESSORS_ONLN _NPROCESSORS_ONLN, 1)
-		elif test ! "$withval" = "no";then
-			NUM_CPUS=$withval
-		elif test "$withval" = "no";then
-			NUM_CPUS=1
-		fi],
-		[ah_GET_GETCONF(NUM_CPUS, SC_NPROCESSORS_ONLN _NPROCESSORS_ONLN, 1)]
-	)
-	ah_NUM_CPUS_msg="$NUM_CPUS"
-	if test "$NUM_CPUS" = "0"; then
-		# broken getconf, time to bitch.
-		ah_NUM_CPUS_msg="found 0 cpus.  Has someone done a lobotomy?"
-		NUM_CPUS=1
-	fi
-	if test $NUM_CPUS = 1 ;then
-		default_PROC_MULTIPLY=1
-	else
-		default_PROC_MULTIPLY=2
-	fi
-	AC_MSG_RESULT([$ah_NUM_CPUS_msg])
-	AC_SUBST(NUM_CPUS)
-])
-AC_DEFUN([ah_PROC_MULTIPLY],
-	[AC_REQUIRE([ah_NUM_CPUS])
-	AC_MSG_CHECKING([processor multiplier])
-	AC_ARG_WITH(proc-multiply,
-		[  --with-proc-multiply    Multiply this * number of cpus for parallel making(default 2).],
-		[if test "$withval" = "yes"; then
-			PROC_MULTIPLY=$default_PROC_MULTIPLY
-		elif test ! "$withval" = "no";then
-			PROC_MULTIPLY=$withval
-		fi],
-		[PROC_MULTIPLY=$default_PROC_MULTIPLY]
-	)
-	AC_MSG_RESULT([$PROC_MULTIPLY])
-	AC_SUBST(PROC_MULTIPLY)
-])
-
-AC_DEFUN([ah_NUM_PROCS],
-	[AC_REQUIRE([ah_PROC_MULTIPLY])
-	AC_REQUIRE([ah_NUM_CPUS])
-	AC_MSG_CHECKING([number of processes to run during make])
-	AC_ARG_WITH(procs,
-		[  --with-procs            The number of processes to run in parallel during make(num_cpus * multiplier).],
-		[if test "$withval" = "yes"; then
-			NUM_PROCS=`expr $NUM_CPUS \* $PROC_MULTIPLY`
-		elif test ! "$withval" = "no";then
-			NUM_PROCS=$withval
-		fi],
-		[NUM_PROCS=`expr $NUM_CPUS \* $PROC_MULTIPLY`]
-	)
-	AC_MSG_RESULT([$NUM_PROCS])
-	AC_SUBST(NUM_PROCS)
-])
-
-AC_DEFUN([ah_GCC3DEP],[
-	AC_MSG_CHECKING(if $CXX -MD works)
-	touch gcc3dep.cc
-	${CXX-c++} -MD -o gcc3dep_test.o -c gcc3dep.cc
-	rm -f gcc3dep.cc gcc3dep_test.o
-	if test -e gcc3dep.d; then
-		rm -f gcc3dep.d
-		GCC_MD=input
-		GCC3DEP=
-	elif test -e gcc3dep_test.d; then
-		rm -f gcc3dep_test.d
-		GCC_MD=output
-		GCC3DEP=yes
-	else
-		AC_MSG_ERROR(no)
-	fi
-	AC_MSG_RESULT([yes, for $GCC_MD])
-	AC_SUBST(GCC3DEP)
-])

+ 59 - 0
cmdline/CMakeLists.txt

@@ -0,0 +1,59 @@
+# Create the executable tasks
+add_executable(apt apt.cc)
+add_executable(apt-cache apt-cache.cc)
+add_executable(apt-get apt-get.cc)
+add_executable(apt-mark apt-mark.cc)
+add_executable(apt-config apt-config.cc)
+add_executable(apt-cdrom apt-cdrom.cc)
+add_executable(apt-helper apt-helper.cc)
+add_executable(apt-sortpkgs apt-sortpkgs.cc)
+add_executable(apt-extracttemplates apt-extracttemplates.cc)
+add_executable(apt-internal-solver apt-internal-solver.cc)
+add_executable(apt-dump-solver apt-dump-solver.cc)
+add_executable(apt-internal-planner apt-internal-planner.cc)
+add_vendor_file(OUTPUT apt-key
+                INPUT apt-key.in
+                MODE 755
+                VARIABLES keyring-filename
+                          keyring-removed-filename
+                          keyring-master-filename
+                          keyring-uri keyring-package)
+
+
+# Link the executables against the libraries
+target_link_libraries(apt apt-pkg apt-private)
+target_link_libraries(apt-cache apt-pkg apt-private)
+target_link_libraries(apt-get apt-pkg apt-private)
+target_link_libraries(apt-config apt-pkg apt-private)
+target_link_libraries(apt-cdrom apt-pkg apt-private)
+target_link_libraries(apt-helper apt-pkg apt-private)
+target_link_libraries(apt-mark apt-pkg apt-private)
+target_link_libraries(apt-sortpkgs apt-pkg apt-private)
+target_link_libraries(apt-extracttemplates apt-pkg apt-inst apt-private)
+target_link_libraries(apt-internal-solver apt-pkg apt-inst apt-private)
+target_link_libraries(apt-dump-solver apt-pkg apt-inst apt-private)
+target_link_libraries(apt-internal-planner apt-pkg apt-inst apt-private)
+
+set_target_properties(apt-dump-solver
+                      PROPERTIES RUNTIME_OUTPUT_DIRECTORY solvers
+                                 RUNTIME_OUTPUT_NAME dump)
+set_target_properties(apt-internal-solver
+                      PROPERTIES RUNTIME_OUTPUT_DIRECTORY solvers
+                                 RUNTIME_OUTPUT_NAME apt)
+set_target_properties(apt-internal-planner
+                      PROPERTIES RUNTIME_OUTPUT_DIRECTORY planners
+                                 RUNTIME_OUTPUT_NAME apt)
+
+# Install the executables
+install(TARGETS apt apt-cache apt-get apt-config apt-cdrom apt-mark apt-sortpkgs
+                apt-extracttemplates
+        RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
+
+install(TARGETS apt-helper RUNTIME DESTINATION ${CMAKE_INSTALL_LIBEXECDIR}/apt/)
+install(TARGETS apt-dump-solver apt-internal-solver RUNTIME DESTINATION ${CMAKE_INSTALL_LIBEXECDIR}/apt/solvers)
+install(TARGETS apt-internal-planner RUNTIME DESTINATION ${CMAKE_INSTALL_LIBEXECDIR}/apt/planners)
+
+add_slaves(${CMAKE_INSTALL_LIBEXECDIR}/apt/planners ../solvers/dump planners/dump)
+
+# Install the not-to-be-compiled programs
+INSTALL(PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/apt-key DESTINATION ${CMAKE_INSTALL_BINDIR})

+ 0 - 119
cmdline/makefile

@@ -1,119 +0,0 @@
-# -*- make -*-
-BASE=..
-SUBDIR=cmdline
-
-# Bring in the default rules
-include ../buildlib/defaults.mak
-
-# The apt program
-PROGRAM=apt
-SLIBS = -lapt-pkg -lapt-private $(INTLLIBS)
-LIB_MAKES = apt-pkg/makefile apt-private/makefile
-SOURCE = apt.cc
-include $(PROGRAM_H)
-
-# The apt-cache program
-PROGRAM=apt-cache
-SLIBS = -lapt-pkg -lapt-private $(INTLLIBS)
-LIB_MAKES = apt-pkg/makefile apt-private/makefile
-SOURCE = apt-cache.cc
-include $(PROGRAM_H)
-
-# The apt-get program
-PROGRAM=apt-get
-SLIBS = -lapt-pkg -lapt-private $(INTLLIBS)
-LIB_MAKES = apt-pkg/makefile apt-private/makefile
-SOURCE = apt-get.cc 
-include $(PROGRAM_H)
-
-# The apt-config program
-PROGRAM=apt-config
-SLIBS = -lapt-pkg -lapt-private $(INTLLIBS)
-LIB_MAKES = apt-pkg/makefile apt-private/makefile
-SOURCE = apt-config.cc
-include $(PROGRAM_H)
-
-# The apt-cdrom program
-PROGRAM=apt-cdrom
-SLIBS = -lapt-pkg -lapt-private $(INTLLIBS)
-LIB_MAKES = apt-pkg/makefile apt-private/makefile
-SOURCE = apt-cdrom.cc 
-include $(PROGRAM_H)
-
-# The apt-mark program
-PROGRAM=apt-mark
-SLIBS = -lapt-pkg -lapt-private $(INTLLIBS)
-LIB_MAKES = apt-pkg/makefile apt-private/makefile
-SOURCE = apt-mark.cc
-include $(PROGRAM_H)
-
-# The apt-helper
-PROGRAM=apt-helper
-SLIBS = -lapt-pkg -lapt-private $(INTLLIBS) -lresolv
-LIB_MAKES = apt-pkg/makefile apt-private/makefile
-SOURCE = apt-helper.cc
-include $(PROGRAM_H)
-
-# The apt-report-mirror-failure program
-#SOURCE=apt-report-mirror-failure
-#TO=$(BIN)
-#TARGET=program
-#include $(COPY_H)
-
-#
-# the following programs are shipped in apt-utils
-#
-APT_DOMAIN:=apt-utils
-
-# The apt-sortpkgs program
-PROGRAM=apt-sortpkgs
-SLIBS = -lapt-pkg -lapt-private $(INTLLIBS)
-LIB_MAKES = apt-pkg/makefile apt-private/makefile
-SOURCE = apt-sortpkgs.cc
-include $(PROGRAM_H)
-
-# The apt-extracttemplates program
-PROGRAM=apt-extracttemplates
-SLIBS = -lapt-pkg -lapt-inst -lapt-private $(INTLLIBS)
-LIB_MAKES = apt-pkg/makefile apt-inst/makefile apt-private/makefile
-SOURCE = apt-extracttemplates.cc 
-include $(PROGRAM_H)
-
-# The internal solver/planner acting as an external
-PROGRAM=apt-internal-solver
-SLIBS = -lapt-pkg -lapt-private $(INTLLIBS)
-LIB_MAKES = apt-pkg/makefile apt-private/makefile
-SOURCE = apt-internal-solver.cc
-include $(PROGRAM_H)
-
-PROGRAM=apt-internal-planner
-SLIBS = -lapt-pkg -lapt-private $(INTLLIBS)
-LIB_MAKES = apt-pkg/makefile apt-private/makefile
-SOURCE = apt-internal-planner.cc
-include $(PROGRAM_H)
-
-# This just dumps out the state
-PROGRAM=apt-dump-solver
-SLIBS = -lapt-pkg -lapt-private $(INTLLIBS)
-LIB_MAKES = apt-pkg/makefile apt-private/makefile
-SOURCE = apt-dump-solver.cc
-include $(PROGRAM_H)
-
-# The apt-key program
-apt-key: apt-key.in
-	sed -e "s#&keyring-filename;#$(shell ../vendor/getinfo keyring-filename)#" \
-		-e "s#&keyring-removed-filename;#$(shell ../vendor/getinfo keyring-removed-filename)#" \
-		-e "s#&keyring-master-filename;#$(shell ../vendor/getinfo keyring-master-filename)#" \
-		-e "s#&keyring-uri;#$(shell ../vendor/getinfo keyring-uri)#" \
-		-e "s#&keyring-package;#$(shell ../vendor/getinfo keyring-package)#" $< > $@
-	chmod 755 $@
-
-SOURCE=apt-key
-TO=$(BIN)
-TARGET=program
-include $(COPY_H)
-
-clean: clean/apt-key
-
-clean/apt-key:
-	rm -f apt-key

+ 0 - 218
configure.ac

@@ -1,218 +0,0 @@
-ad
-dnl Process this file with autoconf to produce a configure script.
-dnl The ONLY thing this is used for is to configure for different
-dnl linux architectures and configurations, it is not used to make the
-dnl code more portable
-
-dnl You MUST have an environment that has all the POSIX functions and
-dnl some of the more popular bsd/sysv ones (like select). You'll also
-dnl need a C++ compiler that is semi-standard conformant, exceptions are
-dnl not used but STL is.
-
-dnl 'make -f Makefile startup' will generate the configure file from
-dnl configure.ac correctly and can be run at any time
-
-AC_PREREQ([2.68])
-AC_INIT
-AC_CONFIG_SRCDIR([configure.ac])
-AC_CONFIG_AUX_DIR(buildlib)
-AC_CONFIG_HEADER(include/config.h:buildlib/config.h.in include/apti18n.h:buildlib/apti18n.h.in)
-
-PACKAGE="apt"
-PACKAGE_VERSION="1.3~pre3"
-PACKAGE_MAIL="APT Development Team <deity@lists.debian.org>"
-AC_DEFINE_UNQUOTED(PACKAGE,"$PACKAGE")
-AC_DEFINE_UNQUOTED(PACKAGE_VERSION,"$PACKAGE_VERSION")
-AC_DEFINE_UNQUOTED(PACKAGE_MAIL,"$PACKAGE_MAIL")
-AC_SUBST(PACKAGE)
-AC_SUBST(PACKAGE_VERSION)
-AC_SUBST(PACKAGE_MAIL)
-
-dnl Check the archs, we want the target type.
-AC_CANONICAL_TARGET
-
-dnl Check our C compiler
-
-AC_PROG_CC
-AC_SEARCH_LIBS([strerror],[cposix])
-
-dnl check for large file support and enable it if possible
-dnl do this early as other stuff might depend on it
-AC_SYS_LARGEFILE
-
-dnl Check for other programs
-AC_PROG_CXX
-AC_PROG_CPP
-AC_PROG_RANLIB
-AC_CHECK_TOOL(AR,ar,"ar")
-
-dnl Checks for sockets
-SAVE_LIBS="$LIBS"
-LIBS=""
-AC_SEARCH_LIBS(gethostbyname,nsl)
-AC_SEARCH_LIBS(connect,socket)
-SOCKETLIBS="$LIBS"
-AC_SUBST(SOCKETLIBS)
-LIBS="$SAVE_LIBS"
-
-dnl Checks for pthread
-AC_CHECK_LIB(pthread, pthread_create,[AC_DEFINE(HAVE_PTHREAD) PTHREADLIB="-lpthread"])
-AC_SUBST(PTHREADLIB)
-if test "$PTHREADLIB" != "-lpthread"; then
-  AC_MSG_ERROR(failed: I need posix threads, pthread)
-fi
-
-dnl Check for BDB
-saveLIBS="$LIBS"
-LIBS="$LIBS -ldb"
-
-AC_CHECK_HEADER(db.h,
-     [AC_MSG_CHECKING(if we can link against BerkeleyDB)
-      AC_LINK_IFELSE(
-      [AC_LANG_PROGRAM(
-       [#include <db.h>],
-       [int r, s, t; db_version(&r, &s, &t);]
-      )],
-      [AC_DEFINE(HAVE_BDB)
-       BDBLIB="-ldb"
-       AC_MSG_RESULT(yes)],
-      [BDBLIB=""
-       AC_MSG_RESULT(no)]
-    )]
-)
-
-LIBS="$saveLIBS"
-
-AC_CHECK_LIB(curl, curl_easy_init,
-     [AC_CHECK_HEADER(curl/curl.h,
-        curl_ok=yes,
-        curl_ok=no)],
-     AC_MSG_ERROR([failed: I need CURL due https support]),
-)
-
-AC_LANG_PUSH([C++])
-AC_CHECK_HEADER(gtest/gtest.h,,
-     AC_MSG_WARN([failed: I need gtest (packaged as libgtest-dev) for unit testing]),
-)
-AC_LANG_POP([C++])
-
-
-AC_SUBST(BDBLIB)
-
-HAVE_ZLIB=no
-AC_CHECK_LIB(z, gzopen,
-	[AC_CHECK_HEADER(zlib.h, [HAVE_ZLIB=yes], AC_MSG_ERROR([failed: zlib.h not found]))],
-	AC_MSG_ERROR([failed: Need libz]))
-AC_SUBST(HAVE_ZLIB)
-if test "x$HAVE_ZLIB" = "xyes"; then
-	AC_DEFINE(HAVE_ZLIB)
-fi
-
-HAVE_LZ4=no
-AC_CHECK_LIB(lz4, LZ4F_createCompressionContext,[AC_CHECK_HEADER(lz4frame.h, [HAVE_LZ4=yes], [])], [])
-AC_SUBST(HAVE_LZ4)
-if test "x$HAVE_LZ4" = "xyes"; then
-	AC_DEFINE(HAVE_LZ4)
-fi
-
-HAVE_BZ2=no
-AC_CHECK_LIB(bz2, BZ2_bzopen,[AC_CHECK_HEADER(bzlib.h, [HAVE_BZ2=yes], [])], [])
-AC_SUBST(HAVE_BZ2)
-if test "x$HAVE_BZ2" = "xyes"; then
-	AC_DEFINE(HAVE_BZ2)
-fi
-
-HAVE_LZMA=no
-AC_CHECK_LIB(lzma, lzma_easy_encoder,[AC_CHECK_HEADER(lzma.h, [HAVE_LZMA=yes], [])], [])
-AC_SUBST(HAVE_LZMA)
-if test "x$HAVE_LZMA" = "xyes"; then
-	AC_DEFINE(HAVE_LZMA)
-fi
-
-dnl Converts the ARCH to be something singular for this general CPU family
-dnl This is often the dpkg architecture string.
-dnl First check against the full canonical canoncial-system-type in $target
-dnl and if that fails, just look for the cpu
-AC_MSG_CHECKING(debian architecture)
-archset="`dpkg-architecture -qDEB_HOST_ARCH`"
-if test "x$archset" = "x"; then
-   AC_MSG_ERROR([failed: use --host= or output from dpkg-architecture])
-fi
-AC_MSG_RESULT($archset)
-AC_DEFINE_UNQUOTED(COMMON_ARCH,"$archset")
-
-dnl Single Unix Spec statvfs
-AC_CHECK_FUNC(statvfs,[HAVE_STATVFS=yes])
-AC_SUBST(HAVE_STATVFS)
-
-dnl Arg, linux and bsd put their statfs function in different places
-if test x"$HAVE_STATVFS" != x"yes"; then
-   AC_EGREP_HEADER(statfs,sys/vfs.h,[AC_DEFINE(HAVE_VFS_H)],[
-   AC_EGREP_HEADER(statfs,sys/mount.h,[AC_DEFINE(HAVE_MOUNT_H)],[AC_MSG_ERROR(failed: Need statvfs)])
-   ])
-fi
-
-AC_CHECK_MEMBERS([struct statfs.f_type],,,
-    [$ac_includes_default
-     #include <sys/vfs.h>])
-
-dnl We should use the real timegm function if we have it.
-AC_CHECK_FUNC(timegm,AC_DEFINE(HAVE_TIMEGM))
-AC_SUBST(HAVE_TIMEGM)
-
-dnl Check the architecture
-AC_C_BIGENDIAN
-
-dnl HP-UX sux..
-AC_MSG_CHECKING(for missing socklen_t)
-AC_EGREP_HEADER(socklen_t, sys/socket.h,[AC_MSG_RESULT(no)],[
-	AC_DEFINE(NEED_SOCKLEN_T_DEFINE)
-	NEED_SOCKLEN_T_DEFINE=yes
-        AC_MSG_RESULT(missing.)])
-AC_SUBST(NEED_SOCKLEN_T_DEFINE)
-
-dnl HP-UX needs -d_XOPEN_SOURCE_EXTENDED for h_errno
-AC_MSG_CHECKING(for h_errno)
-AC_EGREP_HEADER(h_errno, netdb.h, [AC_MSG_RESULT(normal)],
-   [CPPFLAGS="$CPPFLAGS -D_XOPEN_SOURCE_EXTENDED"
-    AC_EGREP_HEADER(h_errno, netdb.h,
-       [AC_MSG_RESULT(needs _XOPEN_SOURCE_EXTENDED)],
-       [AC_MSG_ERROR("not found.")])
-   ])
-
-
-dnl check for setuid checking function
-AC_CHECK_FUNCS(getresuid getresgid setresuid setresgid)
-AC_SUBST(HAVE_GETRESUID)
-AC_SUBST(HAVE_GETRESGID)
-AC_SUBST(HAVE_SETRESUID)
-AC_SUBST(HAVE_SETRESGID)
-
-dnl Check for doxygen
-AC_PATH_PROG(DOXYGEN, doxygen)
-
-dnl Check for the XSLTProc tool needed to build man pages together with po4a
-AC_PATH_PROG(XSLTPROC,xsltproc)
-AC_PATH_PROG(W3M, w3m)
-
-dnl Check for the po4a tool needed to build man pages
-AC_PATH_PROG(PO4A,po4a)
-
-dnl Check for graphviz
-AC_CHECK_PROG([HAVE_DOT], [dot], [YES], [NO])
-AC_PATH_PROG([DOT], [dot], [])
-DOTDIR=$(dirname $DOT)
-AC_SUBST(DOTDIR)
-
-ah_NUM_PROCS
-ah_GCC3DEP
-
-AM_GNU_GETTEXT(external)
-if test x"$USE_NLS" = "xyes"; then
-   AC_DEFINE(USE_NLS)
-fi
-AC_SUBST(USE_NLS)
-AC_PATH_PROG(BASH, bash)
-
-AC_CONFIG_FILES([environment.mak:buildlib/environment.mak.in makefile:buildlib/makefile.in doc/Doxyfile:doc/Doxyfile.in])
-AC_OUTPUT

+ 14 - 0
debian/NEWS

@@ -1,3 +1,17 @@
+apt (1.3~pre3+cmake1) experimental; urgency=medium
+
+  Early version of CMake based build system. Translations for the dselect
+  method and docbook guides are missing, just as the text docbook guides.
+
+  This is mainly intended for checking building, reproducibility, and
+  cross-compiling.
+
+  This is also the first release since 1999 that re-enabled a thread-local
+  _error. It was disabled by jgg back then due to glibc issues, but I really
+  hope those are fixed now.
+
+ -- Julian Andres Klode <jak@debian.org>  Sat, 06 Aug 2016 21:56:19 +0200
+
 apt (1.2~exp1) experimental; urgency=medium
 apt (1.2~exp1) experimental; urgency=medium
 
 
   [ Automatic removal of debs after install ]
   [ Automatic removal of debs after install ]

+ 1 - 0
debian/apt-doc.install

@@ -0,0 +1 @@
+usr/share/doc/apt-doc

+ 1 - 0
debian/apt-transport-https.files

@@ -0,0 +1 @@
+usr/lib/apt/methods/https

+ 0 - 1
debian/apt-transport-https.install

@@ -1 +0,0 @@
-bin/methods/https usr/lib/apt/methods

+ 19 - 0
debian/apt-utils.install

@@ -1 +1,20 @@
 usr/share/locale/*/*/apt-utils.mo
 usr/share/locale/*/*/apt-utils.mo
+
+usr/bin/apt-ftparchive
+usr/bin/apt-sortpkgs
+usr/bin/apt-extracttemplates
+
+usr/share/man/*/apt-ftparchive.*
+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

+ 2 - 0
debian/apt.files

@@ -0,0 +1,2 @@
+usr/lib/apt/solvers/dump
+usr/lib/apt/planners/dump

+ 39 - 0
debian/apt.install

@@ -0,0 +1,39 @@
+usr/bin/apt
+usr/bin/apt-get
+usr/bin/apt-cache
+usr/bin/apt-cdrom
+usr/bin/apt-config
+usr/bin/apt-key
+usr/bin/apt-mark
+usr/lib/apt/methods/
+usr/lib/dpkg/methods/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-key.*
+usr/share/man/*/*/apt-mark.*
+usr/share/man/*/*/apt-secure.*
+usr/share/man/*/*/sources.list.*
+usr/share/man/*/*/apt_preferences.*
+completions/bash/* /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

+ 0 - 9
debian/apt.install.in

@@ -1,9 +0,0 @@
-bin/apt usr/bin/
-bin/apt-* usr/bin/
-bin/methods/* usr/lib/apt/methods/
-scripts/dselect/* usr/lib/dpkg/methods/apt/
-usr/share/locale/*/*/apt.mo
-bin/libapt-private.so.* usr/lib/@DEB_HOST_MULTIARCH@/
-../completions/bash/* /usr/share/bash-completion/completions/
-../debian/*.service /lib/systemd/system/
-../debian/*.timer /lib/systemd/system/

+ 0 - 0
debian/apt.systemd.daily


+ 21 - 0
debian/changelog

@@ -1,3 +1,24 @@
+apt (1.3~pre3+cmake2) experimental; urgency=medium
+
+  * Build-depend on pkg-config
+
+ -- Julian Andres Klode <jak@debian.org>  Sat, 06 Aug 2016 23:18:37 +0200
+
+apt (1.3~pre3+cmake1) experimental; urgency=medium
+
+  [ Julian Andres Klode ]
+  * configure.ac: Re-enable pthread support for thread-local _error
+  * CMake: Add basic CMake build system
+  * CMake: Add support for building and installing .mo files
+  * CMake: Add initial support for documentation building
+  * CMake: Switch integration tests and travis over
+  * CMake: debian: Switch packaging over to CMake and dh 9
+
+  [ Jason Travis ]
+  * doc: update path to periodic options script
+
+ -- Julian Andres Klode <jak@debian.org>  Sat, 06 Aug 2016 22:37:30 +0200
+
 apt (1.3~pre3) unstable; urgency=medium
 apt (1.3~pre3) unstable; urgency=medium
 
 
   [ Julian Andres Klode ]
   [ Julian Andres Klode ]

+ 1 - 1
debian/compat

@@ -1 +1 @@
-7
+9

+ 4 - 2
debian/control

@@ -10,7 +10,7 @@ Build-Depends: dpkg-dev (>= 1.17.14), debhelper (>= 9.20141010), libdb-dev,
  gettext (>= 0.12), libcurl4-gnutls-dev (>= 7.19.4~),
  gettext (>= 0.12), libcurl4-gnutls-dev (>= 7.19.4~),
  zlib1g-dev, libbz2-dev, liblzma-dev, liblz4-dev (>= 0.0~r126),
  zlib1g-dev, libbz2-dev, liblzma-dev, liblz4-dev (>= 0.0~r126),
  xsltproc, docbook-xsl, docbook-xml, po4a (>= 0.34-2),
  xsltproc, docbook-xsl, docbook-xml, po4a (>= 0.34-2),
- autotools-dev, autoconf, automake, libgtest-dev <!nocheck>, dh-systemd
+ cmake (>= 3.4), pkg-config, libgtest-dev <!nocheck>, dh-systemd
 Build-Depends-Indep: doxygen, w3m, graphviz
 Build-Depends-Indep: doxygen, w3m, graphviz
 Build-Conflicts: autoconf2.13, automake1.4
 Build-Conflicts: autoconf2.13, automake1.4
 Vcs-Git: https://anonscm.debian.org/git/apt/apt.git
 Vcs-Git: https://anonscm.debian.org/git/apt/apt.git
@@ -47,6 +47,7 @@ Depends: ${shlibs:Depends}, ${misc:Depends}
 Breaks: apt (<< 1.1~exp14), libapt-inst1.5 (<< 0.9.9~), appstream (<< 0.9.0-3~)
 Breaks: apt (<< 1.1~exp14), libapt-inst1.5 (<< 0.9.9~), appstream (<< 0.9.0-3~)
 Recommends: apt (>= ${binary:Version})
 Recommends: apt (>= ${binary:Version})
 Section: libs
 Section: libs
+Provides: libapt-pkg (= ${binary:Version})
 Description: package management runtime library
 Description: package management runtime library
  This library provides the common functionality for searching and
  This library provides the common functionality for searching and
  managing packages as well as information about packages.
  managing packages as well as information about packages.
@@ -69,6 +70,7 @@ Multi-Arch: same
 Pre-Depends: ${misc:Pre-Depends}
 Pre-Depends: ${misc:Pre-Depends}
 Depends: ${shlibs:Depends}, ${misc:Depends}
 Depends: ${shlibs:Depends}, ${misc:Depends}
 Section: libs
 Section: libs
+Provides: libapt-inst (= ${binary:Version})
 Description: deb package format runtime library
 Description: deb package format runtime library
  This library provides methods to query and extract information
  This library provides methods to query and extract information
  from deb packages. This includes the control data and the package
  from deb packages. This includes the control data and the package
@@ -88,7 +90,7 @@ Architecture: any
 Multi-Arch: same
 Multi-Arch: same
 Priority: optional
 Priority: optional
 Pre-Depends: ${misc:Pre-Depends}
 Pre-Depends: ${misc:Pre-Depends}
-Depends: ${libapt-pkg-name} (= ${binary:Version}), ${libapt-inst-name} (= ${binary:Version}), ${misc:Depends}, zlib1g-dev
+Depends: libapt-pkg (= ${binary:Version}), libapt-inst (= ${binary:Version}), ${misc:Depends}, zlib1g-dev
 Section: libdevel
 Section: libdevel
 Description: development files for APT's libapt-pkg and libapt-inst
 Description: development files for APT's libapt-pkg and libapt-inst
  This package contains the header files and libraries for
  This package contains the header files and libraries for

+ 1 - 0
debian/copyright

@@ -0,0 +1 @@
+../COPYING

+ 2 - 0
debian/libapt-inst2.0.install

@@ -0,0 +1,2 @@
+usr/lib/*/libapt-inst*.so.*
+usr/share/locale/*/*/libapt-inst*.mo

+ 0 - 2
debian/libapt-inst2.0.install.in

@@ -1,2 +0,0 @@
-bin/libapt-inst*.so.* usr/lib/@DEB_HOST_MULTIARCH@/
-usr/share/locale/*/*/libapt-inst*.mo

+ 3 - 0
debian/libapt-pkg-dev.install

@@ -0,0 +1,3 @@
+usr/lib/*/libapt-pkg*.so
+usr/lib/*/libapt-inst*.so
+usr/include/apt-pkg/

+ 0 - 3
debian/libapt-pkg-dev.install.in

@@ -1,3 +0,0 @@
-bin/libapt-pkg*.so usr/lib/@DEB_HOST_MULTIARCH@/
-bin/libapt-inst*.so usr/lib/@DEB_HOST_MULTIARCH@/
-include/apt-pkg/*.h usr/include/apt-pkg/

+ 1 - 5
debian/libapt-pkg-doc.docs

@@ -1,7 +1,3 @@
-build/docs/design*
-build/docs/dpkg-tech*
-build/docs/files*
-build/docs/method*
 doc/libapt-pkg2_to_3.txt
 doc/libapt-pkg2_to_3.txt
 doc/style.txt
 doc/style.txt
-build/doc/doxygen/html
+#build/doc/doxygen/html

+ 1 - 0
debian/libapt-pkg-doc.install

@@ -0,0 +1 @@
+usr/share/doc/libapt-pkg-doc

+ 2 - 0
debian/libapt-pkg5.0.install

@@ -0,0 +1,2 @@
+usr/lib/*/libapt-pkg*.so.*
+usr/share/locale/*/*/libapt-pkg*.mo

+ 0 - 2
debian/libapt-pkg5.0.install.in

@@ -1,2 +0,0 @@
-bin/libapt-pkg*.so.* usr/lib/@DEB_HOST_MULTIARCH@/
-usr/share/locale/*/*/libapt-pkg*.mo

+ 4 - 4
debian/libapt-pkg5.0.symbols

@@ -1429,7 +1429,7 @@ libapt-pkg.so.5.0 libapt-pkg5.0 #MINVER#
 ### symbol versioning:
 ### symbol versioning:
  APTPKG_5.0@APTPKG_5.0 1.1~exp9
  APTPKG_5.0@APTPKG_5.0 1.1~exp9
 ### gcc artifacts
 ### gcc artifacts
- (c++)"void std::vector<APT::Configuration::Compressor, std::allocator<APT::Configuration::Compressor> >::emplace_back<APT::Configuration::Compressor>(APT::Configuration::Compressor&&)@APTPKG_5.0" 1.1~exp9
+ (c++|optional=std)"void std::vector<APT::Configuration::Compressor, std::allocator<APT::Configuration::Compressor> >::emplace_back<APT::Configuration::Compressor>(APT::Configuration::Compressor&&)@APTPKG_5.0" 1.1~exp9
  (c++|optional=std)"void std::vector<char const*, std::allocator<char const*> >::emplace_back<char const*>(char const*&&)@APTPKG_5.0" 1.1~exp9
  (c++|optional=std)"void std::vector<char const*, std::allocator<char const*> >::emplace_back<char const*>(char const*&&)@APTPKG_5.0" 1.1~exp9
  (c++|optional=std)"void std::vector<pkgCache::GrpIterator*, std::allocator<pkgCache::GrpIterator*> >::emplace_back<pkgCache::GrpIterator*>(pkgCache::GrpIterator*&&)@APTPKG_5.0" 1.1~exp9
  (c++|optional=std)"void std::vector<pkgCache::GrpIterator*, std::allocator<pkgCache::GrpIterator*> >::emplace_back<pkgCache::GrpIterator*>(pkgCache::GrpIterator*&&)@APTPKG_5.0" 1.1~exp9
  (c++|optional=std)"void std::vector<pkgCache::PkgIterator*, std::allocator<pkgCache::PkgIterator*> >::emplace_back<pkgCache::PkgIterator*>(pkgCache::PkgIterator*&&)@APTPKG_5.0" 1.1~exp9
  (c++|optional=std)"void std::vector<pkgCache::PkgIterator*, std::allocator<pkgCache::PkgIterator*> >::emplace_back<pkgCache::PkgIterator*>(pkgCache::PkgIterator*&&)@APTPKG_5.0" 1.1~exp9
@@ -1477,6 +1477,6 @@ libapt-pkg.so.5.0 libapt-pkg5.0 #MINVER#
  (c++)"EDSP::WriteScenario(pkgDepCache&, FileFd&, OpProgress*)@APTPKG_5.0" 1.3~exp2
  (c++)"EDSP::WriteScenario(pkgDepCache&, FileFd&, OpProgress*)@APTPKG_5.0" 1.3~exp2
  (c++)"EDSP::WriteSolutionStanza(FileFd&, char const*, pkgCache::VerIterator const&)@APTPKG_5.0" 1.3~exp2
  (c++)"EDSP::WriteSolutionStanza(FileFd&, char const*, pkgCache::VerIterator const&)@APTPKG_5.0" 1.3~exp2
  (c++)"int __gnu_cxx::__stoa<long, int, char, int>(long (*)(char const*, char**, int), char const*, char const*, unsigned long*, int)@APTPKG_5.0" 1.3~exp2
  (c++)"int __gnu_cxx::__stoa<long, int, char, int>(long (*)(char const*, char**, int), char const*, char const*, unsigned long*, int)@APTPKG_5.0" 1.3~exp2
- (c++)"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++)"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++)"std::ctype<char>::do_narrow(char, char) const@APTPKG_5.0" 1.3~exp2
+ (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

+ 24 - 340
debian/rules

@@ -1,352 +1,36 @@
 #!/usr/bin/make -f
 #!/usr/bin/make -f
-# Made with the aid of dh_make, by Craig Small
-# Sample debian/rules that uses debhelper. GNU copyright 1997 by Joey Hess.
-# Some lines taken from debmake, by Christoph Lameter.
-
-# build in verbose mode by default to make it easy to diangose issues
-export NOISY=1
-
-export DEB_HOST_GNU_TYPE  ?= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE)
-export DEB_BUILD_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE)
-export DEB_HOST_MULTIARCH ?= $(shell dpkg-architecture -qDEB_HOST_MULTIARCH)
-export PARALLEL = $(or $(patsubst parallel=%,%,$(filter parallel=%,$(DEB_BUILD_OPTIONS))),1)
-
-# FOR AUTOCONF 2.52 AND NEWER ONLY
-ifeq ($(DEB_BUILD_GNU_TYPE), $(DEB_HOST_GNU_TYPE))
-  confflags += --build $(DEB_HOST_GNU_TYPE)
-else
-  confflags += --build $(DEB_BUILD_GNU_TYPE) --host $(DEB_HOST_GNU_TYPE)
-endif
-
-# Set the number of procs to be run in parallel from the options.
-confflags += --with-procs=$(PARALLEL)
-
-# See below
--include build/environment.mak
-
-ifneq (,$(shell which dpkg-buildflags))
-  # make does not export to $(shell) so we need to workaround 
-  # (http://savannah.gnu.org/bugs/?10593)
-  dpkg_buildflags = DEB_BUILD_MAINT_OPTIONS=hardening=+all dpkg-buildflags
-  export CXXFLAGS = $(shell $(dpkg_buildflags) --get CXXFLAGS)
-  export LDFLAGS = $(shell $(dpkg_buildflags) --get LDFLAGS)
-  export CPPFLAGS = $(shell $(dpkg_buildflags) --get CPPFLAGS)
-else
-  ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS)))
-    export CXXFLAGS = -O0 -g -Wall
-  else
-    export CXXFLAGS = -O2 -g -Wall
-  endif
-endif
-
-# Default rule
-build:
-
-# Determine the build directory to use
-override BASE := .
-override BLD := $(BASE)/build
-
-# When building without <nocheck>, the header is available and thus the test is
-# successful. When building with <nocheck>, the header is missing, but we still
-# pretend it to be available, because configure would fail otherwise.
-export ac_cv_header_gtest_gtest_h=yes
-
-# APT Programs in apt-utils
-APT_UTILS=ftparchive sortpkgs extracttemplates
-
-# Uncomment this to turn on verbose mode.
-#export DH_VERBOSE=1
-
-# Find the libapt-pkg major version for use in other control files
-include buildlib/libversion.mak
-
-# Determine which library package names to use
-LIBAPT_PKG=libapt-pkg$(LIBAPTPKG_MAJOR)
-LIBAPT_INST=libapt-inst$(LIBAPTINST_MAJOR)
+# Copyright (C) 2009, 2016 Julian Andres Klode <jak@debian.org>
+#
+# Free Software, licensed under the GPL-2 or (at your option) any later version.
+export DEB_LDFLAGS_MAINT_APPEND := -Wl,--as-needed
+export DEB_BUILD_MAINT_OPTIONS := hardening=+all
 
 
 # do not fail as we are just experimenting with symbol files for now
 # do not fail as we are just experimenting with symbol files for now
 export DPKG_GENSYMBOLS_CHECK_LEVEL=0
 export DPKG_GENSYMBOLS_CHECK_LEVEL=0
 
 
-build-binary: build/build-binary-stamp
-build-docbook: build/build-docbook-stamp
-build-manpages: build/build-manpages-stamp
-
-# Note that this is unconditionally done first as part of loading environment.mak
-# The true is needed to force make to reload environment.mak after running
-# configure-stamp. Otherwise we can get stale or invalid, or missing config data.
-build/environment.mak: build/configure-stamp
-	@true
-
-configure: configure.ac
-build/configure-stamp: configure buildlib/config.sub buildlib/config.guess
-	dh_testdir
-	mkdir -p build
-	cp COPYING debian/copyright
-	cd build && CXXFLAGS="$(CXXFLAGS)" LDFLAGS="$(LDFLAGS)" CPPFLAGS="$(CPPFLAGS)" ../configure $(confflags)
-	touch $@
-
-build/build-binary-stamp: build/configure-stamp
-	# Add here commands to compile the package.
-	$(MAKE) binary
-	# compat symlink for the locale split
-	mkdir -p build/usr/share 
-	cd build/usr/share && ln -f -s ../../locale .
-	# compile and run tests
-ifeq (,$(findstring nocheck, $(DEB_BUILD_OPTIONS)))
-	$(MAKE) test
-else
-	@echo "Tests DISABLED"
-endif
-	touch $@
-
-build/build-docbook-stamp: build/configure-stamp
-	# Add here commands to compile the package.
-	$(MAKE) docbook
-	touch $@
-
-build/build-manpages-stamp: build/configure-stamp
-	# Add here commands to compile the package.
-	$(MAKE) manpages
-	touch $@
-
-clean:
-	dh_testdir
-	dh_clean
-
-	[ ! -f Makefile ] || $(MAKE) clean distclean
-	rm -rf build
-	rm -f debian/$(LIBAPT_PKG).install debian/$(LIBAPT_INST).install \
-	      debian/libapt-pkg-dev.install debian/apt.install
-	test ! -L buildlib/config.guess || rm -f buildlib/config.guess
-	test ! -L buildlib/config.sub || rm -f buildlib/config.sub
-
-debian/%.install: debian/%.install.in
-	sed 's/@DEB_HOST_MULTIARCH@/$(DEB_HOST_MULTIARCH)/g' $< > $@
-
-# Build architecture-independent files here.
-libapt-pkg-doc: build-docbook
-	dh_testdir -p$@
-	dh_testroot -p$@
-	dh_prep -p$@
-	dh_installdirs -p$@
-#
-# libapt-pkg-doc install
-#
-	rm -f $(BLD)/doc/doxygen/html/*.map $(BLD)/doc/doxygen/html/*.md5
-	dh_installdocs -p$@
-	dh_installexamples -p$@
-	dh_lintian -p$@
-	dh_installchangelogs -p$@
-	dh_strip -p$@
-	dh_compress -p$@ -X.xhtml
-	dh_fixperms -p$@
-	dh_installdeb -p$@
-	dh_gencontrol -p$@
-	dh_md5sums -p$@
-	dh_builddeb -p$@
-
-apt-doc: build-docbook
-	dh_testdir -p$@
-	dh_testroot -p$@
-	dh_prep -p$@
-#
-# apt-doc install
-#
-	# Copy the guides
-	dh_installdocs -p$@
-	dh_installchangelogs -p$@
-	dh_compress -p$@
-	dh_fixperms -p$@
-	dh_installdeb -p$@
-	dh_gencontrol -p$@
-	dh_md5sums -p$@
-	dh_builddeb -p$@
-
-
-
-# Build architecture-dependent files here.
-
-apt_MANPAGES = apt apt-cache apt-cdrom apt-config apt-get apt-key apt-mark apt-secure apt apt.conf apt_preferences sources.list
-apt: build-binary build-manpages debian/apt.install
-	dh_testdir -p$@
-	dh_testroot -p$@
-	dh_prep -p$@
-	dh_installdirs -p$@
-#
-# apt install
-#
-	cp debian/apt.conf.autoremove debian/$@/etc/apt/apt.conf.d/01autoremove
-	cp debian/apt.auto-removal.sh debian/$@/etc/kernel/postinst.d/apt-auto-removal
-	chmod 755 debian/$@/etc/kernel/postinst.d/apt-auto-removal
-	# install vendor specific apt confs
-	find -L vendor/current -name 'apt.conf-*' | while read conf; do cp "$${conf}" "debian/$@/etc/apt/apt.conf.d/$${conf#*-}"; done
-
-	# make rosetta happy and remove pot files in po/ (but leave stuff
-	# in po/domains/* untouched) and cp *.po into each domain dir
-	rm -f build/po/*.pot
-	rm -f po/*.pot
-
-	dh_install -p$@ --sourcedir=$(BLD)
-
-	# Remove the bits that are in apt-utils
-	rm $(addprefix debian/$@/usr/bin/apt-,$(APT_UTILS) dump-solver internal-solver internal-planner)
-	cp $(BLD)/bin/apt-dump-solver debian/$@/usr/lib/apt/solvers/dump
-	ln -s ../solvers/dump debian/$@/usr/lib/apt/planners/dump
-
-	# https has its own package
-	rm debian/$@/usr/lib/apt/methods/https
-
-	# move the mirror failure script in place
-	#mv debian/$@/usr/bin/apt-report-mirror-failure \
-	#   debian/$@/usr/lib/apt/apt-report-mirror-failure \
-
-	# move the apt-helper in place
-	mv debian/$@/usr/bin/apt-helper debian/$@/usr/lib/apt/apt-helper
-	# install apt.systemd.daily helper in the right place
-	install -m755 debian/apt.systemd.daily debian/$@/usr/lib/apt/
-
-	dh_bugfiles -p$@
-	dh_lintian -p$@
-	dh_installexamples -p$@
-	dh_installman -p$@ $(wildcard $(patsubst %,doc/en/%.[158],$(apt_MANPAGES)) $(patsubst %,doc/*/%.*.[158],$(apt_MANPAGES)))
-	dh_installcron -p$@ --name=apt-compat
-	dh_systemd_enable -p$@ apt-daily.timer
-	dh_systemd_start -p$@ apt-daily.timer
-	dh_installdocs -p$@
-	dh_installchangelogs -p$@
-	dh_installlogrotate -p$@
-	dh_strip -p$@
-	dh_compress -p$@
-	dh_fixperms -p$@
-	dh_makeshlibs -p$@
-	dh_installdeb -p$@
-	dh_shlibdeps -p$@
-	dh_gencontrol -p$@ -- -Vapt:keyring="$(shell ./vendor/getinfo keyring-package)"
-	dh_md5sums -p$@
-	dh_builddeb -p$@
-
-libapt-pkg-dev: build-binary debian/libapt-pkg-dev.install
-	dh_testdir -p$@
-	dh_testroot -p$@
-	dh_prep -p$@
-	dh_installdirs -p$@
-#
-# libapt-pkg-dev install
-#
-	dh_install -p$@ --sourcedir=$(BLD)
-	dh_installdocs -p$@
-	dh_installchangelogs -p$@
-	dh_strip -p$@
-	dh_compress -p$@
-	dh_fixperms -p$@
-	dh_installdeb -p$@
-	dh_gencontrol -p$@ -- -Vlibapt-pkg-name=$(LIBAPT_PKG) -Vlibapt-inst-name=$(LIBAPT_INST)
-	dh_md5sums -p$@
-	dh_builddeb -p$@
-
-apt-utils_MANPAGES = apt-sortpkgs apt-ftparchive apt-extracttemplates
-apt-utils: build-binary build-manpages
-	dh_testdir -p$@
-	dh_testroot -p$@
-	dh_prep -p$@
-	dh_installdirs -p$@
-
-	cp $(addprefix $(BLD)/bin/apt-,$(APT_UTILS)) debian/$@/usr/bin/
-	cp $(BLD)/bin/apt-internal-solver debian/$@/usr/lib/apt/solvers/apt
-	cp $(BLD)/bin/apt-internal-planner debian/$@/usr/lib/apt/planners/apt
-
-	dh_install -p$@ --sourcedir=$(BLD)
-	dh_link -p$@
-	dh_installdocs -p$@
-	dh_installexamples -p$@
-
-	# Install the man pages..
-	dh_installman -p$@ $(wildcard $(patsubst %,doc/en/%.[158],$(apt-utils_MANPAGES)) $(patsubst %,doc/*/%.*.[158],$(apt-utils_MANPAGES)))
-
-	dh_installchangelogs -p$@
-	dh_strip -p$@
-	dh_compress -p$@
-	dh_fixperms -p$@
-	dh_makeshlibs -p$@
-	dh_installdeb -p$@
-	dh_shlibdeps -p$@
-	dh_gencontrol -p$@
-	dh_md5sums -p$@
-	dh_builddeb -p$@
-
-$(LIBAPT_PKG): build-binary debian/$(LIBAPT_PKG).install
-	dh_testdir -p$@
-	dh_testroot -p$@
-	dh_prep -p$@
-	dh_installdirs -p$@
-
-	dh_install -p$@ --sourcedir=$(BLD)
-	dh_installdocs -p$@
-	dh_installchangelogs -p$@
-	dh_strip -p$@
-	dh_compress -p$@
-	dh_fixperms -p$@
-	dh_makeshlibs -p$@
-	dh_installdeb -p$@
-	dh_shlibdeps -p$@ 
-	dh_gencontrol -p$@
-	dh_md5sums -p$@
-	dh_builddeb -p$@
-
-$(LIBAPT_INST): build-binary debian/$(LIBAPT_INST).install
-	dh_testdir -p$@
-	dh_testroot -p$@
-	dh_prep -p$@
-	dh_installdirs -p$@
-
-	dh_install -p$@ --sourcedir=$(BLD)
-	dh_installdocs -p$@
-	dh_installchangelogs -p$@
-	dh_strip -p$@
-	dh_compress -p$@
-	dh_fixperms -p$@
-	dh_makeshlibs -p$@
-	dh_installdeb -p$@
-	dh_shlibdeps -p$@
-	dh_gencontrol -p$@
-	dh_md5sums -p$@
-	dh_builddeb -p$@
-
-apt-transport-https: build-binary libapt-pkg-dev
-	dh_testdir -p$@
-	dh_testroot -p$@
-	dh_prep -p$@
-	dh_installdirs -p$@
+%:
+	dh $@ --with systemd --parallel --buildsystem=cmake
 
 
-	dh_install -p$@ --sourcedir=$(BLD)
-	dh_installdocs -p$@
-	dh_installexamples -p$@
+override_dh_install-indep:
+	dh_movefiles
+	dh_install --list-missing
 
 
-	# Install the man pages..
-	dh_installman -p$@
+	find debian/libapt-pkg-doc/usr/share/doc/libapt-pkg-doc/html \( -name '*.md5' -o -name '*.map' \) -delete
 
 
-	dh_installchangelogs -p$@
-	dh_strip -p$@
-	dh_compress -p$@
-	dh_fixperms -p$@
-	dh_installdeb -p$@
-	dh_shlibdeps -p$@
-	dh_gencontrol -p$@
-	dh_md5sums -p$@
-	dh_builddeb -p$@
+override_dh_install-arch:
+	dh_movefiles
+	dh_install --fail-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
 
 
-buildlib/config.guess buildlib/config.sub:
-	$(MAKE) "$@"
+override_dh_gencontrol:
+	dh_gencontrol -- -Vapt:keyring="$(shell ./vendor/getinfo keyring-package)"
 
 
-configure:
-	$(MAKE) configure
+override_dh_installcron:
+	dh_installcron --name=apt-compat
 
 
-# translate targets to targets required by debian-policy
-binary-arch: $(LIBAPT_PKG) $(LIBAPT_INST) apt libapt-pkg-dev apt-utils apt-transport-https
-binary-indep: apt-doc libapt-pkg-doc
-binary: binary-indep binary-arch
-build-arch: build-binary
-build-indep: build-manpages build-docbook
-build: build-indep build-arch
 
 
-.PHONY: build clean binary-indep binary-arch binary
+override_dh_auto_configure-arch: flags=-DWITH_DOC=OFF
+override_dh_auto_configure-indep: flags=-DWITH_DOC=ON
+override_dh_auto_configure-arch override_dh_auto_configure-indep:
+	dh_auto_configure -- $(flags)

+ 7 - 5
debian/tests/run-tests

@@ -2,22 +2,24 @@
 
 
 set -e
 set -e
 
 
-# we need the buildin webserver for the tests
-if [ ! -e environment.mak ]; then
-    make startup
+if [ ! -e build/CMakeCache.txt ]; then
+    mkdir build || true
+    ( cd build && cmake .. )
 fi
 fi
-make -C test/interactive-helper/
+
+make -C build/test/interactive-helper
 
 
 # run tests against the installed apt, use "env -i" to ensure
 # run tests against the installed apt, use "env -i" to ensure
 # the host env does not pollute our environment
 # the host env does not pollute our environment
 env -i \
 env -i \
 APT_INTEGRATION_TESTS_SOURCE_DIR=$(pwd) \
 APT_INTEGRATION_TESTS_SOURCE_DIR=$(pwd) \
-APT_INTEGRATION_TESTS_WEBSERVER_BIN_DIR=$(pwd)/build/bin \
+APT_INTEGRATION_TESTS_WEBSERVER_BIN_DIR=$(pwd)/build/test/interactive-helper \
 APT_INTEGRATION_TESTS_METHODS_DIR=/usr/lib/apt/methods \
 APT_INTEGRATION_TESTS_METHODS_DIR=/usr/lib/apt/methods \
 APT_INTEGRATION_TESTS_LIBEXEC_DIR=/usr/lib/apt/ \
 APT_INTEGRATION_TESTS_LIBEXEC_DIR=/usr/lib/apt/ \
 APT_INTEGRATION_TESTS_INTERNAL_SOLVER=/usr/lib/apt/solvers/apt \
 APT_INTEGRATION_TESTS_INTERNAL_SOLVER=/usr/lib/apt/solvers/apt \
 APT_INTEGRATION_TESTS_DUMP_SOLVER=/usr/lib/apt/solvers/dump \
 APT_INTEGRATION_TESTS_DUMP_SOLVER=/usr/lib/apt/solvers/dump \
 APT_INTEGRATION_TESTS_INTERNAL_PLANNER=/usr/lib/apt/planners/apt \
 APT_INTEGRATION_TESTS_INTERNAL_PLANNER=/usr/lib/apt/planners/apt \
 APT_INTEGRATION_TESTS_BUILD_DIR=/usr/bin \
 APT_INTEGRATION_TESTS_BUILD_DIR=/usr/bin \
+APT_INTEGRATION_TESTS_FTPARCHIVE_BIN_DIR=/usr/bin \
 APT_INTEGRATION_TESTS_LIBRARY_PATH=/dev/null/does/not/exist \
 APT_INTEGRATION_TESTS_LIBRARY_PATH=/dev/null/does/not/exist \
 ./test/integration/run-tests -q
 ./test/integration/run-tests -q

+ 85 - 0
doc/CMakeLists.txt

@@ -0,0 +1,85 @@
+include(Documentation)
+
+set(LINGUAS
+    de
+    es
+    fr
+    it
+    ja
+    nl
+    pl
+    pt_BR
+    pt
+)
+
+set(ENTITIES
+    apt.ent
+    apt-verbatim.ent
+    ../vendor/${CURRENT_VENDOR}/apt-vendor.ent
+)
+
+if(WITH_DOC)
+add_docbook(apt-doc HTML TEXT ALL
+    DOCUMENTS
+        guide.dbk
+        offline.dbk
+    INSTALL ${CMAKE_INSTALL_DOCDIR}/../apt-doc
+    LINGUAS ${LINGUAS}
+    DEPENDS ${ENTITIES}
+)
+
+add_docbook(libapt-pkg-doc HTML TEXT ALL
+    DOCUMENTS
+        design.dbk
+        dpkg-tech.dbk
+        files.dbk
+        method.dbk
+    INSTALL ${CMAKE_INSTALL_DOCDIR}/../libapt-pkg-doc
+    LINGUAS ${LINGUAS}
+    DEPENDS ${ENTITIES}
+)
+
+find_package(Doxygen)
+
+file(GLOB_RECURSE apt_pkg "../apt-pkg/*.h" "../apt-pkg/*.cc")
+configure_file(Doxyfile.in ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile)
+
+add_custom_command(
+    OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/doxygen.stamp
+    COMMAND doxygen ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile
+    COMMAND ${CMAKE_COMMAND} -E touch ${CMAKE_CURRENT_BINARY_DIR}/doxygen.stamp
+    DEPENDS ${apt_pkg} ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile
+)
+
+add_custom_target(apt-doxygen ALL
+    DEPENDS ${PROJECT_BINARY_DIR}/doc/doxygen.stamp
+)
+
+install(DIRECTORY  ${PROJECT_BINARY_DIR}/doc/doxygen/html
+        DESTINATION ${CMAKE_INSTALL_DOCDIR}/../libapt-pkg-doc)
+
+endif()
+
+add_docbook(apt-man MANPAGE ALL
+    DOCUMENTS
+        apt.8.xml
+        apt-cache.8.xml
+        apt-cdrom.8.xml
+        apt.conf.5.xml
+        apt-config.8.xml
+        apt-extracttemplates.1.xml
+        apt-ftparchive.1.xml
+        apt-get.8.xml
+        apt-key.8.xml
+        apt-mark.8.xml
+        apt_preferences.5.xml
+        apt-secure.8.xml
+        apt-sortpkgs.1.xml
+        sources.list.5.xml
+    DEPENDS ${ENTITIES}
+    LINGUAS ${LINGUAS}
+)
+
+add_update_po4a(update-po4a po/${PROJECT_NAME}-doc.pot "po/header.pot.txt")
+
+add_subdirectory(examples)

+ 6 - 6
doc/Doxyfile.in

@@ -58,7 +58,7 @@ PROJECT_LOGO           =
 # entered, it will be relative to the location where doxygen was started. If
 # entered, it will be relative to the location where doxygen was started. If
 # left blank the current directory will be used.
 # left blank the current directory will be used.
 
 
-OUTPUT_DIRECTORY       = ../build/doc/doxygen
+OUTPUT_DIRECTORY       = @PROJECT_BINARY_DIR@/doc/doxygen
 
 
 # If the CREATE_SUBDIRS tag is set to YES, then doxygen will create 4096 sub-
 # If the CREATE_SUBDIRS tag is set to YES, then doxygen will create 4096 sub-
 # directories (in 2 levels) under the output directory of each output format and
 # directories (in 2 levels) under the output directory of each output format and
@@ -152,7 +152,7 @@ FULL_PATH_NAMES        = YES
 # will be relative from the directory where doxygen is started.
 # will be relative from the directory where doxygen is started.
 # This tag requires that the tag FULL_PATH_NAMES is set to YES.
 # This tag requires that the tag FULL_PATH_NAMES is set to YES.
 
 
-STRIP_FROM_PATH        = @top_srcdir@
+STRIP_FROM_PATH        = @PROJECT_SOURCE_DIR@
 
 
 # The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of the
 # The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of the
 # path mentioned in the documentation of a class, which tells the reader which
 # path mentioned in the documentation of a class, which tells the reader which
@@ -161,7 +161,7 @@ STRIP_FROM_PATH        = @top_srcdir@
 # specify the list of include paths that are normally passed to the compiler
 # specify the list of include paths that are normally passed to the compiler
 # using the -I flag.
 # using the -I flag.
 
 
-STRIP_FROM_INC_PATH    = @top_srcdir@
+STRIP_FROM_INC_PATH    = @PROJECT_SOURCE_DIR@
 
 
 # If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter (but
 # If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter (but
 # less readable) file names. This can be useful is your file systems doesn't
 # less readable) file names. This can be useful is your file systems doesn't
@@ -754,7 +754,7 @@ WARN_LOGFILE           =
 # spaces.
 # spaces.
 # Note: If this tag is empty the current directory is searched.
 # Note: If this tag is empty the current directory is searched.
 
 
-INPUT                  = ../apt-pkg
+INPUT                  = ${PROJECT_SOURCE_DIR}/apt-pkg
 
 
 # This tag can be used to specify the character encoding of the source files
 # This tag can be used to specify the character encoding of the source files
 # that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses
 # that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses
@@ -2057,7 +2057,7 @@ HIDE_UNDOC_RELATIONS   = YES
 # set to NO
 # set to NO
 # The default value is: YES.
 # The default value is: YES.
 
 
-HAVE_DOT               = @HAVE_DOT@
+HAVE_DOT               = @DOXYGEN_DOT_FOUND@
 
 
 # The DOT_NUM_THREADS specifies the number of dot invocations doxygen is allowed
 # The DOT_NUM_THREADS specifies the number of dot invocations doxygen is allowed
 # to run in parallel. When set to 0 doxygen will base this on the number of
 # to run in parallel. When set to 0 doxygen will base this on the number of
@@ -2231,7 +2231,7 @@ INTERACTIVE_SVG        = YES
 # found. If left blank, it is assumed the dot tool can be found in the path.
 # found. If left blank, it is assumed the dot tool can be found in the path.
 # This tag requires that the tag HAVE_DOT is set to YES.
 # This tag requires that the tag HAVE_DOT is set to YES.
 
 
-DOT_PATH               = @DOTDIR@
+DOT_PATH               = @DOXYGEN_DOT_PATH@
 
 
 # The DOTFILE_DIRS tag can be used to specify one or more directories that
 # The DOTFILE_DIRS tag can be used to specify one or more directories that
 # contain dot files that are included in the documentation (see the \dotfile
 # contain dot files that are included in the documentation (see the \dotfile

+ 1 - 1
doc/apt-ftparchive.1.xml

@@ -14,7 +14,7 @@
    &apt-email;
    &apt-email;
    &apt-product;
    &apt-product;
    <!-- The last update date -->
    <!-- The last update date -->
-   <date>2016-07-08T00:00:00Z</date>
+   <date>2016-08-06T00:00:00Z</date>
  </refentryinfo>
  </refentryinfo>
  
  
  <refmeta>
  <refmeta>

+ 1 - 1
doc/apt-get.8.xml

@@ -14,7 +14,7 @@
    &apt-email;
    &apt-email;
    &apt-product;
    &apt-product;
    <!-- The last update date -->
    <!-- The last update date -->
-   <date>2016-07-08T00:00:00Z</date>
+   <date>2016-08-06T00:00:00Z</date>
  </refentryinfo>
  </refentryinfo>
  
  
  <refmeta>
  <refmeta>

+ 1 - 1
doc/apt-secure.8.xml

@@ -13,7 +13,7 @@
    &apt-email;
    &apt-email;
    &apt-product;
    &apt-product;
    <!-- The last update date -->
    <!-- The last update date -->
-   <date>2016-07-08T00:00:00Z</date>
+   <date>2016-08-06T00:00:00Z</date>
  </refentryinfo>
  </refentryinfo>
 
 
  <refmeta>
  <refmeta>

+ 1 - 1
doc/apt-verbatim.ent

@@ -239,7 +239,7 @@
 ">
 ">
 
 
 <!-- this will be updated by 'prepare-release' -->
 <!-- this will be updated by 'prepare-release' -->
-<!ENTITY apt-product-version "1.3~pre3">
+<!ENTITY apt-product-version "1.3~pre3+cmake2">
 
 
 <!-- (Code)names for various things used all over the place -->
 <!-- (Code)names for various things used all over the place -->
 <!ENTITY debian-oldstable-codename "wheezy">
 <!ENTITY debian-oldstable-codename "wheezy">

+ 1 - 1
doc/apt.conf.5.xml

@@ -19,7 +19,7 @@
    &apt-email;
    &apt-email;
    &apt-product;
    &apt-product;
    <!-- The last update date -->
    <!-- The last update date -->
-   <date>2016-07-08T00:00:00Z</date>
+   <date>2016-08-06T00:00:00Z</date>
  </refentryinfo>
  </refentryinfo>
  
  
  <refmeta>
  <refmeta>

+ 0 - 37
doc/en/makefile

@@ -1,37 +0,0 @@
-# -*- make -*-
-BASE=../..
-SUBDIR=doc/en
-
-# Bring in the default rules
-include ../../buildlib/defaults.mak
-
-# Do not use XMLTO, build the manpages directly with XSLTPROC
-ifdef XSLTPROC
-# generate a list of accepted man page translations
-SOURCE = $(patsubst ../%.xml,%,$(wildcard ../*.?.xml))
-INCLUDES = ../apt.ent ../apt-verbatim.ent apt-vendor.ent
-STYLESHEET=../manpage-style.xsl
-
-LOCAL := manpage-$(firstword $(SOURCE))
-$(LOCAL)-LIST := $(SOURCE)
-
-apt-vendor.ent: ../../vendor/current/apt-vendor.ent
-	ln -sf '$(abspath $^)' $@
-
-# Install generation hooks
-manpages: $($(LOCAL)-LIST)
-
-$($(LOCAL)-LIST) :: % : ../%.xml $(STYLESHEET) $(INCLUDES)
-	echo Creating man page $@
-	$(XSLTPROC) -o $@ $(STYLESHEET) $<
-
-# Clean rule
-.PHONY: clean/$(LOCAL)
-veryclean: clean/$(LOCAL)
-clean: clean/$(LOCAL)
-clean/$(LOCAL):
-	-rm -rf $($(@F)-LIST) apt-vendor.ent
-endif
-
-# Chain to the manpage rule
-include $(MANPAGE_H)

+ 4 - 0
doc/examples/CMakeLists.txt

@@ -0,0 +1,4 @@
+install(FILES apt.conf apt-https-method-example.conf configure-index preferences
+        DESTINATION ${CMAKE_INSTALL_DOCDIR}/examples)
+install(FILES apt-ftparchive.conf ftp-archive.conf
+        DESTINATION ${CMAKE_INSTALL_DOCDIR}/../apt-utils/examples)

+ 0 - 11
doc/lang.makefile

@@ -1,11 +0,0 @@
-# -*- make -*-
-BASE=../..
-SUBDIR=doc/@@LANG@@
-
-# Bring in the default rules
-include ../../buildlib/defaults.mak
-
-# Language Code of this translation
-LC=@@LANG@@
-
-include $(PO4A_MANPAGE_H)

+ 0 - 113
doc/makefile

@@ -1,113 +0,0 @@
-# -*- make -*-
-BASE=..
-SUBDIR=doc
-
-# Bring in the default rules
-include ../buildlib/defaults.mak
-
-# DocBook XML Documents
-SOURCE = $(wildcard *.dbk)
-LC = en
-include $(DOCBOOK_H)
-
-doc: manpages docbook
-
-examples/sources.list: ../vendor/current/sources.list
-	ln -sf '$(abspath $^)' $@
-
-apt-vendor.ent: ../vendor/current/apt-vendor.ent
-	ln -sf '$(abspath $^)' $@
-
-# Examples
-SOURCE = examples/apt.conf examples/sources.list examples/configure-index examples/apt-https-method-example.conf
-TO = $(DOC)
-TARGET = binary
-include $(COPY_H)
-
-.PHONY: clean clean/subdirs veryclean veryclean/subdirs manpages/subdirs docbook/subdirs all binary doc stats
-
-clean: clean/subdirs clean/examples
-veryclean: veryclean/subdirs clean/examples
-manpages: apt-vendor.ent manpages/subdirs
-docbook: apt-vendor.ent docbook/subdirs
-
-DOCUMENTATIONPO = $(patsubst %.po,%,$(notdir $(wildcard po/*.po)))
-DOCDIRLIST = $(addsuffix /makefile,$(DOCUMENTATIONPO))
-
-dirs: $(DOCDIRLIST)
-$(DOCDIRLIST) :: %/makefile : lang.makefile
-	test -d $(dir $@) || mkdir $(dir $@)
-	sed "s#@@LANG@@#$(subst /,,$(dir $@))#" $< > $@
-
-docbook/subdirs manpages/subdirs clean/subdirs veryclean/subdirs:
-	for dir in en $(dir $(DOCDIRLIST)); do \
-		$(MAKE) -C $$dir $(patsubst %/subdirs,%,$@); \
-	done
-
-clean/examples:
-	rm -f examples/sources.list
-	rm -f apt-vendor.ent
-
-stats:
-	for i in po/*.po; do echo -n "$$i: "; msgfmt --output-file=/dev/null --statistics $$i; done
-
-ifdef PO4A
-MANPAGEPOLIST = $(addprefix manpages-translation-,$(DOCUMENTATIONPO))
-DOCBOOKPOLIST = $(addprefix docbook-translation-,$(DOCUMENTATIONPO))
-
-.PHONY: update-po po4a $(MANPAGEPOLIST) $(DOCBOOKPOLIST) $(DOCDIRLIST)
-
-po4a: manpages/subdirs docbook/subdirs
-
-update-po:
-	po4a --previous --no-backups --force --no-translations \
-		--msgmerge-opt --add-location=file \
-		--porefs noline,wrap \
-		--package-name='$(PACKAGE)-doc' --package-version='$(PACKAGE_VERSION)' \
-		--msgid-bugs-address='$(PACKAGE_MAIL)' po4a.conf
-	sed -n '/^#$$/,$$p' po/apt-doc.pot > po/apt-doc.pot.headerfree
-	#cat po/apt-doc.pot > po/apt-doc.pot.headerfree
-	cat po/header.pot.txt po/apt-doc.pot.headerfree > po/apt-doc.pot
-	rm -f po/apt-doc.pot.headerfree
-
-manpages/subdirs: $(MANPAGEPOLIST)
-$(MANPAGEPOLIST) :: manpages-translation-% : %/makefile po4a.conf
-	po4a --previous --no-backups --translate-only $(dir $<)apt.ent \
-		--msgmerge-opt --add-location=file \
-		$(patsubst %,--translate-only $(dir $<)%,$(patsubst %.1.xml,%.$(subst /,,$(dir $<)).1.xml,$(wildcard *.1.xml))) \
-		$(patsubst %,--translate-only $(dir $<)%,$(patsubst %.2.xml,%.$(subst /,,$(dir $<)).2.xml,$(wildcard *.2.xml))) \
-		$(patsubst %,--translate-only $(dir $<)%,$(patsubst %.3.xml,%.$(subst /,,$(dir $<)).3.xml,$(wildcard *.3.xml))) \
-		$(patsubst %,--translate-only $(dir $<)%,$(patsubst %.4.xml,%.$(subst /,,$(dir $<)).4.xml,$(wildcard *.4.xml))) \
-		$(patsubst %,--translate-only $(dir $<)%,$(patsubst %.5.xml,%.$(subst /,,$(dir $<)).5.xml,$(wildcard *.5.xml))) \
-		$(patsubst %,--translate-only $(dir $<)%,$(patsubst %.6.xml,%.$(subst /,,$(dir $<)).6.xml,$(wildcard *.6.xml))) \
-		$(patsubst %,--translate-only $(dir $<)%,$(patsubst %.7.xml,%.$(subst /,,$(dir $<)).7.xml,$(wildcard *.7.xml))) \
-		$(patsubst %,--translate-only $(dir $<)%,$(patsubst %.8.xml,%.$(subst /,,$(dir $<)).8.xml,$(wildcard *.8.xml))) \
-		--package-name='$(PACKAGE)-doc' --package-version='$(PACKAGE_VERSION)' \
-		--msgid-bugs-address='$(PACKAGE_MAIL)' po4a.conf
-
-docbook/subdirs: $(DOCBOOKPOLIST)
-$(DOCBOOKPOLIST) :: docbook-translation-% : %/makefile po4a.conf
-	po4a --previous --no-backups --translate-only $(dir $<)apt.ent \
-		--msgmerge-opt --add-location=file \
-		$(patsubst %,--translate-only $(dir $<)%,$(patsubst %.dbk,%.$(subst /,,$(dir $<)).dbk,$(wildcard *.dbk))) \
-		--package-name='$(PACKAGE)-doc' --package-version='$(PACKAGE_VERSION)' \
-		--msgid-bugs-address='$(PACKAGE_MAIL)' po4a.conf
-endif
-
-ifdef DOXYGEN
-DOXYGEN_SOURCES = $(shell find $(BASE)/apt-pkg -not -name .\\\#* -and \( -name \*.cc -or -name \*.h \) )
-
-clean: doxygen-clean
-
-doxygen-clean:
-	rm -fr $(BUILD)/doc/doxygen
-	rm -f $(BUILD)/doc/doxygen-stamp
-
-$(BUILD)/doc/doxygen-stamp: $(DOXYGEN_SOURCES) $(BUILD)/doc/Doxyfile
-	rm -fr $(BUILD)/doc/doxygen
-	mkdir $(BUILD)/doc/doxygen  # some versions seem to not create this directory #628799
-	$(DOXYGEN) $(BUILD)/doc/Doxyfile
-	touch $(BUILD)/doc/doxygen-stamp
-
-docbook: $(BUILD)/doc/doxygen-stamp
-endif

+ 2 - 2
doc/po/apt-doc.pot

@@ -5,9 +5,9 @@
 #, fuzzy
 #, fuzzy
 msgid ""
 msgid ""
 msgstr ""
 msgstr ""
-"Project-Id-Version: apt-doc 1.3~pre3\n"
+"Project-Id-Version: apt-doc 1.3~pre3+cmake2\n"
 "Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n"
 "Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n"
-"POT-Creation-Date: 2016-08-06 22:20+0200\n"
+"POT-Creation-Date: 2016-08-06 23:20+0200\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"

+ 1 - 1
doc/po/de.po

@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 msgstr ""
 "Project-Id-Version: apt-doc 1.0.8\n"
 "Project-Id-Version: apt-doc 1.0.8\n"
 "Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n"
 "Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n"
-"POT-Creation-Date: 2016-08-06 22:20+0200\n"
+"POT-Creation-Date: 2016-08-06 23:20+0200\n"
 "PO-Revision-Date: 2014-09-14 14:46+0200\n"
 "PO-Revision-Date: 2014-09-14 14:46+0200\n"
 "Last-Translator: Chris Leick <c.leick@vollbio.de>\n"
 "Last-Translator: Chris Leick <c.leick@vollbio.de>\n"
 "Language-Team: German <debian-l10n-german@lists.debian.org>\n"
 "Language-Team: German <debian-l10n-german@lists.debian.org>\n"

+ 1 - 1
doc/po/es.po

@@ -38,7 +38,7 @@ msgid ""
 msgstr ""
 msgstr ""
 "Project-Id-Version: apt-doc 1.0.5\n"
 "Project-Id-Version: apt-doc 1.0.5\n"
 "Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n"
 "Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n"
-"POT-Creation-Date: 2016-08-06 22:20+0200\n"
+"POT-Creation-Date: 2016-08-06 23:20+0200\n"
 "PO-Revision-Date: 2014-07-04 01:31+0200\n"
 "PO-Revision-Date: 2014-07-04 01:31+0200\n"
 "Last-Translator: Omar Campagne <ocampagne@gmail.com>\n"
 "Last-Translator: Omar Campagne <ocampagne@gmail.com>\n"
 "Language-Team: Debian l10n Spanish <debian-l10n-spanish@lists.debian.org>\n"
 "Language-Team: Debian l10n Spanish <debian-l10n-spanish@lists.debian.org>\n"

+ 1 - 1
doc/po/fr.po

@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 msgstr ""
 "Project-Id-Version: apt-doc 1.0.5\n"
 "Project-Id-Version: apt-doc 1.0.5\n"
 "Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n"
 "Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n"
-"POT-Creation-Date: 2016-08-06 22:20+0200\n"
+"POT-Creation-Date: 2016-08-06 23:20+0200\n"
 "PO-Revision-Date: 2014-11-15 17:26+0100\n"
 "PO-Revision-Date: 2014-11-15 17:26+0100\n"
 "Last-Translator: Jean-Pierre Giraud <jean-pierregiraud@neuf.fr>\n"
 "Last-Translator: Jean-Pierre Giraud <jean-pierregiraud@neuf.fr>\n"
 "Language-Team: French <debian-l10n-french@lists.debian.org>\n"
 "Language-Team: French <debian-l10n-french@lists.debian.org>\n"

+ 1 - 1
doc/po/it.po

@@ -10,7 +10,7 @@ msgid ""
 msgstr ""
 msgstr ""
 "Project-Id-Version: apt-doc 1.0.5\n"
 "Project-Id-Version: apt-doc 1.0.5\n"
 "Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n"
 "Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n"
-"POT-Creation-Date: 2016-08-06 22:20+0200\n"
+"POT-Creation-Date: 2016-08-06 23:20+0200\n"
 "PO-Revision-Date: 2015-12-27 21:26+0200\n"
 "PO-Revision-Date: 2015-12-27 21:26+0200\n"
 "Last-Translator: Beatrice Torracca <beatricet@libero.it>\n"
 "Last-Translator: Beatrice Torracca <beatricet@libero.it>\n"
 "Language-Team: Italian <debian-l10n-italian@lists.debian.org>\n"
 "Language-Team: Italian <debian-l10n-italian@lists.debian.org>\n"

+ 1 - 1
doc/po/ja.po

@@ -10,7 +10,7 @@ msgid ""
 msgstr ""
 msgstr ""
 "Project-Id-Version: apt-doc 1.0.6\n"
 "Project-Id-Version: apt-doc 1.0.6\n"
 "Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n"
 "Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n"
-"POT-Creation-Date: 2016-08-06 22:20+0200\n"
+"POT-Creation-Date: 2016-08-06 23:20+0200\n"
 "PO-Revision-Date: 2016-03-23 09:39+0900\n"
 "PO-Revision-Date: 2016-03-23 09:39+0900\n"
 "Last-Translator: Takuma Yamada <tyamada@takumayamada.com>\n"
 "Last-Translator: Takuma Yamada <tyamada@takumayamada.com>\n"
 "Language-Team: Japanese <debian-japanese@lists.debian.org>\n"
 "Language-Team: Japanese <debian-japanese@lists.debian.org>\n"

+ 1 - 1
doc/po/nl.po

@@ -6,7 +6,7 @@ msgid ""
 msgstr ""
 msgstr ""
 "Project-Id-Version: apt-doc 1.1.10-nl\n"
 "Project-Id-Version: apt-doc 1.1.10-nl\n"
 "Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n"
 "Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n"
-"POT-Creation-Date: 2016-08-06 22:20+0200\n"
+"POT-Creation-Date: 2016-08-06 23:20+0200\n"
 "PO-Revision-Date: 2016-02-01 16:17+0100\n"
 "PO-Revision-Date: 2016-02-01 16:17+0100\n"
 "Last-Translator: Frans Spiesschaert <Frans.Spiesschaert@yucom.be>\n"
 "Last-Translator: Frans Spiesschaert <Frans.Spiesschaert@yucom.be>\n"
 "Language-Team: Debian Dutch l10n Team <debian-l10n-dutch@lists.debian.org>\n"
 "Language-Team: Debian Dutch l10n Team <debian-l10n-dutch@lists.debian.org>\n"

+ 1 - 1
doc/po/pl.po

@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 msgstr ""
 "Project-Id-Version: apt-doc 1.0.5\n"
 "Project-Id-Version: apt-doc 1.0.5\n"
 "Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n"
 "Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n"
-"POT-Creation-Date: 2016-08-06 22:20+0200\n"
+"POT-Creation-Date: 2016-08-06 23:20+0200\n"
 "PO-Revision-Date: 2014-07-04 02:13+0200\n"
 "PO-Revision-Date: 2014-07-04 02:13+0200\n"
 "Last-Translator: Robert Luberda <robert@debian.org>\n"
 "Last-Translator: Robert Luberda <robert@debian.org>\n"
 "Language-Team: Polish <manpages-pl-list@lists.sourceforge.net>\n"
 "Language-Team: Polish <manpages-pl-list@lists.sourceforge.net>\n"

+ 1 - 1
doc/po/pt.po

@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 msgstr ""
 "Project-Id-Version: apt-doc 1.0.7\n"
 "Project-Id-Version: apt-doc 1.0.7\n"
 "Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n"
 "Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n"
-"POT-Creation-Date: 2016-08-06 22:20+0200\n"
+"POT-Creation-Date: 2016-08-06 23:20+0200\n"
 "PO-Revision-Date: 2014-08-29 00:34+0100\n"
 "PO-Revision-Date: 2014-08-29 00:34+0100\n"
 "Last-Translator: Américo Monteiro <a_monteiro@gmx.com>\n"
 "Last-Translator: Américo Monteiro <a_monteiro@gmx.com>\n"
 "Language-Team: Portuguese <traduz@debianpt.org>\n"
 "Language-Team: Portuguese <traduz@debianpt.org>\n"

+ 1 - 1
doc/po/pt_BR.po

@@ -9,7 +9,7 @@ msgid ""
 msgstr ""
 msgstr ""
 "Project-Id-Version: apt-doc 1.0.5\n"
 "Project-Id-Version: apt-doc 1.0.5\n"
 "Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n"
 "Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n"
-"POT-Creation-Date: 2016-08-06 22:20+0200\n"
+"POT-Creation-Date: 2016-08-06 23:20+0200\n"
 "PO-Revision-Date: 2004-09-20 17:02+0000\n"
 "PO-Revision-Date: 2004-09-20 17:02+0000\n"
 "Last-Translator: André Luís Lopes <andrelop@debian.org>\n"
 "Last-Translator: André Luís Lopes <andrelop@debian.org>\n"
 "Language-Team: <debian-l10n-portuguese@lists.debian.org>\n"
 "Language-Team: <debian-l10n-portuguese@lists.debian.org>\n"

+ 1 - 1
doc/sources.list.5.xml

@@ -14,7 +14,7 @@
    &apt-email;
    &apt-email;
    &apt-product;
    &apt-product;
    <!-- The last update date -->
    <!-- The last update date -->
-   <date>2016-07-08T00:00:00Z</date>
+   <date>2016-08-06T00:00:00Z</date>
  </refentryinfo>
  </refentryinfo>
  
  
  <refmeta>
  <refmeta>

+ 4 - 0
dselect/CMakeLists.txt

@@ -0,0 +1,4 @@
+install(PROGRAMS install setup update
+        DESTINATION ${CMAKE_INSTALL_LIBEXECDIR}/dpkg/methods/apt)
+install(FILES desc.apt names
+        DESTINATION ${CMAKE_INSTALL_LIBEXECDIR}/dpkg/methods/apt)

+ 0 - 17
dselect/makefile

@@ -1,17 +0,0 @@
-# -*- make -*-
-BASE=..
-SUBDIR=dselect
-
-# Bring in the default rules
-include ../buildlib/defaults.mak
-
-# DSelect interfacing directory
-SOURCE = desc.apt install names setup update
-TO = $(BUILD)/scripts/dselect
-TARGET = program
-include $(COPY_H)
-
-# LOCAL = dselect
-SOURCE = install update
-TYPE = sh
-include $(PODOMAIN_H)

+ 10 - 0
ftparchive/CMakeLists.txt

@@ -0,0 +1,10 @@
+# Create the executable tasks
+file(GLOB_RECURSE source "*.cc")
+add_executable(apt-ftparchive ${source})
+
+# Link the executables against the libraries
+target_include_directories(apt-ftparchive PRIVATE ${BERKELEY_DB_INCLUDE_DIRS})
+target_link_libraries(apt-ftparchive apt-inst apt-pkg apt-private ${BERKELEY_DB_LIBRARIES})
+
+# Install the executables
+install(TARGETS apt-ftparchive RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})

+ 0 - 21
ftparchive/makefile

@@ -1,21 +0,0 @@
-# -*- make -*-
-BASE=..
-SUBDIR=ftparchive
-
-# Bring in the default rules
-include ../buildlib/defaults.mak
-
-# The apt-ftparchive program
-ifdef BDBLIB
-APT_DOMAIN:=apt-utils
-PROGRAM=apt-ftparchive
-SLIBS = -lapt-pkg -lapt-inst -lapt-private $(BDBLIB) $(INTLLIBS)
-LIB_MAKES = apt-pkg/makefile apt-inst/makefile apt-private/makefile
-SOURCE = apt-ftparchive.cc cachedb.cc writer.cc contents.cc override.cc \
-         multicompress.cc sources.cc byhash.cc
-include $(PROGRAM_H)
-else
-PROGRAM=apt-ftparchive
-MESSAGE="Must have libdb to build apt-ftparchive"
-include $(FAIL_H)
-endif # ifdef BDBLIB

+ 35 - 0
methods/CMakeLists.txt

@@ -0,0 +1,35 @@
+# Create the executable targets
+add_executable(file file.cc)
+add_executable(copy copy.cc)
+add_executable(store store.cc)
+add_executable(gpgv gpgv.cc)
+add_executable(cdrom cdrom.cc)
+add_executable(http http.cc http_main.cc rfc2553emu.cc connect.cc server.cc)
+add_executable(mirror mirror.cc http.cc rfc2553emu.cc connect.cc server.cc)
+add_executable(https https.cc server.cc)
+add_executable(ftp ftp.cc rfc2553emu.cc connect.cc)
+add_executable(rred rred.cc)
+add_executable(rsh rsh.cc)
+
+# Add target-specific header directories
+target_include_directories(https PRIVATE ${CURL_INCLUDE_DIRS})
+
+# Link the executables against the libraries
+target_link_libraries(file apt-pkg)
+target_link_libraries(copy apt-pkg)
+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(https apt-pkg ${CURL_LIBRARIES})
+target_link_libraries(ftp apt-pkg)
+target_link_libraries(rred apt-pkg)
+target_link_libraries(rsh apt-pkg)
+
+# Install the library
+install(TARGETS file copy store gpgv cdrom http https ftp rred rsh mirror
+        RUNTIME DESTINATION ${CMAKE_INSTALL_LIBEXECDIR}/apt/methods)
+
+add_slaves(${CMAKE_INSTALL_LIBEXECDIR}/apt/methods store gzip lzma bzip2 xz)
+add_slaves(${CMAKE_INSTALL_LIBEXECDIR}/apt/methods rsh ssh)

+ 0 - 0
methods/makefile


Некоторые файлы не были показаны из-за большого количества измененных файлов