diff options
Diffstat (limited to 'vendor')
-rw-r--r-- | vendor/CMakeLists.txt | 37 | ||||
-rwxr-xr-x | vendor/getinfo | 49 | ||||
-rw-r--r-- | vendor/makefile | 58 | ||||
-rw-r--r-- | vendor/vendor.makefile | 28 |
4 files changed, 83 insertions, 89 deletions
diff --git a/vendor/CMakeLists.txt b/vendor/CMakeLists.txt new file mode 100644 index 000000000..8246c725a --- /dev/null +++ b/vendor/CMakeLists.txt @@ -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() diff --git a/vendor/getinfo b/vendor/getinfo index 79da83620..37e0c1480 100755 --- a/vendor/getinfo +++ b/vendor/getinfo @@ -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 index 966c3d080..000000000 --- a/vendor/makefile +++ /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 index 32de3b0d5..000000000 --- a/vendor/vendor.makefile +++ /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#¤t-codename;#$(shell ../getinfo current-codename)#g' \ - > $@ - -clean: clean/sources.list -veryclean: clean/sources.list - -clean/sources.list: - rm -f sources.list |