]> git.saurik.com Git - apt.git/commitdiff
Merge branch 'cmake'
authorJulian Andres Klode <jak@debian.org>
Wed, 10 Aug 2016 14:19:00 +0000 (16:19 +0200)
committerJulian Andres Klode <jak@debian.org>
Wed, 10 Aug 2016 14:19:00 +0000 (16:19 +0200)
123 files changed:
.gitignore
.travis.yml
CMake/Documentation.cmake [new file with mode: 0644]
CMake/FindBerkeleyDB.cmake [new file with mode: 0644]
CMake/Misc.cmake [new file with mode: 0644]
CMake/Translations.cmake [new file with mode: 0644]
CMake/apti18n.h.in [new file with mode: 0644]
CMake/config.h.in [new file with mode: 0644]
CMake/run_if_exists.sh [new file with mode: 0755]
CMake/statvfs.h.in [new file with mode: 0644]
CMake/vendor_substitute.cmake [new file with mode: 0644]
CMakeLists.txt [new file with mode: 0644]
COMPILING [deleted file]
Makefile [deleted file]
README.make [deleted file]
README.md
abicheck/apt_build.xml.in
abicheck/run_abi_test
apt-inst/CMakeLists.txt [new file with mode: 0644]
apt-inst/makefile [deleted file]
apt-pkg/CMakeLists.txt [new file with mode: 0644]
apt-pkg/deb/dpkgpm.cc
apt-pkg/makefile [deleted file]
apt-private/CMakeLists.txt [new file with mode: 0644]
apt-private/makefile [deleted file]
apt-private/private-cachefile.h
apt-private/private-cacheset.h
buildlib/apti18n.h.in [deleted file]
buildlib/config.h.in [deleted file]
buildlib/configure.mak [deleted file]
buildlib/copy.mak [deleted file]
buildlib/defaults.mak [deleted file]
buildlib/docbook.mak [deleted file]
buildlib/environment.mak.in [deleted file]
buildlib/fail.mak [deleted file]
buildlib/install-sh [deleted file]
buildlib/library.mak [deleted file]
buildlib/libversion.mak [deleted file]
buildlib/makefile.in [deleted file]
buildlib/manpage.mak [deleted file]
buildlib/netdb.h.in [deleted file]
buildlib/po4a_manpage.mak [deleted file]
buildlib/podomain.mak [deleted file]
buildlib/program.mak [deleted file]
buildlib/python.mak [deleted file]
buildlib/staticlibrary.mak [deleted file]
buildlib/statvfs.h.in [deleted file]
buildlib/tools.m4 [deleted file]
cmdline/CMakeLists.txt [new file with mode: 0644]
cmdline/makefile [deleted file]
configure.ac [deleted file]
debian/NEWS
debian/apt-doc.install [new file with mode: 0644]
debian/apt-transport-https.files [new file with mode: 0644]
debian/apt-transport-https.install [deleted file]
debian/apt-utils.install
debian/apt.files [new file with mode: 0644]
debian/apt.install [new file with mode: 0644]
debian/apt.install.in [deleted file]
debian/apt.systemd.daily [changed mode: 0644->0755]
debian/changelog
debian/compat
debian/control
debian/copyright [new symlink]
debian/libapt-inst2.0.install [new file with mode: 0644]
debian/libapt-inst2.0.install.in [deleted file]
debian/libapt-pkg-dev.install [new file with mode: 0644]
debian/libapt-pkg-dev.install.in [deleted file]
debian/libapt-pkg-doc.docs
debian/libapt-pkg-doc.install [new file with mode: 0644]
debian/libapt-pkg5.0.install [new file with mode: 0644]
debian/libapt-pkg5.0.install.in [deleted file]
debian/libapt-pkg5.0.symbols
debian/rules
debian/tests/run-tests
doc/CMakeLists.txt [new file with mode: 0644]
doc/Doxyfile.in
doc/apt-ftparchive.1.xml
doc/apt-get.8.xml
doc/apt-secure.8.xml
doc/apt-verbatim.ent
doc/apt.conf.5.xml
doc/en/makefile [deleted file]
doc/examples/CMakeLists.txt [new file with mode: 0644]
doc/lang.makefile [deleted file]
doc/makefile [deleted file]
doc/po/apt-doc.pot
doc/po/de.po
doc/po/es.po
doc/po/fr.po
doc/po/it.po
doc/po/ja.po
doc/po/nl.po
doc/po/pl.po
doc/po/pt.po
doc/po/pt_BR.po
doc/sources.list.5.xml
dselect/CMakeLists.txt [new file with mode: 0644]
dselect/makefile [deleted file]
ftparchive/CMakeLists.txt [new file with mode: 0644]
ftparchive/makefile [deleted file]
methods/CMakeLists.txt [new file with mode: 0644]
methods/makefile [deleted file]
po/CMakeLists.txt [new file with mode: 0644]
po/LINGUAS [deleted file]
po/makefile [deleted file]
prepare-release
test/CMakeLists.txt [new file with mode: 0644]
test/Makefile [deleted file]
test/integration/framework
test/integration/makefile [deleted file]
test/integration/run-tests
test/integration/test-apt-helper-cat-file
test/interactive-helper/CMakeLists.txt [new file with mode: 0644]
test/interactive-helper/makefile [deleted file]
test/libapt/CMakeLists.txt [new file with mode: 0644]
test/libapt/fileutl_test.cc
test/libapt/hashsums_test.cc
test/libapt/makefile [deleted file]
vendor/CMakeLists.txt [new file with mode: 0644]
vendor/getinfo
vendor/makefile [deleted file]
vendor/vendor.makefile [deleted file]

index c96c33b29180d0b0107687ac8b86bd4f6c692ab4..7baa7fbeba1ea76a67d756ab0f84311ef68c77af 100644 (file)
@@ -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/po/
-/doc/en/*
-!/doc/en/makefile
+
+# Backend files
+Makefile
+*.ninja
+.ninja*
+
+!CMakeLists.txt
 
 # package building artifacts
 /debian/*.log
 /debian/libapt-pkg-doc/
 /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
 /abicheck/apt_build.xml
 /abicheck/apt_installed.xml
index a076d3e4c82ee0e15eb721d4eb2426d0cb1dab9b..3c4b5931908c55c460901a89ba21a223d29bf146 100644 (file)
@@ -3,15 +3,22 @@ sudo: required
 dist: trusty
 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/ 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=xenial\nPin-Priority: 1" > /etc/apt/preferences.d/xenial'
  - sudo apt-get update -qq
 install:
  - sudo ./prepare-release travis-ci
  - 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:
- - make test
+ - make -C build test
  - ./test/integration/run-tests -q
  - sudo adduser --force-badname --system --home /nonexistent --no-create-home --quiet _apt || true
  - sudo ./test/integration/run-tests -q
+ - make -C build install DESTDIR=$PWD/rootdir
+ - find rootdir -print0 | xargs -0 ls -ld
diff --git a/CMake/Documentation.cmake b/CMake/Documentation.cmake
new file mode 100644 (file)
index 0000000..9e7135e
--- /dev/null
@@ -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()
diff --git a/CMake/FindBerkeleyDB.cmake b/CMake/FindBerkeleyDB.cmake
new file mode 100644 (file)
index 0000000..44cfd3d
--- /dev/null
@@ -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)
diff --git a/CMake/Misc.cmake b/CMake/Misc.cmake
new file mode 100644 (file)
index 0000000..79587b0
--- /dev/null
@@ -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()
diff --git a/CMake/Translations.cmake b/CMake/Translations.cmake
new file mode 100644 (file)
index 0000000..509e4e3
--- /dev/null
@@ -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()
diff --git a/CMake/apti18n.h.in b/CMake/apti18n.h.in
new file mode 100644 (file)
index 0000000..9c843b0
--- /dev/null
@@ -0,0 +1,30 @@
+// -*- mode: cpp; mode: fold -*-
+// $Id: apti18n.h.in,v 1.6 2003/01/11 07:18:18 jgg Exp $
+/* Internationalization macros for apt. This header should be included last
+   in each C file. */
+
+// Set by autoconf
+#cmakedefine USE_NLS
+
+#ifdef USE_NLS
+// apt will use the gettext implementation of the C library
+#include <libintl.h>
+#include <locale.h>
+# ifdef APT_DOMAIN
+#   define _(x) dgettext(APT_DOMAIN,x)
+#   define P_(msg,plural,n) dngettext(APT_DOMAIN,msg,plural,n)
+# else
+#   define _(x) gettext(x)
+#   define P_(msg,plural,n) ngettext(msg,plural,n)
+# endif
+# define N_(x) x
+#else
+// apt will not use any gettext
+# define setlocale(a, b)
+# define textdomain(a)
+# define bindtextdomain(a, b)
+# define _(x) x
+# define P_(msg,plural,n) (n == 1 ? msg : plural)
+# define N_(x) x
+# define dgettext(d, m) m
+#endif
diff --git a/CMake/config.h.in b/CMake/config.h.in
new file mode 100644 (file)
index 0000000..e929646
--- /dev/null
@@ -0,0 +1,57 @@
+/* Define if your processor stores words with the most significant
+   byte first (like Motorola and SPARC, unlike Intel and VAX).  */
+#cmakedefine WORDS_BIGENDIAN
+
+/* Define if we have the timegm() function */
+#cmakedefine HAVE_TIMEGM
+
+/* Define if we have the zlib library for gzip */
+#cmakedefine HAVE_ZLIB
+
+/* Define if we have the bz2 library for bzip2 */
+#cmakedefine HAVE_BZ2
+
+/* Define if we have the lzma library for lzma/xz */
+#cmakedefine HAVE_LZMA
+
+/* Define if we have the lz4 library for lz4 */
+#cmakedefine HAVE_LZ4
+
+/* These two are used by the statvfs shim for glibc2.0 and bsd */
+/* Define if we have sys/vfs.h */
+#cmakedefine HAVE_VFS_H
+#cmakedefine HAVE_STRUCT_STATFS_F_TYPE
+
+/* Define if we have sys/mount.h */
+#cmakedefine HAVE_MOUNT_H
+
+/* Define if we have enabled pthread support */
+#cmakedefine HAVE_PTHREAD
+
+/* Check for getresuid() function and similar ones */
+#cmakedefine HAVE_GETRESUID
+#cmakedefine HAVE_GETRESGID
+#cmakedefine HAVE_SETRESUID
+#cmakedefine HAVE_SETRESGID
+
+/* Check for ptsname_r() */
+#cmakedefine HAVE_PTSNAME_R
+
+/* Define the arch name string */
+#define COMMON_ARCH "${COMMON_ARCH}"
+
+/* The package name string */
+#define PACKAGE "${PACKAGE}"
+
+/* The version number string */
+#define PACKAGE_VERSION "${PACKAGE_VERSION}"
+
+/* The mail address to reach upstream */
+#define PACKAGE_MAIL "${PACKAGE_MAIL}"
+
+#define APT_8_CLEANER_HEADERS
+#define APT_9_CLEANER_HEADERS
+#define APT_10_CLEANER_HEADERS
+
+/* unrolling is faster combined with an optimizing compiler */
+#define SHA2_UNROLL_TRANSFORM
diff --git a/CMake/run_if_exists.sh b/CMake/run_if_exists.sh
new file mode 100755 (executable)
index 0000000..97edd4c
--- /dev/null
@@ -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
diff --git a/CMake/statvfs.h.in b/CMake/statvfs.h.in
new file mode 100644 (file)
index 0000000..d0ec238
--- /dev/null
@@ -0,0 +1,13 @@
+/* Compatibility for systems with out Single Unix Spec statvfs */
+#include <config.h>
+
+#ifdef HAVE_VFS_H
+#include <sys/vfs.h>
+#endif
+
+#ifdef HAVE_MOUNT_H
+#include <sys/param.h>
+#include <sys/mount.h>
+#endif
+
+#define statvfs statfs
diff --git a/CMake/vendor_substitute.cmake b/CMake/vendor_substitute.cmake
new file mode 100644 (file)
index 0000000..71449c9
--- /dev/null
@@ -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}")
diff --git a/CMakeLists.txt b/CMakeLists.txt
new file mode 100644 (file)
index 0000000..80b9c38
--- /dev/null
@@ -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)
diff --git a/COMPILING b/COMPILING
deleted file mode 100644 (file)
index 93e6280..0000000
--- a/COMPILING
+++ /dev/null
@@ -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
-    
diff --git a/Makefile b/Makefile
deleted file mode 100644 (file)
index 7680f08..0000000
--- a/Makefile
+++ /dev/null
@@ -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
diff --git a/README.make b/README.make
deleted file mode 100644 (file)
index db5f36e..0000000
+++ /dev/null
@@ -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.
index 2f86d79a389f3d85ad130e5669a6cb327d30e96d..9020a3d6a59fcb14f2f7c69ae4a612921735a1fa 100644 (file)
--- a/README.md
+++ b/README.md
@@ -45,12 +45,21 @@ are encouraged to do as well.
 
 ### 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,
 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
 
