summaryrefslogtreecommitdiff
path: root/vendor
diff options
context:
space:
mode:
Diffstat (limited to 'vendor')
-rw-r--r--vendor/CMakeLists.txt37
-rwxr-xr-xvendor/getinfo49
-rw-r--r--vendor/makefile58
-rw-r--r--vendor/vendor.makefile28
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#&current-codename;#$(shell ../getinfo current-codename)#g' \
- > $@
-
-clean: clean/sources.list
-veryclean: clean/sources.list
-
-clean/sources.list:
- rm -f sources.list