]>
Commit | Line | Data |
---|---|---|
1 | #!/bin/sh | |
2 | # small helper to extract information form *.ent files | |
3 | ||
4 | BASEDIR="$(readlink -f "$(dirname $0)")" | |
5 | ||
6 | getcurrent() { | |
7 | # search for an exact match to use the correct sources.list example | |
8 | cd $BASEDIR | |
9 | DISTROS="$(find . -mindepth 1 -maxdepth 1 -type d | cut -d'/' -f 2)" | |
10 | for DISTRO in $DISTROS; do | |
11 | if dpkg-vendor --is $DISTRO; then | |
12 | echo $DISTRO | |
13 | return 0 | |
14 | fi | |
15 | done | |
16 | ||
17 | # if we haven't found a specific, look for a deriving | |
18 | # we do ubuntu and debian last as those are the biggest families | |
19 | # and would therefore potentially 'shadow' smaller families | |
20 | # (especially debian as it sorts quiet early) | |
21 | for DISTRO in $DISTROS; do | |
22 | if [ "$DISTRO" = 'debian' -o "$DISTRO" = 'ubuntu' ]; then continue; fi | |
23 | if dpkg-vendor --derives-from $DISTRO; then | |
24 | echo $DISTRO | |
25 | return 0 | |
26 | fi | |
27 | done | |
28 | ||
29 | # Do the ubuntu/debian dance we talked about | |
30 | if dpkg-vendor --derives-from ubuntu; then | |
31 | echo $DISTRO | |
32 | return 0 | |
33 | fi | |
34 | ||
35 | echo debian | |
36 | return 0 | |
37 | } | |
38 | ||
39 | if [ "$1" = "--vendor" ]; then | |
40 | CURRENT_VENDOR="$2" | |
41 | shift 2 | |
42 | else | |
43 | CURRENT_VENDOR=$(getcurrent) | |
44 | fi | |
45 | INFO="$(readlink -f "${BASEDIR}/$CURRENT_VENDOR/apt-vendor.ent")" | |
46 | VERBATIM="${BASEDIR}/../doc/apt-verbatim.ent" | |
47 | ||
48 | if [ -z "$INFO" ] || [ ! -e "$INFO" ]; then | |
49 | echo >&2 'The current vendor is not valid or not chosen by the buildsystem yet.' | |
50 | exit 1 | |
51 | fi | |
52 | ||
53 | getrawfield() { | |
54 | awk "/<!ENTITY $1/ {f=NR} f && NR-1==f { print; exit 0 }" RS='"' "${2:-$INFO}" | |
55 | } | |
56 | ||
57 | getfield() { | |
58 | local FIELD="$(getrawfield "$@")" | |
59 | FIELD="${FIELD#*>}" | |
60 | echo "${FIELD%<*}" | |
61 | } | |
62 | ||
63 | case "$1" in | |
64 | debian-stable-codename|debian-oldstable-codename|debian-testing-codename|ubuntu-codename) | |
65 | getrawfield "$1" "$VERBATIM" | |
66 | ;; | |
67 | sourceslist-list-format|keyring-package|keyring-filename|keyring-master-filename|keyring-removed-filename|keyring-uri|current-codename) | |
68 | exec $0 --vendor $CURRENT_VENDOR 'vendor' "$@" | |
69 | ;; | |
70 | vendor) | |
71 | getfield "$2" | |
72 | ;; | |
73 | verbatim) | |
74 | getfield "$2" "$VERBATIM" | |
75 | ;; | |
76 | current) | |
77 | echo $CURRENT_VENDOR | |
78 | ;; | |
79 | *) | |
80 | echo >&2 "Unknown data field $1 requested" | |
81 | exit 2 | |
82 | ;; | |
83 | esac |