ソースを参照

vendor/getinfo: Provide command to determine vendor to use

Introduce the 'current' command to eventually replace the current
symbolic link. The current command does roughly the same as the
makefile, the code has just been cleaned up a bit to work better
as a shell function.

Gbp-Dch: ignore
Julian Andres Klode 10 年 前
コミット
9ee5154685
共有1 個のファイルを変更した39 個の追加1 個の削除を含む
  1. 39 1
      vendor/getinfo

+ 39 - 1
vendor/getinfo

@@ -2,7 +2,41 @@
 # 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
+}
+
+INFO="$(readlink -f "${BASEDIR}/$(getcurrent)/apt-vendor.ent")"
 VERBATIM="${BASEDIR}/../doc/apt-verbatim.ent"
 
 if [ -z "$INFO" ] || [ ! -e "$INFO" ]; then
@@ -33,6 +67,10 @@ vendor)
 verbatim)
 	getfield "$2" "$VERBATIM"
 	;;
+
+current)
+	getcurrent
+	;;
 *)
 	echo >&2 "Unknown data field $1 requested"
 	exit 2