-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
 
index f7d4c90cf1a5e983d45548001ef09918ca0e0584..32886d93170a9246041601bf0a879e5f44172b26 100644 (file)
@@ -7,5 +7,6 @@
  </headers>
    
  <libs>
-  @build_path@/bin/
+  @build_path@/apt-pkg/
+  @build_path@/apt-inst/
  </libs>
index 6e6152a6319b39aadeddd41c331bf4512bf2549e..491616b30c87cfbb06aa199cd9b99d9d012b5871 100755 (executable)
@@ -8,7 +8,7 @@ if [ ! -d ../build ]; then
        exit 1
 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"
        exit 1
 fi
diff --git a/apt-inst/CMakeLists.txt b/apt-inst/CMakeLists.txt
new file mode 100644 (file)
index 0000000..f757823
--- /dev/null
@@ -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}")
diff --git a/apt-inst/makefile b/apt-inst/makefile
deleted file mode 100644 (file)
index 5601cd9..0000000
+++ /dev/null
@@ -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)
diff --git a/apt-pkg/CMakeLists.txt b/apt-pkg/CMakeLists.txt
new file mode 100644 (file)
index 0000000..ec78f49
--- /dev/null
@@ -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}")
index 6aa1ce42687d885fd0e9eb86a35de73e61b9fabf..3d0fd622c5ebf56132ab49cbc962603b85ccb1b3 100644 (file)
@@ -1094,7 +1094,7 @@ void pkgDPkgPM::StartPtyMagic()                                           /*{{{*/
       _error->Errno("unlockpt", "Unlocking the slave of master fd %d failed!", d->master);
    else
    {
-#ifdef HAVE_PTS_NAME_R
+#ifdef HAVE_PTSNAME_R
       char slave_name[64];     // 64 is used by bionic
       if (ptsname_r(d->master, slave_name, sizeof(slave_name)) != 0)
 #else
diff --git a/apt-pkg/makefile b/apt-pkg/makefile
deleted file mode 100644 (file)
index 789d3f2..0000000
+++ /dev/null
@@ -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)
diff --git a/apt-private/CMakeLists.txt b/apt-private/CMakeLists.txt
new file mode 100644 (file)
index 0000000..6de9e02
--- /dev/null
@@ -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}")
diff --git a/apt-private/makefile b/apt-private/makefile
deleted file mode 100644 (file)
index 1934db1..0000000
+++ /dev/null
@@ -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)
index 27642e0258d53e25a3b4ec16ad89dcf07d871c9d..77e8b61d97371f41d1ceaf2867ea51ea77ff8ae8 100644 (file)
@@ -9,8 +9,6 @@
 #include <apt-pkg/sourcelist.h>
 #include <apt-pkg/cacheset.h>
 
-#include <apti18n.h>
-
 // class CacheFile - Cover class for some dependency cache functions   /*{{{*/
 class APT_PUBLIC CacheFile : public pkgCacheFile
 {
index 4a43155febbdd2142fd60d91af45c0e6681d4ebb..37c92108174927c99bb452fb13a35136cec15c7d 100644 (file)
@@ -11,8 +11,6 @@
 #include <set>
 #include <string>
 
-#include <apti18n.h>
-
 class OpProgress;
 
 class VerIteratorWithCaching
diff --git a/buildlib/apti18n.h.in b/buildlib/apti18n.h.in
deleted file mode 100644 (file)
index 2202c5b..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-// -*- mode: cpp; mode: fold -*-
-// $Id: apti18n.h.in,v 1.6 2003/01/11 07:18:18 jgg Exp $
-/* Internationalization macros for apt. This header should be included last
-   in each C file. */
-
-// Set by autoconf
-#undef USE_NLS
-
-#ifdef USE_NLS
-// apt will use the gettext implementation of the C library
-#include <libintl.h>
-#include <locale.h>
-# ifdef APT_DOMAIN
-#   define _(x) dgettext(APT_DOMAIN,x)
-#   define P_(msg,plural,n) dngettext(APT_DOMAIN,msg,plural,n)
-# else
-#   define _(x) gettext(x)
-#   define P_(msg,plural,n) ngettext(msg,plural,n)
-# endif
-# define N_(x) x
-#else
-// apt will not use any gettext
-# define setlocale(a, b)
-# define textdomain(a)
-# define bindtextdomain(a, b)
-# define _(x) x
-# define P_(msg,plural,n) (n == 1 ? msg : plural)
-# define N_(x) x
-# define dgettext(d, m) m
-#endif
diff --git a/buildlib/config.h.in b/buildlib/config.h.in
deleted file mode 100644 (file)
index 71c05c1..0000000
+++ /dev/null
@@ -1,60 +0,0 @@
-/* Define if your processor stores words with the most significant
-   byte first (like Motorola and SPARC, unlike Intel and VAX).  */
-#undef WORDS_BIGENDIAN
-
-/* Define if we have the timegm() function */
-#undef HAVE_TIMEGM
-
-/* Define if we have the zlib library for gzip */
-#undef HAVE_ZLIB
-
-/* Define if we have the bz2 library for bzip2 */
-#undef HAVE_BZ2
-
-/* Define if we have the lzma library for lzma/xz */
-#undef HAVE_LZMA
-
-/* Define if we have the lz4 library for lz4 */
-#undef HAVE_LZ4
-
-/* These two are used by the statvfs shim for glibc2.0 and bsd */
-/* Define if we have sys/vfs.h */
-#undef HAVE_VFS_H
-#undef HAVE_STRUCT_STATFS_F_TYPE
-
-/* Define if we have sys/mount.h */
-#undef HAVE_MOUNT_H
-
-/* 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
-
-/* Check for getresuid() function and similar ones */
-#undef HAVE_GETRESUID
-#undef HAVE_GETRESGID
-#undef HAVE_SETRESUID
-#undef HAVE_SETRESGID
-
-/* Define to the size of the filesize containing structures */
-#undef _FILE_OFFSET_BITS
-
-/* Define the arch name string */
-#undef COMMON_ARCH
-
-/* The package name string */
-#undef PACKAGE
-
-/* The version number string */
-#undef PACKAGE_VERSION
-
-/* The mail address to reach upstream */
-#undef PACKAGE_MAIL
-
-#define APT_8_CLEANER_HEADERS
-#define APT_9_CLEANER_HEADERS
-#define APT_10_CLEANER_HEADERS
-
-/* unrolling is faster combined with an optimizing compiler */
-#define SHA2_UNROLL_TRANSFORM
diff --git a/buildlib/configure.mak b/buildlib/configure.mak
deleted file mode 100644 (file)
index e1a5115..0000000
+++ /dev/null
@@ -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
diff --git a/buildlib/copy.mak b/buildlib/copy.mak
deleted file mode 100644 (file)
index 3ae11a7..0000000
+++ /dev/null
@@ -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)
diff --git a/buildlib/defaults.mak b/buildlib/defaults.mak
deleted file mode 100644 (file)
index 783cc11..0000000
+++ /dev/null
@@ -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
diff --git a/buildlib/docbook.mak b/buildlib/docbook.mak
deleted file mode 100644 (file)
index 6aa3ca0..0000000
+++ /dev/null
@@ -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
diff --git a/buildlib/environment.mak.in b/buildlib/environment.mak.in
deleted file mode 100644 (file)
index 2ac3d68..0000000
+++ /dev/null
@@ -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
diff --git a/buildlib/fail.mak b/buildlib/fail.mak
deleted file mode 100644 (file)
index fc18776..0000000
+++ /dev/null
@@ -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)
-       
diff --git a/buildlib/install-sh b/buildlib/install-sh
deleted file mode 100644 (file)
index ebc6691..0000000
+++ /dev/null
@@ -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
diff --git a/buildlib/library.mak b/buildlib/library.mak
deleted file mode 100644 (file)
index 7b12384..0000000
+++ /dev/null
@@ -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
diff --git a/buildlib/libversion.mak b/buildlib/libversion.mak
deleted file mode 100644 (file)
index 1b1855b..0000000
+++ /dev/null
@@ -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)
diff --git a/buildlib/makefile.in b/buildlib/makefile.in
deleted file mode 100644 (file)
index 66144cf..0000000
+++ /dev/null
@@ -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
diff --git a/buildlib/manpage.mak b/buildlib/manpage.mak
deleted file mode 100644 (file)
index 063841d..0000000
+++ /dev/null
@@ -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)
diff --git a/buildlib/netdb.h.in b/buildlib/netdb.h.in
deleted file mode 100644 (file)
index 0fa60e1..0000000
+++ /dev/null
@@ -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>
diff --git a/buildlib/po4a_manpage.mak b/buildlib/po4a_manpage.mak
deleted file mode 100644 (file)
index df12e11..0000000
+++ /dev/null
@@ -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)
diff --git a/buildlib/podomain.mak b/buildlib/podomain.mak
deleted file mode 100644 (file)
index 265359a..0000000
+++ /dev/null
@@ -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
diff --git a/buildlib/program.mak b/buildlib/program.mak
deleted file mode 100644 (file)
index 1b4a571..0000000
+++ /dev/null
@@ -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 
diff --git a/buildlib/python.mak b/buildlib/python.mak
deleted file mode 100644 (file)
index 25349da..0000000
+++ /dev/null
@@ -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 
diff --git a/buildlib/staticlibrary.mak b/buildlib/staticlibrary.mak
deleted file mode 100644 (file)
index e81770e..0000000
+++ /dev/null
@@ -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 
diff --git a/buildlib/statvfs.h.in b/buildlib/statvfs.h.in
deleted file mode 100644 (file)
index d0ec238..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-/* Compatibility for systems with out Single Unix Spec statvfs */
-#include <config.h>
-
-#ifdef HAVE_VFS_H
-#include <sys/vfs.h>
-#endif
-
-#ifdef HAVE_MOUNT_H
-#include <sys/param.h>
-#include <sys/mount.h>
-#endif
-
-#define statvfs statfs
diff --git a/buildlib/tools.m4 b/buildlib/tools.m4
deleted file mode 100644 (file)
index 433d5ca..0000000
+++ /dev/null
@@ -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)
-])
diff --git a/cmdline/CMakeLists.txt b/cmdline/CMakeLists.txt
new file mode 100644 (file)
index 0000000..8977b45
--- /dev/null
@@ -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})
diff --git a/cmdline/makefile b/cmdline/makefile
deleted file mode 100644 (file)
index 8b79ce0..0000000
+++ /dev/null
@@ -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
diff --git a/configure.ac b/configure.ac
deleted file mode 100644 (file)
index 376217d..0000000
+++ /dev/null
@@ -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
index 93439145635c6346e90341e200e481b8fefe8a4a..f82dedf412423e3555eeb5ce856fdc0aa5023429 100644 (file)
@@ -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
 
   [ Automatic removal of debs after install ]
