From eef71f11a5836eb82df133cb4e24cb4806642188 Mon Sep 17 00:00:00 2001 From: David Kalnischkies Date: Sat, 30 Nov 2013 14:01:28 +0100 Subject: introduce a vendor system to change sources.list Many derivatives make quiet a few simple changes to apt introducing silly diffs just to change examples and co making it harder for them to update apt and harder for us to merge real changes back. First stop: doc/examples/sources.list --- vendor/debian/makefile | 11 +++++++++++ vendor/debian/sources.list.in | 8 ++++++++ vendor/makefile | 42 ++++++++++++++++++++++++++++++++++++++++++ vendor/ubuntu/makefile | 11 +++++++++++ vendor/ubuntu/sources.list.in | 10 ++++++++++ 5 files changed, 82 insertions(+) create mode 100644 vendor/debian/makefile create mode 100644 vendor/debian/sources.list.in create mode 100644 vendor/makefile create mode 100644 vendor/ubuntu/makefile create mode 100644 vendor/ubuntu/sources.list.in (limited to 'vendor') diff --git a/vendor/debian/makefile b/vendor/debian/makefile new file mode 100644 index 000000000..41202c6a0 --- /dev/null +++ b/vendor/debian/makefile @@ -0,0 +1,11 @@ +# -*- make -*- +BASE=../.. +SUBDIR=vendor/debian + +# Bring in the default rules +include ../../buildlib/defaults.mak + +doc: sources.list + +sources.list: sources.list.in ../../doc/apt-verbatim.ent + sed -e 's#&stable-codename;#$(shell grep --max-count=1 '^ $@ diff --git a/vendor/debian/sources.list.in b/vendor/debian/sources.list.in new file mode 100644 index 000000000..745e32cbe --- /dev/null +++ b/vendor/debian/sources.list.in @@ -0,0 +1,8 @@ +# See sources.list(5) manpage for more information +# Remember that CD-ROMs, DVDs and such are managed through the apt-cdrom tool. +deb http://ftp.us.debian.org/debian &stable-codename; main contrib non-free +deb http://security.debian.org &stable-codename;/updates main contrib non-free + +# Uncomment if you want the apt-get source function to work +#deb-src http://ftp.us.debian.org/debian &stable-codename; main contrib non-free +#deb-src http://security.debian.org &stable-codename;/updates main contrib non-free diff --git a/vendor/makefile b/vendor/makefile new file mode 100644 index 000000000..a6d53abd0 --- /dev/null +++ b/vendor/makefile @@ -0,0 +1,42 @@ +# -*- make -*- +BASE=.. +SUBDIR=vendor + +# Bring in the default rules +include ../buildlib/defaults.mak + +all headers library binary program doc manpages debiandoc test update-po startup dirs: current +all: all/subdirs +binary: binary/subdirs +doc: doc/subdirs +clean: clean/subdirs +veryclean: veryclean/subdirs +dirs: dirs/subdirs + +all/subdirs binary/subdirs doc/subdirs dirs/subdirs: + $(MAKE) -C current $(patsubst %/subdirs,%,$@) + +clean/subdirs veryclean/subdirs: + test ! -e current || $(MAKE) -C current $(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 in hardcoded order + test -e $@ || \ + (dpkg-vendor --derives-from ubuntu && cp ln -s ubuntu $@ ) || \ + ln -s debian $@ + +.PHONY: clean veryclean all binary vendor + +clean: clean/current + +clean/current: + test ! -e current || $(MAKE) -C current clean + rm -f current diff --git a/vendor/ubuntu/makefile b/vendor/ubuntu/makefile new file mode 100644 index 000000000..388a529a9 --- /dev/null +++ b/vendor/ubuntu/makefile @@ -0,0 +1,11 @@ +# -*- make -*- +BASE=../.. +SUBDIR=vendor/ubuntu + +# Bring in the default rules +include ../../buildlib/defaults.mak + +doc: sources.list + +sources.list: sources.list.in ../../doc/apt-verbatim.ent + sed -e 's#&ubuntu-codename;#$(shell grep --max-count=1 '^ $@ diff --git a/vendor/ubuntu/sources.list.in b/vendor/ubuntu/sources.list.in new file mode 100644 index 000000000..b9aa8c3d0 --- /dev/null +++ b/vendor/ubuntu/sources.list.in @@ -0,0 +1,10 @@ + # See sources.list(5) manpage for more information + # Remember that CD-ROMs, DVDs and such are managed through the apt-cdrom tool. +deb http://us.archive.ubuntu.com/ubuntu &ubuntu-codename; main restricted +deb-src http://us.archive.ubuntu.com/ubuntu &ubuntu-codename; main restricted + +deb http://security.ubuntu.com/ubuntu &ubuntu-codename;-security main restricted +deb-src http://security.ubuntu.com/ubuntu &ubuntu-codename;-security main restricted + +deb http://us.archive.ubuntu.com/ubuntu &ubuntu-codename;-updates main restricted +deb-src http://us.archive.ubuntu.com/ubuntu &ubuntu-codename;-updates main restricted -- cgit v1.2.3 From 694ef56e802bbab94595fc491fdc6ef8b4f525c1 Mon Sep 17 00:00:00 2001 From: David Kalnischkies Date: Sat, 30 Nov 2013 19:15:02 +0100 Subject: add a vendor specific file to have configurable entities manpages sometimes refer to distro-specific things like the name of the package providing the achive-keyring. Having a central place to configure this helps in having it consistent in the manpages and allows to load this info from other places in the buildsystem as well later. --- vendor/debian/apt-vendor.ent | 5 +++++ vendor/ubuntu/apt-vendor.ent | 5 +++++ 2 files changed, 10 insertions(+) create mode 100644 vendor/debian/apt-vendor.ent create mode 100644 vendor/ubuntu/apt-vendor.ent (limited to 'vendor') diff --git a/vendor/debian/apt-vendor.ent b/vendor/debian/apt-vendor.ent new file mode 100644 index 000000000..56775bbaa --- /dev/null +++ b/vendor/debian/apt-vendor.ent @@ -0,0 +1,5 @@ + + +debian-archive-keyring"> +/usr/share/keyrings/debian-archive-keyring.gpg"> +/usr/share/keyrings/debian-archive-removed-keys.gpg"> diff --git a/vendor/ubuntu/apt-vendor.ent b/vendor/ubuntu/apt-vendor.ent new file mode 100644 index 000000000..fd5e5a7cf --- /dev/null +++ b/vendor/ubuntu/apt-vendor.ent @@ -0,0 +1,5 @@ + + +ubuntu-keyring"> +/usr/share/keyrings/ubuntu-archive-keyring.gpg"> +/usr/share/keyrings/ubuntu-archive-removed-keys.gpg"> -- cgit v1.2.3 From 0005fa07886135d6adfec59f2d722df229b7af12 Mon Sep 17 00:00:00 2001 From: David Kalnischkies Date: Sat, 30 Nov 2013 22:07:38 +0100 Subject: use a substvar to set the archive-keyring in debian/control Adds a small helper to extract the small information bits we store in apt-vendor.ent and uses it in debian/rules to set apt:keyring as a substvar for debian/control populated with the &keyring-package; info --- vendor/debian/makefile | 2 +- vendor/getinfo | 36 ++++++++++++++++++++++++++++++++++++ vendor/ubuntu/makefile | 2 +- 3 files changed, 38 insertions(+), 2 deletions(-) create mode 100755 vendor/getinfo (limited to 'vendor') diff --git a/vendor/debian/makefile b/vendor/debian/makefile index 41202c6a0..dd35a70f0 100644 --- a/vendor/debian/makefile +++ b/vendor/debian/makefile @@ -8,4 +8,4 @@ include ../../buildlib/defaults.mak doc: sources.list sources.list: sources.list.in ../../doc/apt-verbatim.ent - sed -e 's#&stable-codename;#$(shell grep --max-count=1 '^ $@ + sed -e 's#&stable-codename;#$(shell ../getinfo debian-stable-codename)#g' $< > $@ diff --git a/vendor/getinfo b/vendor/getinfo new file mode 100755 index 000000000..df5a44e5c --- /dev/null +++ b/vendor/getinfo @@ -0,0 +1,36 @@ +#!/bin/sh +# small helper to extract information form *.ent files + +BASEDIR="$(readlink -f "$(dirname $0)")" +INFO="$(readlink -f "${BASEDIR}/current/apt-vendor.ent")" + +if [ -z "$INFO" ] || [ ! -e "$INFO" ]; then + echo >&2 'The current vendor is not valid or not chosen by the buildsystem yet.' + exit 1 +fi + +getrawfield() { + grep --max-count=1 "^}" + echo "${FIELD%<*}" +} + +case "$1" in +debian-stable-codename) + getrawfield 'stable-codename' "${BASEDIR}/../doc/apt-verbatim.ent" + ;; +ubuntu-codename) + getrawfield 'stable-codename' "${BASEDIR}/../doc/apt-verbatim.ent" + ;; +keyring-package) + getfield "$1" + ;; +*) + echo >&2 "Unknown data field $1 requested" + exit 2 + ;; +esac diff --git a/vendor/ubuntu/makefile b/vendor/ubuntu/makefile index 388a529a9..ea67e6e63 100644 --- a/vendor/ubuntu/makefile +++ b/vendor/ubuntu/makefile @@ -8,4 +8,4 @@ include ../../buildlib/defaults.mak doc: sources.list sources.list: sources.list.in ../../doc/apt-verbatim.ent - sed -e 's#&ubuntu-codename;#$(shell grep --max-count=1 '^ $@ + sed -e 's#&ubuntu-codename;#$(shell ../getinfo ubuntu-codename)#g' $< > $@ -- cgit v1.2.3 From 5b2c6ddcc0e45c92c544032ad2bb91bdf7222d7c Mon Sep 17 00:00:00 2001 From: David Kalnischkies Date: Sat, 30 Nov 2013 23:11:43 +0100 Subject: generate apt-key script with vendor info about keys MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The apt-key script uses quiet a few keyring files for operation which are specific to the distribution it is build on and is hence one of the most patched parts – even if it is not that often used anymore now that a fragment directory for trusted.gpg exists. --- vendor/debian/apt-vendor.ent | 2 ++ vendor/getinfo | 2 +- vendor/ubuntu/apt-vendor.ent | 2 ++ 3 files changed, 5 insertions(+), 1 deletion(-) (limited to 'vendor') diff --git a/vendor/debian/apt-vendor.ent b/vendor/debian/apt-vendor.ent index 56775bbaa..6cda5995c 100644 --- a/vendor/debian/apt-vendor.ent +++ b/vendor/debian/apt-vendor.ent @@ -3,3 +3,5 @@ debian-archive-keyring"> /usr/share/keyrings/debian-archive-keyring.gpg"> /usr/share/keyrings/debian-archive-removed-keys.gpg"> + + diff --git a/vendor/getinfo b/vendor/getinfo index df5a44e5c..ac816e10e 100755 --- a/vendor/getinfo +++ b/vendor/getinfo @@ -26,7 +26,7 @@ debian-stable-codename) ubuntu-codename) getrawfield 'stable-codename' "${BASEDIR}/../doc/apt-verbatim.ent" ;; -keyring-package) +keyring-package|keyring-filename|keyring-master-filename|keyring-removed-filename|keyring-uri) getfield "$1" ;; *) diff --git a/vendor/ubuntu/apt-vendor.ent b/vendor/ubuntu/apt-vendor.ent index fd5e5a7cf..caa532699 100644 --- a/vendor/ubuntu/apt-vendor.ent +++ b/vendor/ubuntu/apt-vendor.ent @@ -3,3 +3,5 @@ ubuntu-keyring"> /usr/share/keyrings/ubuntu-archive-keyring.gpg"> /usr/share/keyrings/ubuntu-archive-removed-keys.gpg"> + + -- cgit v1.2.3