Kaynağa Gözat

autogenerate makefile for vendor system

It can be useful to have a whole makefile available for vendor setup,
but by providing a basic one we can deal with the simple cases more
easily (and changes to the system are presumably easier).
David Kalnischkies 12 yıl önce
ebeveyn
işleme
fa19cc9573

+ 2 - 2
.gitignore

@@ -39,5 +39,5 @@
 /debian/libapt-inst*.install
 /debian/libapt-pkg-dev.install
 /vendor/current
-/vendor/debian/sources.list
-/vendor/ubuntu/sources.list
+/vendor/*/sources.list
+/vendor/*/makefile.auto

+ 0 - 1
doc/apt-verbatim.ent

@@ -226,7 +226,6 @@
 <!ENTITY stable-codename "wheezy">
 <!ENTITY testing-codename "jessie">
 <!ENTITY stable-version "7">
-<!ENTITY tanglu-codename "bartholomea">
 <!ENTITY ubuntu-codename "trusty">
 
 <!-- good and bad just refers to matching and not matching a pattern…

+ 0 - 17
vendor/debian/makefile

@@ -1,17 +0,0 @@
-# -*- make -*-
-BASE=../..
-SUBDIR=vendor/debian
-
-# Bring in the default rules
-include ../../buildlib/defaults.mak
-
-doc binary manpages: sources.list
-
-sources.list: sources.list.in ../../doc/apt-verbatim.ent
-	sed -e 's#&stable-codename;#$(shell ../getinfo debian-stable-codename)#g' $< > $@
-
-clean: clean/sources.list
-
-clean/sources.list:
-	rm -f sources.list
-

+ 4 - 4
vendor/debian/sources.list.in

@@ -1,8 +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
+deb http://ftp.us.debian.org/debian &debian-stable-codename; main contrib non-free
+deb http://security.debian.org &debian-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
+#deb-src http://ftp.us.debian.org/debian &debian-stable-codename; main contrib non-free
+#deb-src http://security.debian.org &debian-stable-codename;/updates main contrib non-free

+ 12 - 8
vendor/getinfo

@@ -3,6 +3,7 @@
 
 BASEDIR="$(readlink -f "$(dirname $0)")"
 INFO="$(readlink -f "${BASEDIR}/current/apt-vendor.ent")"
+VERBATIM="${BASEDIR}/../doc/apt-verbatim.ent"
 
 if [ -z "$INFO" ] || [ ! -e "$INFO" ]; then
 	echo >&2 'The current vendor is not valid or not chosen by the buildsystem yet.'
@@ -20,17 +21,20 @@ getfield() {
 }
 
 case "$1" in
-debian-stable-codename)
-	getrawfield 'stable-codename' "${BASEDIR}/../doc/apt-verbatim.ent"
-	;;
-tanglu-codename)
-	getrawfield 'tanglu-codename' "${BASEDIR}/../doc/apt-verbatim.ent"
+debian-stable-codename|debian-oldstable-codename|debian-testing-codename)
+	getrawfield "${1#*-}" "$VERBATIM"
 	;;
 ubuntu-codename)
-	getrawfield 'ubuntu-codename' "${BASEDIR}/../doc/apt-verbatim.ent"
+	getrawfield "$1" "$VERBATIM"
+	;;
+keyring-package|keyring-filename|keyring-master-filename|keyring-removed-filename|keyring-uri|current-codename)
+	exec $0 'vendor' "$@"
+	;;
+vendor)
+	getfield "$2"
 	;;
-keyring-package|keyring-filename|keyring-master-filename|keyring-removed-filename|keyring-uri|current-distro-codename)
-	getfield "$1"
+verbatim)
+	getfield "$2" "$VERBATIM"
 	;;
 *)
 	echo >&2 "Unknown data field $1 requested"

+ 24 - 14
vendor/makefile

@@ -14,11 +14,9 @@ veryclean: veryclean/subdirs
 dirs: dirs/subdirs
 manpages: manpages/subdirs
 
-all/subdirs binary/subdirs doc/subdirs dirs/subdirs manpages/subdirs:
-	$(MAKE) -C current $(patsubst %/subdirs,%,$@)
-
-clean/subdirs veryclean/subdirs:
-	test ! -e current || $(MAKE) -C current $(patsubst %/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 $@
@@ -29,17 +27,29 @@ current:
 			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 $@ ) || \
-		(dpkg-vendor --derives-from tanglu && cp ln -s tanglu $@ ) || \
-		ln -s debian $@
+	# 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
-.NOPARALLEL:
 
 clean: clean/current
 
-clean/current:
-	test ! -e current || $(MAKE) -C current clean
-	rm -f current
+clean/current: clean/subdirs
+	rm -f current/makefile.auto current

+ 0 - 16
vendor/raspbian/makefile