diff --git a/debian/apt-doc.install b/debian/apt-doc.install
new file mode 100644 (file)
index 0000000..be5e871
--- /dev/null
@@ -0,0 +1 @@
+usr/share/doc/apt-doc
diff --git a/debian/apt-transport-https.files b/debian/apt-transport-https.files
new file mode 100644 (file)
index 0000000..7b14886
--- /dev/null
@@ -0,0 +1 @@
+usr/lib/apt/methods/https
diff --git a/debian/apt-transport-https.install b/debian/apt-transport-https.install
deleted file mode 100644 (file)
index 848f10c..0000000
+++ /dev/null
@@ -1 +0,0 @@
-bin/methods/https usr/lib/apt/methods
index cdbcb2f37ebfc5db6cf41617d0c26ae78f6968d6..178b528b70041a364c2d9821960ac780a185e25c 100644 (file)
@@ -1 +1,20 @@
 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
diff --git a/debian/apt.files b/debian/apt.files
new file mode 100644 (file)
index 0000000..5724751
--- /dev/null
@@ -0,0 +1,2 @@
+usr/lib/apt/solvers/dump
+usr/lib/apt/planners/dump
diff --git a/debian/apt.install b/debian/apt.install
new file mode 100644 (file)
index 0000000..82b9ec6
--- /dev/null
@@ -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
diff --git a/debian/apt.install.in b/debian/apt.install.in
deleted file mode 100644 (file)
index f390c87..0000000
+++ /dev/null
@@ -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/
\ No newline at end of file
old mode 100644 (file)
new mode 100755 (executable)
index cdb3c3345d123500ba8e39ce29ab1182d091128d..2c78c5a5441d0c150fc2a484eaf357ba63ee2e14 100644 (file)
@@ -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
 
   [ Julian Andres Klode ]
index 7f8f011eb73d6043d2e6db9d2c101195ae2801f2..ec635144f60048986bc560c5576355344005e6e7 100644 (file)
@@ -1 +1 @@
-7
+9
index 77b62b4ef778f9a91b6774ea3d87743f48f7593b..bc118b52d9d192654b7f804fdeee04b6dc8a0d66 100644 (file)
@@ -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~),
  zlib1g-dev, libbz2-dev, liblzma-dev, liblz4-dev (>= 0.0~r126),
  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-Conflicts: autoconf2.13, automake1.4
 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~)
 Recommends: apt (>= ${binary:Version})
 Section: libs
+Provides: libapt-pkg (= ${binary:Version})
 Description: package management runtime library
  This library provides the common functionality for searching and
  managing packages as well as information about packages.
@@ -69,6 +70,7 @@ Multi-Arch: same
 Pre-Depends: ${misc:Pre-Depends}
 Depends: ${shlibs:Depends}, ${misc:Depends}
 Section: libs
+Provides: libapt-inst (= ${binary:Version})
 Description: deb package format runtime library
  This library provides methods to query and extract information
  from deb packages. This includes the control data and the package
@@ -88,7 +90,7 @@ Architecture: any
 Multi-Arch: same
 Priority: optional
 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
 Description: development files for APT's libapt-pkg and libapt-inst
  This package contains the header files and libraries for
diff --git a/debian/copyright b/debian/copyright
new file mode 120000 (symlink)
index 0000000..012065c
--- /dev/null
@@ -0,0 +1 @@
+../COPYING
\ No newline at end of file
diff --git a/debian/libapt-inst2.0.install b/debian/libapt-inst2.0.install
new file mode 100644 (file)
index 0000000..a8ddd5e
--- /dev/null
@@ -0,0 +1,2 @@
+usr/lib/*/libapt-inst*.so.*
+usr/share/locale/*/*/libapt-inst*.mo
diff --git a/debian/libapt-inst2.0.install.in b/debian/libapt-inst2.0.install.in
deleted file mode 100644 (file)
index 8bcce2c..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-bin/libapt-inst*.so.* usr/lib/@DEB_HOST_MULTIARCH@/
-usr/share/locale/*/*/libapt-inst*.mo
diff --git a/debian/libapt-pkg-dev.install b/debian/libapt-pkg-dev.install
new file mode 100644 (file)
index 0000000..e85dc99
--- /dev/null
@@ -0,0 +1,3 @@
+usr/lib/*/libapt-pkg*.so
+usr/lib/*/libapt-inst*.so
+usr/include/apt-pkg/
diff --git a/debian/libapt-pkg-dev.install.in b/debian/libapt-pkg-dev.install.in
deleted file mode 100644 (file)
index be80221..0000000
+++ /dev/null
@@ -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/
index 1ad92a8bbe20176c3042ddffa569e7c394ab3696..dcacac18b8fe604886b3735fce68cae81ecff3d2 100644 (file)
@@ -1,7 +1,3 @@
-build/docs/design*
-build/docs/dpkg-tech*
-build/docs/files*
-build/docs/method*
 doc/libapt-pkg2_to_3.txt
 doc/style.txt
-build/doc/doxygen/html
+#build/doc/doxygen/html
diff --git a/debian/libapt-pkg-doc.install b/debian/libapt-pkg-doc.install
new file mode 100644 (file)
index 0000000..2f233dd
--- /dev/null
@@ -0,0 +1 @@
+usr/share/doc/libapt-pkg-doc
diff --git a/debian/libapt-pkg5.0.install b/debian/libapt-pkg5.0.install
new file mode 100644 (file)
index 0000000..9ac53bc
--- /dev/null
@@ -0,0 +1,2 @@
+usr/lib/*/libapt-pkg*.so.*
+usr/share/locale/*/*/libapt-pkg*.mo
diff --git a/debian/libapt-pkg5.0.install.in b/debian/libapt-pkg5.0.install.in
deleted file mode 100644 (file)
index 56bed39..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-bin/libapt-pkg*.so.* usr/lib/@DEB_HOST_MULTIARCH@/
-usr/share/locale/*/*/libapt-pkg*.mo
index bec8749118a4e5d7eed8981e82e7da841bc7d65f..e2db6bb1281ee2162e696a1c4756ec1b6724143d 100644 (file)
@@ -1429,7 +1429,7 @@ libapt-pkg.so.5.0 libapt-pkg5.0 #MINVER#
 ### symbol versioning:
  APTPKG_5.0@APTPKG_5.0 1.1~exp9
 ### 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<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
@@ -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::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++)"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
index 18b3f34f3085c859ef9947a5200461bfc5c9bfe3..9537ecd939600b6b31094482add77bd42551ab46 100755 (executable)
 #!/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
 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)
index e33992b2813748bd56e3c3add735051cf48a300d..277594108a3559b3508881fd384154b2de051690 100644 (file)
@@ -2,22 +2,24 @@
 
 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
-make -C test/interactive-helper/
+
+make -C build/test/interactive-helper
 
 # run tests against the installed apt, use "env -i" to ensure
 # the host env does not pollute our environment
 env -i \
 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_LIBEXEC_DIR=/usr/lib/apt/ \
 APT_INTEGRATION_TESTS_INTERNAL_SOLVER=/usr/lib/apt/solvers/apt \
 APT_INTEGRATION_TESTS_DUMP_SOLVER=/usr/lib/apt/solvers/dump \
 APT_INTEGRATION_TESTS_INTERNAL_PLANNER=/usr/lib/apt/planners/apt \
 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 \
 ./test/integration/run-tests -q
diff --git a/doc/CMakeLists.txt b/doc/CMakeLists.txt
new file mode 100644 (file)
index 0000000..d54303d
--- /dev/null
@@ -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)
index ab3fc0a7c8ec831164641ce97ac5690af8e1a942..b6521feb82de96035627f5f33ee24a0f7f6abf48 100644 (file)
@@ -58,7 +58,7 @@ PROJECT_LOGO           =
 # entered, it will be relative to the location where doxygen was started. If
 # 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-
 # 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.
 # 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
 # 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
 # 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
 # less readable) file names. This can be useful is your file systems doesn't
@@ -754,7 +754,7 @@ WARN_LOGFILE           =
 # spaces.
 # 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
 # that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses
@@ -2057,7 +2057,7 @@ HIDE_UNDOC_RELATIONS   = YES
 # set to NO
 # 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
 # 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.
 # 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
 # contain dot files that are included in the documentation (see the \dotfile
index 7a1ca7fb48d45d2c7ed18d926abd3d60fed2f5b9..705f416ebb210462c6a62242b475c629a7762ad6 100644 (file)
@@ -14,7 +14,7 @@
    &apt-email;
    &apt-product;
    <!-- The last update date -->
-   <date>2016-07-08T00:00:00Z</date>
+   <date>2016-08-06T00:00:00Z</date>
  </refentryinfo>
  
  <refmeta>
index e9623a3ab56947e1e0e3a35744edcee0e36e68fc..20555b77e43d672217f618b7adbc3c8822046609 100644 (file)
@@ -14,7 +14,7 @@
    &apt-email;
    &apt-product;
    <!-- The last update date -->
-   <date>2016-07-08T00:00:00Z</date>
+   <date>2016-08-06T00:00:00Z</date>
  </refentryinfo>
  
  <refmeta>
index a166853fe4beea12b251838c982b5762f6d524ff..5503082825c886f5f77d7dfb84931213af7c657c 100644 (file)
@@ -13,7 +13,7 @@
    &apt-email;
    &apt-product;
    <!-- The last update date -->
-   <date>2016-07-08T00:00:00Z</date>
+   <date>2016-08-06T00:00:00Z</date>
  </refentryinfo>
 
  <refmeta>
index fbdc8e168b66a7dde227920a907634c53e4a4336..5a34fbc34134ea6f36210ece131ed21883f65978 100644 (file)
 ">
 
 <!-- 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 -->
 <!ENTITY debian-oldstable-codename "wheezy">
index b68e0ae44b0356356a12d6fe0cda6a9137e520fd..09db5a0e08ae445cd56564146512344ed6a50313 100644 (file)
@@ -19,7 +19,7 @@
    &apt-email;
    &apt-product;
    <!-- The last update date -->
-   <date>2016-07-08T00:00:00Z</date>
+   <date>2016-08-06T00:00:00Z</date>
  </refentryinfo>
  
  <refmeta>
diff --git a/doc/en/makefile b/doc/en/makefile
deleted file mode 100644 (file)
index 8659de6..0000000
+++ /dev/null
@@ -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)
diff --git a/doc/examples/CMakeLists.txt b/doc/examples/CMakeLists.txt
new file mode 100644 (file)
index 0000000..1998867
--- /dev/null
@@ -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)
diff --git a/doc/lang.makefile b/doc/lang.makefile
deleted file mode 100644 (file)
index 9fdc6ea..0000000
+++ /dev/null
@@ -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)
diff --git a/doc/makefile b/doc/makefile
deleted file mode 100644 (file)
index 785c0b1..0000000
+++ /dev/null
@@ -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
index 5d256f4d1f654b7e4b30b8c50e3d820b7425dd37..b712e176b53e55a7fab75091a7165461155d8e60 100644 (file)
@@ -5,9 +5,9 @@
 #, fuzzy
 msgid ""
 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"
-"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"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
index d1ef7980854362c06404ec83028150d5ec1d04b1..88047a569a80666e741206a6978574ed9e4053ee 100644 (file)
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: apt-doc 1.0.8\n"
 "Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n"
-"POT-Creation-Date: 2016-08-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"
 "Last-Translator: Chris Leick <c.leick@vollbio.de>\n"
 "Language-Team: German <debian-l10n-german@lists.debian.org>\n"
index b14ff8af0b0c3eaf2218c9f4550a1e66141ece6a..2aa105681275459d07cd8bb5b11ec35759f40807 100644 (file)
@@ -38,7 +38,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: apt-doc 1.0.5\n"
 "Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n"
-"POT-Creation-Date: 2016-08-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"
 "Last-Translator: Omar Campagne <ocampagne@gmail.com>\n"
 "Language-Team: Debian l10n Spanish <debian-l10n-spanish@lists.debian.org>\n"
index b4affe7303142c9b070fefb5acd5459c6f47ad3e..7b6f6e3bf2e959cf42cd04736c9ecb733a86d23c 100644 (file)
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: apt-doc 1.0.5\n"
 "Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n"
-"POT-Creation-Date: 2016-08-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"
 "Last-Translator: Jean-Pierre Giraud <jean-pierregiraud@neuf.fr>\n"
 "Language-Team: French <debian-l10n-french@lists.debian.org>\n"
index 1a6f662d71c9709b750a5cc8b94ee235c11e0c89..f9ab374a0372f969727889b4000623bac1f7e64f 100644 (file)
@@ -10,7 +10,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: apt-doc 1.0.5\n"
 "Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n"
-"POT-Creation-Date: 2016-08-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"
 "Last-Translator: Beatrice Torracca <beatricet@libero.it>\n"
 "Language-Team: Italian <debian-l10n-italian@lists.debian.org>\n"
index 3085c2c9ca5470520205ecee0ddbe768596a7462..9626d974fcc2dda8be79befd8cad8809c026a2fc 100644 (file)
@@ -10,7 +10,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: apt-doc 1.0.6\n"
 "Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n"
-"POT-Creation-Date: 2016-08-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"
 "Last-Translator: Takuma Yamada <tyamada@takumayamada.com>\n"
 "Language-Team: Japanese <debian-japanese@lists.debian.org>\n"
index ebeccb410e69b3cb3b4771c3b4eb29a574e7aab8..a41dcb43f10d8c663e4b97f262d68e4009ae1f4a 100644 (file)
@@ -6,7 +6,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: apt-doc 1.1.10-nl\n"
 "Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n"
-"POT-Creation-Date: 2016-08-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"
 "Last-Translator: Frans Spiesschaert <Frans.Spiesschaert@yucom.be>\n"
 "Language-Team: Debian Dutch l10n Team <debian-l10n-dutch@lists.debian.org>\n"
index aa08ef69f99c79491a44461b09cd7d112dc526c2..cc5234480753b044c6fb80716fc2aea4c6e5162a 100644 (file)
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: apt-doc 1.0.5\n"
 "Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n"
-"POT-Creation-Date: 2016-08-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"
 "Last-Translator: Robert Luberda <robert@debian.org>\n"
 "Language-Team: Polish <manpages-pl-list@lists.sourceforge.net>\n"
index 332c169ba16e063e1d3783c0550034bcfdc248fd..ef6d97e499d7a5ba2620887b49c688398e733573 100644 (file)
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: apt-doc 1.0.7\n"
 "Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n"
-"POT-Creation-Date: 2016-08-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"
 "Last-Translator: Américo Monteiro <a_monteiro@gmx.com>\n"
 "Language-Team: Portuguese <traduz@debianpt.org>\n"
index c3754fd37e6d8c32006483c830fcc5cab9e7e967..d912d9723c97a5d2f7eaaecdbcdc9380ec5d5e59 100644 (file)
@@ -9,7 +9,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: apt-doc 1.0.5\n"
 "Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n"
-"POT-Creation-Date: 2016-08-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"
 "Last-Translator: André Luís Lopes <andrelop@debian.org>\n"
 "Language-Team: <debian-l10n-portuguese@lists.debian.org>\n"
index a3181554bec521f7aa7fb9f9b49af83d86d2aaa2..8fdc8eedb311c07f686fbecdcdab34c1b4e0cb24 100644 (file)
@@ -14,7 +14,7 @@
    &apt-email;
    &apt-product;
    <!-- The last update date -->
-   <date>2016-07-08T00:00:00Z</date>
+   <date>2016-08-06T00:00:00Z</date>
  </refentryinfo>
  
  <refmeta>