@@ -1,16 +0,0 @@
-# -*- make -*-
-BASE=../..
-SUBDIR=vendor/raspbian
-
-# Bring in the default rules
-include ../../buildlib/defaults.mak
-
-doc binary manpages: sources.list
-
-sources.list: sources.list.in ../../doc/apt-verbatim.ent
-	sed -e 's#&stable-codename;#$(shell ../getinfo debian-stable-codename)#g' $< > $@
-
-clean: clean/sources.list
-
-clean/sources.list:
-	rm -f sources.list

+ 1 - 1
vendor/steamos/apt-vendor.ent

@@ -3,6 +3,6 @@
 <!ENTITY keyring-package "<package>valve-archive-keyring</package>">
 <!ENTITY keyring-filename "<filename>/usr/share/keyrings/valve-archive-keyring.gpg</filename>">
 <!ENTITY keyring-removed-filename "<filename>/usr/share/keyrings/valve-archive-removed-keys.gpg</filename>">
-<!ENTITY current-distro-codename "alchemist">
 <!ENTITY keyring-master-filename "">
 <!ENTITY keyring-uri "">
+<!ENTITY current-codename "alchemist">

+ 0 - 17
vendor/steamos/makefile

@@ -1,17 +0,0 @@
-# -*- make -*-
-BASE=../..
-SUBDIR=vendor/steamos
-
-# Bring in the default rules
-include ../../buildlib/defaults.mak
-
-doc binary manpages: sources.list
-
-sources.list: sources.list.in ../../doc/apt-verbatim.ent
-	sed -e 's#&stable-codename;#$(shell ../getinfo debian-stable-codename)#g' $< | sed -e 's#&steamos-codename;#$(shell ../getinfo current-distro-codename)#g' > $@
-
-clean: clean/sources.list
-
-clean/sources.list:
-	rm -f sources.list
-

+ 2 - 2
vendor/steamos/sources.list.in

@@ -1,5 +1,5 @@
 # See sources.list(5) manpage for more information
 # Remember that CD-ROMs, DVDs and such are managed through the apt-cdrom tool.
 
-deb http://repo.steampowered.com/steamos &steamos-codename; main contrib non-free
-deb-src http://repo.steampowered.com/steamos &steamos-codename; main contrib non-free
+deb http://repo.steampowered.com/steamos &current-codename; main contrib non-free
+deb-src http://repo.steampowered.com/steamos &current-codename; main contrib non-free

+ 1 - 0
vendor/tanglu/apt-vendor.ent

@@ -5,3 +5,4 @@
 <!ENTITY keyring-removed-filename "<filename>/usr/share/keyrings/tanglu-archive-removed-keys.gpg</filename>">
 <!ENTITY keyring-master-filename "">
 <!ENTITY keyring-uri "">
+<!ENTITY current-codename "bartholomea">

+ 0 - 16
vendor/tanglu/makefile

@@ -1,16 +0,0 @@
-# -*- make -*-
-BASE=../..
-SUBDIR=vendor/tanglu
-
-# Bring in the default rules
-include ../../buildlib/defaults.mak
-
-doc binary manpages: sources.list
-
-sources.list: sources.list.in ../../doc/apt-verbatim.ent
-	sed -e 's#&tanglu-codename;#$(shell ../getinfo tanglu-codename)#g' $< > $@
-
-clean: clean/sources.list
-
-clean/sources.list:
-	rm -f sources.list

+ 4 - 4
vendor/tanglu/sources.list.in

@@ -1,7 +1,7 @@
 # See sources.list(5) manpage for more information
 
-deb http://archive.tanglu.org/tanglu &tanglu-codename; main contrib non-free
-#deb-src http://archive.tanglu.org/tanglu &tanglu-codename; main contrib non-free
+deb http://archive.tanglu.org/tanglu &current-codename; main contrib non-free
+#deb-src http://archive.tanglu.org/tanglu &current-codename; main contrib non-free
 
-#deb http://archive.tanglu.org/tanglu &tanglu-codename;-updates main contrib non-free
-#deb-src http://archive.tanglu.org/tanglu &tanglu-codename;-updates main contrib non-free
+#deb http://archive.tanglu.org/tanglu &current-codename;-updates main contrib non-free
+#deb-src http://archive.tanglu.org/tanglu &current-codename;-updates main contrib non-free

+ 0 - 16
vendor/ubuntu/makefile

@@ -1,16 +0,0 @@
-# -*- make -*-
-BASE=../..
-SUBDIR=vendor/ubuntu
-
-# Bring in the default rules
-include ../../buildlib/defaults.mak
-
-doc binary manpages: sources.list
-
-sources.list: sources.list.in ../../doc/apt-verbatim.ent
-	sed -e 's#&ubuntu-codename;#$(shell ../getinfo ubuntu-codename)#g' $< > $@
-
-clean: clean/sources.list
-
-clean/sources.list:
-	rm -f sources.list

+ 21 - 0
vendor/vendor.makefile

@@ -0,0 +1,21 @@
+# -*- 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
+	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
+
+clean/sources.list:
+	rm -f sources.list