diff --git a/dselect/CMakeLists.txt b/dselect/CMakeLists.txt
new file mode 100644 (file)
index 0000000..804306e
--- /dev/null
@@ -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)
diff --git a/dselect/makefile b/dselect/makefile
deleted file mode 100644 (file)
index fab72b2..0000000
+++ /dev/null
@@ -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)
diff --git a/ftparchive/CMakeLists.txt b/ftparchive/CMakeLists.txt
new file mode 100644 (file)
index 0000000..1e1dc36
--- /dev/null
@@ -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})
diff --git a/ftparchive/makefile b/ftparchive/makefile
deleted file mode 100644 (file)
index c80487c..0000000
+++ /dev/null
@@ -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
diff --git a/methods/CMakeLists.txt b/methods/CMakeLists.txt
new file mode 100644 (file)
index 0000000..2417c4d
--- /dev/null
@@ -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)
diff --git a/methods/makefile b/methods/makefile
deleted file mode 100644 (file)
index 3274e92..0000000
+++ /dev/null
@@ -1,110 +0,0 @@
-# -*- make -*-
-BASE=..
-SUBDIR=methods
-
-# Bring in the default rules
-include ../buildlib/defaults.mak
-BIN := $(BIN)/methods
-
-include ../buildlib/libversion.mak
-APT_DOMAIN := apt
-
-# The file method
-PROGRAM=file
-SLIBS = -lapt-pkg $(INTLLIBS)
-LIB_MAKES = apt-pkg/makefile
-SOURCE = file.cc
-include $(PROGRAM_H)
-
-# The copy method
-PROGRAM=copy
-SLIBS = -lapt-pkg $(INTLLIBS)
-LIB_MAKES = apt-pkg/makefile
-SOURCE = copy.cc
-include $(PROGRAM_H)
-
-# The store method
-PROGRAM=store
-SLIBS = -lapt-pkg $(INTLLIBS)
-LIB_MAKES = apt-pkg/makefile
-SOURCE = store.cc
-include $(PROGRAM_H)
-
-# The gpgv method
-PROGRAM=gpgv
-SLIBS = -lapt-pkg $(INTLLIBS)
-LIB_MAKES = apt-pkg/makefile
-SOURCE = gpgv.cc
-include $(PROGRAM_H)
-
-# The cdrom method
-PROGRAM=cdrom
-SLIBS = -lapt-pkg $(INTLLIBS)
-LIB_MAKES = apt-pkg/makefile
-SOURCE = cdrom.cc
-include $(PROGRAM_H)
-
-# The http method
-PROGRAM=http
-SLIBS = -lapt-pkg $(SOCKETLIBS) $(INTLLIBS) -lresolv
-LIB_MAKES = apt-pkg/makefile
-SOURCE = http.cc http_main.cc rfc2553emu.cc connect.cc server.cc
-include $(PROGRAM_H)
-
-# The https method
-PROGRAM=https
-SLIBS = -lapt-pkg -lcurl $(INTLLIBS) -lresolv
-LIB_MAKES = apt-pkg/makefile
-SOURCE = https.cc server.cc
-include $(PROGRAM_H)
-
-# The ftp method
-PROGRAM=ftp
-SLIBS = -lapt-pkg $(SOCKETLIBS) $(INTLLIBS) -lresolv
-LIB_MAKES = apt-pkg/makefile
-SOURCE = ftp.cc rfc2553emu.cc connect.cc
-include $(PROGRAM_H)
-
-# The rred method
-PROGRAM=rred
-SLIBS = -lapt-pkg $(SOCKETLIBS) $(INTLLIBS)
-LIB_MAKES = apt-pkg/makefile
-SOURCE = rred.cc
-include $(PROGRAM_H)
-
-# The rsh method
-PROGRAM=rsh
-SLIBS = -lapt-pkg $(INTLLIBS)
-LIB_MAKES = apt-pkg/makefile
-SOURCE = rsh.cc
-include $(PROGRAM_H)
-
-# The mirror method
-PROGRAM=mirror
-SLIBS = -lapt-pkg $(SOCKETLIBS) -lresolv
-LIB_MAKES = apt-pkg/makefile
-SOURCE = mirror.cc http.cc rfc2553emu.cc connect.cc server.cc
-include $(PROGRAM_H)
-
-# SSH method symlink
-binary: $(BIN)/ssh
-veryclean: clean-$(BIN)/ssh
-
-$(BIN)/ssh:
-       echo "Installing ssh method link"
-       ln -fs rsh $(BIN)/ssh
-clean-$(BIN)/ssh:
-       -rm $(BIN)/ssh
-
-# create compat links for all compressors
-COMPRESSORS=gzip bzip2 lzma xz
-
-binary: $(addprefix $(BIN)/,$(COMPRESSORS))
-veryclean: $(addprefix clean-$(BIN)/,$(COMPRESSORS))
-
-$(addprefix $(BIN)/,$(COMPRESSORS)): $(BIN)/store
-       echo "Installing $(notdir $@) method link"
-       ln -fs store $@
-
-$(addprefix clean-$(BIN)/,$(COMPRESSORS)):
-       -rm $(BIN)/$(notdir $@)
diff --git a/po/CMakeLists.txt b/po/CMakeLists.txt
new file mode 100644 (file)
index 0000000..174cc5d
--- /dev/null
@@ -0,0 +1,50 @@
+set(languages_excluded
+    he  ## disabled by translator request #313283
+)
+
+apt_add_translation_domain(
+    DOMAIN libapt-pkg${APT_PKG_MAJOR}
+    TARGETS apt-pkg
+    EXCLUDE_LANGUAGES ${languages_excluded}
+)
+
+apt_add_translation_domain(
+    DOMAIN apt
+    TARGETS apt apt-cache apt-get apt-config apt-cdrom apt-helper apt-mark
+            apt-private
+            # Methods
+            file copy store gpgv cdrom http https ftp rred rsh mirror
+    SCRIPTS ../dselect/install ../dselect/update
+    EXCLUDE_LANGUAGES ${languages_excluded}
+)
+
+apt_add_translation_domain(
+    DOMAIN apt-utils
+    TARGETS apt-sortpkgs
+            apt-extracttemplates
+            apt-internal-solver
+            apt-dump-solver
+            apt-internal-planner
+            apt-ftparchive
+    EXCLUDE_LANGUAGES ${languages_excluded}
+)
+
+apt_add_translation_domain(
+    DOMAIN libapt-inst${APT_INST_MAJOR}
+    TARGETS apt-inst
+    EXCLUDE_LANGUAGES ${languages_excluded}
+)
+
+apt_add_update_po(
+    TEMPLATE
+        apt-all
+    DOMAINS
+        libapt-pkg${APT_PKG_MAJOR}
+        libapt-inst${APT_INST_MAJOR}
+        apt
+        apt-utils
+    EXCLUDE_LANGUAGES
+        ${languages_excluded}
+)
+
+apt_add_po_statistics("${languages_excluded}")
diff --git a/po/LINGUAS b/po/LINGUAS
deleted file mode 100644 (file)
index 6d77cf8..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-## If a language isn't listed here but a po file is available the build will fail.
-## If a language is disabled deliberately, list it in a line starting with a single '#'
-
-ar ast bg bs ca cs cy da de dz el es eu fi fr gl hu it ja km ko ku lt mr nb ne nl nn pl pt pt_BR ro ru sk sl sv th tl tr uk vi zh_CN zh_TW
-
-## disabled by translator request #313283:
-# he
diff --git a/po/makefile b/po/makefile
deleted file mode 100644 (file)
index f42d476..0000000
+++ /dev/null
@@ -1,114 +0,0 @@
-# -*- make -*-
-
-# This will compile the gettext message catalogues.
-
-# The other make files drop file lists in build/po/domains/DOMAIN/* which
-# is then picked up by this make file to define all the domains and all the
-# source files that compose each domain. It then produces the POT files 
-# and then filters the PO files through the per-domain POT file to create
-# the input to msgformat, which is then dumped into a locale directory.
-
-BASE=..
-SUBDIR=po
-
-# Bring in the default rules
-include ../buildlib/defaults.mak
-
-CATALOGS := $(addsuffix .gmo, $(shell sed -e '/^\#/ d' -e '/^$$/ d' LINGUAS | tr '\n' ' '))
-DOMAINS := $(sort $(notdir $(wildcard $(PO_DOMAINS)/*)))
-POTFILES := $(addsuffix .pot,$(addprefix $(PO)/,$(DOMAINS)))
-
-# Construct a list of all mo files for all domains under $(PO_DOMAINS)
-MOFILES := $(patsubst %.gmo,%.mo,$(CATALOGS))
-MOFILES := $(foreach D,$(DOMAINS),$(addprefix $(PO_DOMAINS)/$(D)/,$(MOFILES)))
-LANG_POFILES := $(patsubst %.mo,%.po,$(MOFILES))
-LINGUAS := $(patsubst %.gmo,%,$(CATALOGS))
-
-GETDOMAIN = $(word 1,$(subst /, ,$(1)))
-
-# Generate the list of files from the bits the other make files dropped 
-# and produce the .pot file.
-$(POTFILES) : $(PO)/%.pot :
-       echo "Generating POT file $@"
-       echo $@ : $(wildcard $(PO)/domains/$*/*.*list) $(addprefix $(BASE)/,$(shell cat $(wildcard $(PO)/domains/$*/*.srclist))) > $@.d.tmp
-       cmp --silent $@.d.tmp $@.d || mv $@.d.tmp $@.d
-# From sh source
-       cat $(PO)/domains/$*/*.shlist 2> /dev/null | (cd $(BASE) && xargs -n1 bash --dump-po-strings) > $(PO)/domains/$*/sh.pot.tmp
-       cmp --silent $(PO)/domains/$*/sh.pot.tmp $(PO)/domains/$*/sh.pot || \
-               mv $(PO)/domains/$*/sh.pot.tmp $(PO)/domains/$*/sh.pot
-# From C/C++ source
-       cat $(PO)/domains/$*/*.srclist | sort > $(PO)/POTFILES_$*.in
-       $(XGETTEXT) --default-domain=$* --directory=$(BASE) \
-         --add-comments --foreign --keyword=_ --keyword=N_ \
-          --add-location=file \
-         --keyword=P_:1,2 \
-         --files-from=$(PO)/POTFILES_$*.in -o $(PO)/domains/$*/c.pot.tmp
-       cmp --silent $(PO)/domains/$*/c.pot.tmp $(PO)/domains/$*/c.pot || \
-               mv $(PO)/domains/$*/c.pot.tmp $(PO)/domains/$*/c.pot
-       rm -f $(PO)/POTFILES_$*.in
-       $(MSGCOMM) --omit-header --more-than=0 $(PO)/domains/$*/c.pot $(PO)/domains/$*/sh.pot --output=$@.tmp
-       cmp --silent $@ $@.tmp || mv $@.tmp $@
-       # copy into the domain dirs to make rosetta happy
-       rm -f $(PO)/domains/$*/*.pot
-       cp $@ $(PO)/domains/$*
-
-# Filter the complete translation with the domain specific file to produce
-# only the subtext needed for this domain
-# We cannot express the dependencies required for this directly with a pattern
-# rule, so we use the .d hack.
-$(LANG_POFILES) : $(PO_DOMAINS)/%.po : $(POTFILES)
-       printf "%s " "Generating $@"
-       echo $@ : $(notdir $@) $(PO)/$(call GETDOMAIN,$*).pot > $(PO)/$(call GETDOMAIN,$*)_$(notdir $@).d
-       $(MSGMERGE) --add-location=file $(notdir $@) $(PO)/$(call GETDOMAIN,$*).pot -o $@
-
-$(MOFILES) : $(PO_DOMAINS)/%.mo : $(PO_DOMAINS)/%.po
-       printf "%s: " "Generating $(LOCALE)/$(notdir $*)/LC_MESSAGES/$(call GETDOMAIN,$*).mo"
-       $(GMSGFMT) --statistics -o $@ $<
-       mkdir -p $(LOCALE)/$(notdir $*)/LC_MESSAGES/
-       cp $@ $(LOCALE)/$(notdir $*)/LC_MESSAGES/$(call GETDOMAIN,$*).mo
-
-stats: all-linguas-enabled
-       for i in *.pot *.po; do echo -n "$$i: "; msgfmt --output-file=/dev/null --statistics $$i; done
-
-binary: $(POTFILES) $(MOFILES) all-linguas-enabled
-
-$(PACKAGE)-all.pot: $(POTFILES)
-       # we create our partial pot files without a header to avoid changing dates in *.mo files,
-       # but we want a header for our master-pot file, so we use a dummy pot with nothing but the header
-       $(XGETTEXT) --default-domain=$(PO)/$(PACKAGE)-dummy.pot --foreign --language=c \
-               -o $(PO)/$(PACKAGE)-dummy.pot --force-po --package-name='$(PACKAGE)' \
-               --package-version='$(PACKAGE_VERSION)' --msgid-bugs-address='$(PACKAGE_MAIL)' /dev/null
-       $(MSGCOMM) --more-than=0 $(PO)/$(PACKAGE)-dummy.pot $(POTFILES) --output=$(PACKAGE)-all.pot
-       rm -f $(PO)/$(PACKAGE)-dummy.pot
-
-.PHONY: update-po all-linguas-enabled
-update-po: $(PACKAGE)-all.pot all-linguas-enabled
-       for lang in ${LINGUAS}; do \
-       echo "Updating $$lang.po"; \
-       $(MSGMERGE) $$lang.po $(PACKAGE)-all.pot -o $$lang.new.po; \
-       cmp $$lang.new.po $$lang.po || cp $$lang.new.po $$lang.po; \
-       rm -f $$lang.new.po; \
-       done
-
-all-linguas-enabled: LINGUAS
-ifdef NOISY
-       echo "Available Translations: $(shell ls *.po | cut -d'.' -f 1 | sort | tr '\n' ' ')"
-       echo "Mentioned Translations: $(shell sed -e '/^\#\#/ d' -e '/^$$/ d' -e 's/# //' LINGUAS | tr ' ' '\n' | sort | tr '\n' ' ')"
-       echo "Build Translations:     $(shell echo "$(LINGUAS)" | tr ' ' '\n' | sort | tr '\n' ' ')"
-endif
-       test "$(shell ls *.po | cut -d'.' -f 1 | sort | tr '\n' ' ')" = \
-          "$(shell sed -e '/^\#\#/ d' -e '/^$$/ d' -e 's/# //' LINGUAS | tr ' ' '\n' | sort | tr '\n' ' ')" || \
-          ( echo "ERROR: Not all available translations are mentioned in po/LINGUAS!"; exit 100)
-
-clean: clean/local
-clean/local:
-       rm -f $(MOFILES) $(LANG_POFILES) $(PO)/*.d
-
-# Include the dependencies that are available
-The_DFiles = $(wildcard $(PO)/*.d)
-ifneq ($(words $(The_DFiles)),0)
-include $(The_DFiles)
-endif
-
-# otherwise the output is completely screwed
-.NOTPARALLEL:
index 18fd3af94d787024b3f6f3ac047f49a1fa7fbea4..df1b0a2cf0b5259046f980527e7679e34c1fedad 100755 (executable)
@@ -11,7 +11,7 @@ VERSION=$(dpkg-parsechangelog | sed -n -e '/^Version:/s/^Version: //p')
 DISTRIBUTION=$(dpkg-parsechangelog | sed -n -e '/^Distribution:/s/^Distribution: //p')
 
 LIBAPTPKGVERSION="$(awk -v ORS='.' '/^\#define APT_PKG_M/ {print $3}' apt-pkg/contrib/macros.h | sed 's/\.$//')"
-LIBAPTINSTVERSION="$(grep '^MAJOR=' apt-inst/makefile |cut -d '=' -f 2)"
+LIBAPTINSTVERSION="$(sed -nr 's/set\(MAJOR ([^)]*)\)/\1/p' apt-inst/CMakeLists.txt)"
 
 librarysymbolsfromfile() {
        local MISSING="$(grep '^+#MISSING' "$1")"
@@ -53,7 +53,7 @@ if [ "$1" = 'pre-export' ]; then
                VERSION="$VERSION~$(date +%Y%m%d)"
        fi
 
-       sed -i -e "s/^PACKAGE_VERSION=\".*\"$/PACKAGE_VERSION=\"${VERSION}\"/" configure.ac
+       sed -i -e "s/^set(PACKAGE_VERSION \".*\")$/set(PACKAGE_VERSION \"${VERSION}\")/" CMakeLists.txt
        sed -i -e "s/^<!ENTITY apt-product-version \".*\">$/<!ENTITY apt-product-version \"${VERSION}\">/" doc/apt-verbatim.ent
 
        # update the last-modification field of manpages based on git changes
@@ -68,15 +68,17 @@ Git-Dch: Ignore' "$file")" '+%Y-%m-%dT00:00:00Z')"
        if [ "$(date +%Y-%m-%d)" != "$(grep --max-count=1 '^"POT-Creation-Date: .*\n"$' po/apt-all.pot | cut -d' ' -f 2)" -o \
             "$(date +%Y-%m-%d)" != "$(grep --max-count=1 '^"POT-Creation-Date: .*\n"$' doc/po/apt-doc.pot | cut -d' ' -f 2)" ]; then
                echo >&2 'POT files are not up-to-date. Execute Â»make update-po« for you…'
-               make update-po
+               [ -e build ] || mkdir build
+               ( cd build && cmake .. )
+               cmake --build build --target update-po -- -j 4
        fi
 elif [ "$1" = 'pre-build' ]; then
        if [ "$DISTRIBUTION" = "UNRELEASED" ]; then
                echo 'BUILDING AN UNRELEASED VERSION'
        else
-               CONFVERSION="$(sed -ne "s/^PACKAGE_VERSION=\"\(.*\)\"$/\1/p" configure.ac)"
+               CONFVERSION="$(sed -ne "s/^set(PACKAGE_VERSION \"\(.*\)\")$/\1/p" CMakeLists.txt)"
                if [ "$VERSION" != "$CONFVERSION" ]; then
-                       echo "changelog (${VERSION}) and configure (${CONFVERSION}) talk about different versions!"
+                       echo "changelog (${VERSION}) and CMakeLists.txt (${CONFVERSION}) talk about different versions!"
                        echo "You probably want to run Â»./prepare-release pre-export« to fix this."
                        exit 1
                fi
@@ -115,9 +117,11 @@ elif [ "$1" = 'post-build' ]; then
                fi
        done
        # lets assume we will always have a german manpage translation
-       if [ -e 'doc/de/' ]; then
+       if [ -e */doc/de/ -o -e doc/de ]; then
                # â€¦ but check the translations only with one vendor for translation-specific errors
-               if ! xmllint --nonet --valid --noout $(find doc/ -mindepth 2 -maxdepth 2 -name '*.xml'); then
+               if ! xmllint  --path /vendor/$(./vendor/getinfo current)/ \
+                                         --path doc/ \
+                                       --nonet --valid --noout $(find doc/ */doc/ -mindepth 2 -maxdepth 2 -name '*.xml'); then
                        echo >&2 "WARNING: translated docbook manpages have errors!"
                fi
        else
@@ -127,7 +131,14 @@ elif [ "$1" = 'post-build' ]; then
 
 elif [ "$1" = 'library' ]; then
        librarysymbols() {
+               local libname=$(echo "${1}" | cut -c 4-)
                local buildlib="build/bin/${1}.so.${2}"
+               for dir in $libname */$libname; do
+                       local new_buildlib="$dir/${1}.so.${2}"
+                       if [  -r "${new_buildlib}" ] && [ ! -e "$buildlib" -o "$new_buildlib" -nt "$buildlib" ]; then
+                               local buildlib="${new_buildlib}"
+                       fi
+               done
                if [ ! -r "$buildlib" ]; then
                        echo "ERROR: The library ${1} has to be built before symbols can be checked!"
                        return
diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt
new file mode 100644 (file)
index 0000000..2f47b5c
--- /dev/null
@@ -0,0 +1,2 @@
+add_subdirectory(libapt)
+add_subdirectory(interactive-helper)
diff --git a/test/Makefile b/test/Makefile
deleted file mode 100644 (file)
index 35a0a51..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-# -*- make -*-
-
-# This is the top level test makefile for APT, it recurses to each lower
-# level make file and runs it with the proper target
-ifndef NOISY
-.SILENT:
-endif
-
-.PHONY: startup headers library clean veryclean all binary program doc test update-po
-startup all clean veryclean binary program dirs test update-po manpages docbook:
-       $(MAKE) -C libapt $@
-       $(MAKE) -C interactive-helper $@
-
-# Some very common aliases
-.PHONY: maintainer-clean dist-clean distclean pristine sanity
-maintainer-clean dist-clean distclean pristine sanity: veryclean
index 7a6b044aa7cdc4f9e45d1583d926a59acc7d7a8d..0f442dff43bdf08b25ddc78ed2b9d78012580a84 100644 (file)
@@ -180,7 +180,7 @@ aptconfig() { runapt apt-config "$@"; }
 aptcache() { runapt apt-cache "$@"; }
 aptcdrom() { runapt apt-cdrom "$@"; }
 aptget() { runapt apt-get "$@"; }
-aptftparchive() { runapt apt-ftparchive "$@"; }
+aptftparchive() { runapt "${APTFTPARCHIVEBINDIR}/apt-ftparchive" "$@"; }
 aptkey() { runapt apt-key "$@"; }
 aptmark() { runapt apt-mark "$@"; }
 aptsortpkgs() { runapt apt-sortpkgs "$@"; }
@@ -257,6 +257,24 @@ escape_shell() {
     echo "$@" | sed -e "s#'#'\"'\"'#g"
 }
 
+find_project_binary_dir() {
+       local TESTDIRECTORY="$(readlink -f "$(dirname $0)")"
+       if [ -z "$PROJECT_BINARY_DIR" ]; then
+               PROJECT_BINARY_DIR=
+               for dir in ${TESTDIRECTORY}/../../ ${TESTDIRECTORY}/../../*; do
+                       test -e "$dir/CMakeCache.txt"  || continue
+                       if [ -z "$PROJECT_BINARY_DIR" ] ||
+                          [ "$dir/CMakeCache.txt" -nt "$PROJECT_BINARY_DIR/CMakeCache.txt" ]; then
+                               PROJECT_BINARY_DIR="$dir"
+                       fi
+               done
+               if [ -z "$PROJECT_BINARY_DIR" ]; then
+                       echo "Cannot find build directory, you might want to set PROJECT_BINARY_DIR" >&2
+                       exit 1
+               fi
+               export PROJECT_BINARY_DIR
+       fi
+}
 setupenvironment() {
        # privilege dropping and testing doesn't work if /tmp isn't world-writeable (as e.g. with libpam-tmpdir)
        if [ -n "$TMPDIR" ] && [ "$(id -u)" = '0' ] && [ "$(stat --format '%a' "$TMPDIR")" != '1777' ]; then
@@ -281,16 +299,19 @@ setupenvironment() {
        fi
 
        TESTDIRECTORY="$(readlink -f "$(dirname $0)")"
+       # Find the newest build directory (sets PROJECT_BINARY_DIR)
+       find_project_binary_dir
         # allow overriding the default BUILDDIR location
        SOURCEDIRECTORY="${APT_INTEGRATION_TESTS_SOURCE_DIR:-"${TESTDIRECTORY}/../../"}"
-       BUILDDIRECTORY="${APT_INTEGRATION_TESTS_BUILD_DIR:-"${TESTDIRECTORY}/../../build/bin"}"
-       LIBRARYPATH="${APT_INTEGRATION_TESTS_LIBRARY_PATH:-"${BUILDDIRECTORY}"}"
-        METHODSDIR="${APT_INTEGRATION_TESTS_METHODS_DIR:-"${BUILDDIRECTORY}/methods"}"
+       BUILDDIRECTORY="${APT_INTEGRATION_TESTS_BUILD_DIR:-"${PROJECT_BINARY_DIR}/cmdline"}"
+       LIBRARYPATH="${APT_INTEGRATION_TESTS_LIBRARY_PATH:-"${BUILDDIRECTORY}/../apt-pkg"}"
+        METHODSDIR="${APT_INTEGRATION_TESTS_METHODS_DIR:-"${BUILDDIRECTORY}/../methods"}"
         APTHELPERBINDIR="${APT_INTEGRATION_TESTS_LIBEXEC_DIR:-"${BUILDDIRECTORY}"}"
-        APTWEBSERVERBINDIR="${APT_INTEGRATION_TESTS_WEBSERVER_BIN_DIR:-"${BUILDDIRECTORY}"}"
-        APTINTERNALSOLVER="${APT_INTEGRATION_TESTS_INTERNAL_SOLVER:-"${BUILDDIRECTORY}/apt-internal-solver"}"
-       APTDUMPSOLVER="${APT_INTEGRATION_TESTS_DUMP_SOLVER:-"${BUILDDIRECTORY}/apt-dump-solver"}"
-       APTINTERNALPLANNER="${APT_INTEGRATION_TESTS_INTERNAL_PLANNER:-"${BUILDDIRECTORY}/apt-internal-planner"}"
+        APTWEBSERVERBINDIR="${APT_INTEGRATION_TESTS_WEBSERVER_BIN_DIR:-"${BUILDDIRECTORY}/../test/interactive-helper"}"
+        APTFTPARCHIVEBINDIR="${APT_INTEGRATION_TESTS_FTPARCHIVE_BIN_DIR:-"${BUILDDIRECTORY}/../ftparchive"}"
+        APTINTERNALSOLVER="${APT_INTEGRATION_TESTS_INTERNAL_SOLVER:-"${BUILDDIRECTORY}/solvers/apt"}"
+       APTDUMPSOLVER="${APT_INTEGRATION_TESTS_DUMP_SOLVER:-"${BUILDDIRECTORY}/solvers/dump"}"
+       APTINTERNALPLANNER="${APT_INTEGRATION_TESTS_INTERNAL_PLANNER:-"${BUILDDIRECTORY}/planners/apt"}"
        test -x "${BUILDDIRECTORY}/apt-get" || msgdie "You need to build tree first"
         # -----
 
diff --git a/test/integration/makefile b/test/integration/makefile
deleted file mode 100644 (file)
index fb12fe9..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-# -*- make -*-
-BASE=../..
-SUBDIR=test/integration
-
-# Bring in the default rules
-include ../../buildlib/defaults.mak
-
-.PHONY: test
-test:
-       ./run-tests
index 78f24fbaf024e8f52784b80868fc8258f6e1ef75..e90b4b7558eb13c3b45d04cc5b968fb0c6b9575e 100755 (executable)
@@ -1,4 +1,10 @@
 #!/bin/sh
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+find_project_binary_dir
+
 set -e
 
 TESTTORUN=''
index 3f509189ec2acc9c9ef9a232cf9257734b1ac3e2..a53a6b4a31f5616a71a8623a280739b8c183557c 100755 (executable)
@@ -5,7 +5,7 @@ TESTDIR="$(readlink -f "$(dirname "$0")")"
 . "$TESTDIR/framework"
 setupenvironment
 
-TESTTOOL="${BUILDDIRECTORY}/test_fileutl"
+TESTTOOL="${BUILDDIRECTORY}/../test/interactive-helper/test_fileutl"
 msgtest 'Check if we have build the test tool' "$TESTTOOL"
 if [ -x "$TESTTOOL" ]; then
        msgpass
diff --git a/test/interactive-helper/CMakeLists.txt b/test/interactive-helper/CMakeLists.txt
new file mode 100644 (file)
index 0000000..fc08d6a
--- /dev/null
@@ -0,0 +1,10 @@
+add_executable(mthdcat mthdcat.cc)
+target_link_libraries(mthdcat apt-pkg)
+add_executable(testdeb testdeb.cc)
+target_link_libraries(testdeb apt-pkg apt-inst)
+add_executable(extract-control extract-control.cc)
+target_link_libraries(extract-control apt-pkg apt-inst)
+add_executable(aptwebserver aptwebserver.cc)
+target_link_libraries(aptwebserver apt-pkg  ${CMAKE_THREAD_LIBS_INIT})
+add_executable(test_fileutl test_fileutl.cc)
+target_link_libraries(test_fileutl apt-pkg)
diff --git a/test/interactive-helper/makefile b/test/interactive-helper/makefile
deleted file mode 100644 (file)
index 096767c..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-# -*- make -*-
-BASE=../..
-SUBDIR=test/interactive-helper
-APT_DOMAIN=none
-
-# Bring in the default rules
-include ../../buildlib/defaults.mak
-
-# Program for testing methods
-PROGRAM=mthdcat
-SLIBS = 
-SOURCE = mthdcat.cc
-include $(PROGRAM_H)
-
-# Program for testing the tar/deb extractor
-PROGRAM=testdeb
-SLIBS = -lapt-pkg -lapt-inst
-LIB_MAKES = apt-pkg/makefile apt-inst/makefile
-SOURCE = testdeb.cc
-include $(PROGRAM_H)
-
-# Program for testing tar extraction
-PROGRAM=extract-control
-SLIBS = -lapt-pkg -lapt-inst
-LIB_MAKES = apt-pkg/makefile apt-inst/makefile
-SOURCE = extract-control.cc
-include $(PROGRAM_H)
-
-# Program for testing udevcdrom
-PROGRAM=test_udevcdrom
-SLIBS = -lapt-pkg
-LIB_MAKES = apt-pkg/makefile
-SOURCE = test_udevcdrom.cc
-include $(PROGRAM_H)
-
-PROGRAM=test_fileutl
-SLIBS = -lapt-pkg
-LIB_MAKES = apt-pkg/makefile
-SOURCE = test_fileutl.cc
-include $(PROGRAM_H)
-
-# Program for checking rpm versions
-#PROGRAM=rpmver
-#SLIBS = -lapt-pkg -lrpm
-#SOURCE = rpmver.cc
-#include $(PROGRAM_H)
-
-# very simple webserver for APT testing
-PROGRAM=aptwebserver
-SLIBS = -lapt-pkg -lpthread
-LIB_MAKES = apt-pkg/makefile
-SOURCE = aptwebserver.cc
-include $(PROGRAM_H)
diff --git a/test/libapt/CMakeLists.txt b/test/libapt/CMakeLists.txt
new file mode 100644 (file)
index 0000000..7f99905
--- /dev/null
@@ -0,0 +1,22 @@
+include(ExternalProject)
+
+set(GTEST_ROOT "/usr/src/gtest" CACHE FILEPATH "Path to GTest CMake project")
+
+message(STATUS "Found GTest at ${GTEST_ROOT}")
+
+if (EXISTS ${GTEST_ROOT})
+
+ExternalProject_Add(gtest PREFIX ./gtest
+                          SOURCE_DIR ${GTEST_ROOT}
+                          INSTALL_COMMAND true)
+
+link_directories(${CMAKE_CURRENT_BINARY_DIR}/gtest/src/gtest-build)
+FILE(GLOB files gtest_runner.cc *-helpers.cc *_test.cc)
+add_executable(libapt_test ${files})
+target_link_libraries(libapt_test -lgtest ${CMAKE_THREAD_LIBS_INIT} apt-private apt-inst)
+add_dependencies(libapt_test gtest)
+add_test(NAME AptTests
+         COMMAND libapt_test
+         WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
+
+endif()
index 0a299b51af045f1c577b3bfe14eed7759f5ef5c6..67bd850a123811149d72ab7c5b1c919fac1ffeea 100644 (file)
@@ -216,7 +216,7 @@ TEST(FileUtlTest, Glob)
 {
    std::vector<std::string> files;
    // normal match
-   files = Glob("*akefile");
+   files = Glob("*MakeLists.txt");
    EXPECT_EQ(1, files.size());
 
    // not there
index 705c0297d3c0cab8ebf6e0871df7926abe891db1..fb9a25643aefd55c86c120510b89c30fae801cda 100644 (file)
@@ -119,7 +119,7 @@ static void getSummationString(char const * const type, std::string &sum)
    FileFd fd;
    ASSERT_TRUE(fd.Open(tempfile, FileFd::WriteOnly | FileFd::Empty, compress));
    ASSERT_TRUE(fd.IsOpen());
-   FileFd input(__FILE__, FileFd::ReadOnly);
+   FileFd input("/etc/os-release", FileFd::ReadOnly);
    ASSERT_TRUE(input.IsOpen());
    ASSERT_NE(0, input.FileSize());
    ASSERT_TRUE(CopyFile(input, fd));
@@ -161,7 +161,7 @@ TEST(HashSumsTest, FileBased)
    SHA512SumValue sha512(summation);
    EXPECT_EQ(sha512.Value(), summation);
 
-   FileFd fd(__FILE__, FileFd::ReadOnly);
+   FileFd fd("/etc/os-release", FileFd::ReadOnly);
    EXPECT_TRUE(fd.IsOpen());
    std::string FileSize;
    strprintf(FileSize, "%llu", fd.FileSize());
@@ -243,18 +243,18 @@ TEST(HashSumsTest, FileBased)
    fd.Close();
 
    HashString sha2file("SHA512", sha512.Value());
-   EXPECT_TRUE(sha2file.VerifyFile(__FILE__));
+   EXPECT_TRUE(sha2file.VerifyFile("/etc/os-release"));
    HashString sha2wrong("SHA512", "00000000000");
-   EXPECT_FALSE(sha2wrong.VerifyFile(__FILE__));
+   EXPECT_FALSE(sha2wrong.VerifyFile("/etc/os-release"));
    EXPECT_EQ(sha2file, sha2file);
    EXPECT_TRUE(sha2file == sha2file);
    EXPECT_NE(sha2file, sha2wrong);
    EXPECT_TRUE(sha2file != sha2wrong);
 
    HashString sha2big("SHA256", sha256.Value());
-   EXPECT_TRUE(sha2big.VerifyFile(__FILE__));
+   EXPECT_TRUE(sha2big.VerifyFile("/etc/os-release"));
    HashString sha2small("sha256:" + sha256.Value());
-   EXPECT_TRUE(sha2small.VerifyFile(__FILE__));
+   EXPECT_TRUE(sha2small.VerifyFile("/etc/os-release"));
    EXPECT_EQ(sha2big, sha2small);
    EXPECT_TRUE(sha2big == sha2small);
    EXPECT_FALSE(sha2big != sha2small);
@@ -283,7 +283,7 @@ TEST(HashSumsTest, FileBased)
    EXPECT_EQ(2, hashes.size());
    EXPECT_FALSE(hashes.push_back(sha2wrong));
    EXPECT_EQ(2, hashes.size());
-   EXPECT_TRUE(hashes.VerifyFile(__FILE__));
+   EXPECT_TRUE(hashes.VerifyFile("/etc/os-release"));
 
    EXPECT_EQ(similar, hashes);
    EXPECT_TRUE(similar == hashes);
diff --git a/test/libapt/makefile b/test/libapt/makefile
deleted file mode 100644 (file)
index 5ff9cf6..0000000
+++ /dev/null
@@ -1,84 +0,0 @@
-# -*- make -*-
-BASE=../..
-SUBDIR=test/libapt
-BASENAME=_libapt_test
-APT_DOMAIN=none
-
-# Bring in the default rules
-include ../../buildlib/defaults.mak
-
-.PHONY: test
-ifeq (file-okay,$(shell $(CC) -I $(BASE)/build/include -M gtest_runner.cc >/dev/null 2>&1 && echo 'file-okay'))
-test: $(BIN)/gtest$(BASENAME)
-       MALLOC_PERTURB_=21 MALLOC_CHECK_=2 LD_LIBRARY_PATH=$(LIB) $(BIN)/gtest$(BASENAME)
-
-$(BIN)/gtest$(BASENAME): $(LIB)/gtest.a
-
-PROGRAM = gtest${BASENAME}
-SLIBS = -lapt-pkg -lapt-private -lapt-inst -pthread $(LIB)/gtest.a
-LIB_MAKES = apt-pkg/makefile apt-private/makefile apt-inst/makefile
-SOURCE = gtest_runner.cc $(wildcard *-helpers.cc *_test.cc)
-include $(PROGRAM_H)
-
-
-MKDIRS += $(OBJ) $(LIB)
-LOCAL=gtest
-SOURCE=gtest-all
-gtest-OBJS := $(addprefix $(OBJ)/,$(addsuffix .o,$(SOURCE)))
-
-# The rest of the file is based on the example found in
-# /usr/share/doc/libgtest-dev/examples/make/Makefile
-GTEST_DIR = /usr/src/gtest
-
-# Flags passed to the preprocessor.
-# Set Google Test's header directory as a system directory, such that
-# the compiler doesn't generate warnings in Google Test headers.
-#CPPFLAGS += -isystem $(GTEST_DIR)/include
-
-# Flags passed to the C++ compiler.
-CXXFLAGS += -pthread
-# disable some flags for gtest again
-CXXFLAGS+= -Wno-missing-declarations
-CXXFLAGS+= -Wno-missing-field-initializers
-CXXFLAGS+= -Wno-suggest-attribute=pure -Wno-suggest-attribute=const -Wno-suggest-attribute=noreturn
-CXXFLAGS+= -Wno-undef
-
-# All Google Test headers.  Usually you shouldn't change this definition.
-GTEST_HEADERS = /usr/include/gtest/*.h \
-                /usr/include/gtest/internal/*.h
-
-# House-keeping build targets.
-.PHONY: clean/gtest veryclean/gtest
-clean: clean/gtest
-clean/gtest:
-       rm -f $(gtest-OBJS)
-veryclean: veryclean/gtest
-veryclean/gtest: clean/gtest
-       rm -f $(LIB)/gtest.a
-
-# Usually you shouldn't tweak such internal variables, indicated by a
-# trailing _.
-GTEST_SRCS_ = $(GTEST_DIR)/src/*.cc $(GTEST_DIR)/src/*.h $(GTEST_HEADERS)
-
-# Builds gtest.a
-# For simplicity and to avoid depending on Google Test's
-# implementation details, the dependencies specified below are
-# conservative and not optimized.  This is fine as Google Test
-# compiles fast and for ordinary users its source rarely changes.
-$(gtest-OBJS): $(GTEST_SRCS_)
-       echo Compiling $@
-       $(CXX) $(CPPFLAGS) -I$(GTEST_DIR) $(CXXFLAGS) -c -o $@ $(GTEST_DIR)/src/$(notdir $(basename $@)).cc
-
-$(LIB)/gtest.a: $(OBJ)/gtest-all.o
-       echo Building static library $@
-       -rm -f $@
-       $(AR) $(ARFLAGS) $@ $^
-
-else
-test:
-       @echo "APT uses Googles C++ testing framework for its unit tests"
-       @echo "On Debian systems this is available in the 'libgtest-dev' package."
-       @echo "Please install it before attempting to run the unit tests."
-       $(CC) -I $(BASE)/build/include -M gtest_runner.cc
-       exit 100
-endif
diff --git a/vendor/CMakeLists.txt b/vendor/CMakeLists.txt
new file mode 100644 (file)
index 0000000..8246c72
--- /dev/null
@@ -0,0 +1,37 @@
+# Determine the current vendor, export to CURRENT_VENDOR
+if (NOT DEFINED CURRENT_VENDOR)
+    execute_process(COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/getinfo current
+                    OUTPUT_VARIABLE CURRENT_VENDOR_OUT OUTPUT_STRIP_TRAILING_WHITESPACE)
+
+    set(CURRENT_VENDOR "${CURRENT_VENDOR_OUT}" CACHE STRING "Select the system vendor")
+    message(STATUS "Detected vendor: ${CURRENT_VENDOR_OUT}")
+else()
+    message(STATUS "Detected vendor: ${CURRENT_VENDOR} (cached)")
+endif()
+
+# Handle sources.list example
+add_vendor_file(OUTPUT sources.list
+                INPUT "${CURRENT_VENDOR}/sources.list.in"
+                MODE 644
+                VARIABLES sourceslist-list-format
+                          debian-stable-codename
+                          debian-oldstable-codename
+                          debian-testing-codename
+                          ubuntu-codename
+                          current-codename)
+install(FILES ${CMAKE_CURRENT_BINARY_DIR}/sources.list
+        DESTINATION ${CMAKE_INSTALL_DOCDIR}/examples)
+
+# Handle apt.conf snippets
+file(GLOB conffiles ${CURRENT_VENDOR}/apt.conf-*)
+foreach(file ${conffiles})
+    file(RELATIVE_PATH confname ${CMAKE_CURRENT_SOURCE_DIR}/${CURRENT_VENDOR}/ ${file})
+    string(REPLACE "apt.conf-" "" confname "${confname}")
+    install(FILES "${file}"
+            DESTINATION "${CMAKE_INSTALL_SYSCONFDIR}/apt/apt.conf.d/"
+            RENAME "${confname}")
+endforeach()
+
+if (EXISTS "${CURRENT_VENDOR}/CMakeLists.txt")
+    add_subdirectory(${CURRENT_VENDOR})
+endif()
index 79da83620f1f7af93720a74a93cf19588a2f048f..37e0c1480f86ab11a6a8da1b9b4f682889e280bb 100755 (executable)
@@ -2,7 +2,47 @@
 # small helper to extract information form *.ent files
 
 BASEDIR="$(readlink -f "$(dirname $0)")"
-INFO="$(readlink -f "${BASEDIR}/current/apt-vendor.ent")"
+
+getcurrent() {
+       # search for an exact match to use the correct sources.list example
+       cd $BASEDIR
+       DISTROS="$(find -mindepth 1 -maxdepth 1 -type d | cut -d'/' -f 2)"
+       for DISTRO in $DISTROS; do
+               if dpkg-vendor --is $DISTRO; then
+                       echo $DISTRO
+                       return 0
+               fi
+       done
+
+       # if we haven't found a specific, look for a deriving
+       # we do ubuntu and debian last as those are the biggest families
+       # and would therefore potentially 'shadow' smaller families
+       # (especially debian as it sorts quiet early)
+       for DISTRO in $DISTROS; do
+               if [ "$DISTRO" = 'debian' -o "$DISTRO" = 'ubuntu' ]; then continue; fi
+               if dpkg-vendor --derives-from $DISTRO; then
+                       echo $DISTRO
+                       return 0
+               fi
+       done
+
+       # Do the ubuntu/debian dance we talked about
+       if dpkg-vendor --derives-from ubuntu; then
+               echo $DISTRO
+               return 0
+       fi
+
+       echo debian
+       return 0
+}
+
+if [ "$1" = "--vendor" ]; then
+       CURRENT_VENDOR="$2"
+       shift 2
+else
+       CURRENT_VENDOR=$(getcurrent)
+fi
+INFO="$(readlink -f "${BASEDIR}/$CURRENT_VENDOR/apt-vendor.ent")"
 VERBATIM="${BASEDIR}/../doc/apt-verbatim.ent"
 
 if [ -z "$INFO" ] || [ ! -e "$INFO" ]; then
@@ -24,8 +64,8 @@ case "$1" in
 debian-stable-codename|debian-oldstable-codename|debian-testing-codename|ubuntu-codename)
        getrawfield "$1" "$VERBATIM"
        ;;
-keyring-package|keyring-filename|keyring-master-filename|keyring-removed-filename|keyring-uri|current-codename)
-       exec $0 'vendor' "$@"
+sourceslist-list-format|keyring-package|keyring-filename|keyring-master-filename|keyring-removed-filename|keyring-uri|current-codename)
+       exec $0 --vendor $CURRENT_VENDOR 'vendor' "$@"
        ;;
 vendor)
        getfield "$2"
@@ -33,6 +73,9 @@ vendor)
 verbatim)
        getfield "$2" "$VERBATIM"
        ;;
+current)
+       echo $CURRENT_VENDOR
+       ;;
 *)
        echo >&2 "Unknown data field $1 requested"
        exit 2
diff --git a/vendor/makefile b/vendor/makefile
deleted file mode 100644 (file)
index 966c3d0..0000000
+++ /dev/null
@@ -1,58 +0,0 @@
-# -*- make -*-
-BASE=..
-SUBDIR=vendor
-
-# Bring in the default rules
-include ../buildlib/defaults.mak
-
-all headers library binary program doc manpages docbook test update-po startup dirs: current
-all: all/subdirs
-binary: binary/subdirs
-doc: doc/subdirs
-clean: clean/subdirs
-veryclean: veryclean/subdirs
-dirs: dirs/subdirs
-manpages: manpages/subdirs
-
-all/subdirs binary/subdirs doc/subdirs dirs/subdirs manpages/subdirs clean/subdirs veryclean/subdirs:
-       test ! -e current/makefile || $(MAKE) -C current $(patsubst %/subdirs,%,$@)
-       test ! -e current/makefile.auto || $(MAKE) -C current -f makefile.auto $(patsubst %/subdirs,%,$@)
-
-current:
-       rm -f $@
-       # search for an exact match to use the correct sources.list example
-       find -mindepth 1 -maxdepth 1 -type d | cut -d'/' -f 2 | while read DISTRO; do \
-               if dpkg-vendor --is $$DISTRO; then \
-                       ln -s $$DISTRO $@; \
-                       break; \
-               fi; \
-       done
-       # if we haven't found a specific, look for a deriving
-       # we do ubuntu and debian last as those are the biggest families
-       # and would therefore potentially 'shadow' smaller families
-       # (especially debian as it sorts quiet early)
-       if ! test -e $@; then \
-               find -mindepth 1 -maxdepth 1 -type d | cut -d'/' -f 2 | while read DISTRO; do \
-                       if [ "$$DISTRO" = 'debian' -o "$$DISTRO" = 'ubuntu' ]; then continue; fi; \
-                       if dpkg-vendor --derives-from $$DISTRO; then \
-                               ln -s $$DISTRO $@; \
-                               break; \
-                       fi; \
-               done; \
-               test -e $@ || \
-                       (dpkg-vendor --derives-from ubuntu && cp ln -s ubuntu $@ ) || \
-                       ln -s debian $@; \
-       fi
-       if test ! -e current/makefile; then \
-               sed "s#@@VENDOR@@#$(notdir $(shell readlink -f current))#" vendor.makefile > current/makefile.auto; \
-       fi
-
-.PHONY: clean veryclean all binary vendor
-
-clean: clean/current
-clean/current: clean/subdirs
-       rm -f current/makefile.auto current
-
-veryclean: veryclean/current
-veryclean/current: veryclean/subdirs
-       rm -f current/makefile.auto current
diff --git a/vendor/vendor.makefile b/vendor/vendor.makefile
deleted file mode 100644 (file)
index 32de3b0..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-# -*- make -*-
-BASE=../..
-SUBDIR=vendor/@@VENDOR@@
-
-# Bring in the default rules
-include ../../buildlib/defaults.mak
-
-doc binary manpages: sources.list
-
-sources.list: sources.list.in ../../doc/apt-verbatim.ent
-       while read line; do \
-               if [ "$${line}" = '&sourceslist-list-format;' ]; then \
-                       $(BASE)/vendor/getinfo vendor sourceslist-list-format ; \
-               else \
-                       echo "$${line}"; \
-               fi \
-       done < $< | sed -e 's#&debian-stable-codename;#$(shell ../getinfo debian-stable-codename)#g' \
-               -e 's#&debian-oldstable-codename;#$(shell ../getinfo debian-oldstable-codename)#g' \
-               -e 's#&debian-testing-codename;#$(shell ../getinfo debian-testing-codename)#g' \
-               -e 's#&ubuntu-codename;#$(shell ../getinfo ubuntu-codename)#g' \
-               -e 's#&current-codename;#$(shell ../getinfo current-codename)#g' \
-               > $@
-
-clean: clean/sources.list
-veryclean: clean/sources.list
-
-clean/sources.list:
-       rm -f sources.list