open-src/common/Makefile.inc
changeset 911 a3e7e197651c
parent 910 0a08683bf637
child 919 425233ae7236
--- a/open-src/common/Makefile.inc	Mon Feb 22 16:19:24 2010 -0800
+++ b/open-src/common/Makefile.inc	Wed Feb 24 21:41:03 2010 -0800
@@ -92,6 +92,7 @@
 # Set default rules if not set in module/modtype Makefile
 SOURCE_TARGETS_DEFAULT		= $(SOURCE_TARGETS_SET:yes=$(POUND_SIGN))
 $(SOURCE_TARGETS_DEFAULT)	SOURCE_TARGETS=default_source \
+					check-checksums \
 					$(MODTYPE_ADD_SOURCE_TARGETS) \
 					$(MODULE_ADD_SOURCE_TARGETS)
 
@@ -209,13 +210,22 @@
 
 SOURCE_TARBALL=$(TARBALLDIR)/$(SOURCE_TARBALL_NAME)
 
+# Allow downloading from local archive/mirror
+TARBALL_ARCHIVE_sun.com		= http://xserver.sfbay.sun.com/tarballs
+TARBALL_ARCHIVE_DEFAULT		= $(TARBALL_ARCHIVE_SET:yes=$(POUND_SIGN))
+$(TARBALL_ARCHIVE_DEFAULT)	ARCHIVE_DOMAIN = domainname | awk -F. '{printf "%s.%s", $$(NF-1), $$NF}'
+$(TARBALL_ARCHIVE_DEFAULT)	TARBALL_ARCHIVE = $(TARBALL_ARCHIVE_$(ARCHIVE_DOMAIN:sh))
+ARCHIVE_URL=$(TARBALL_ARCHIVE)/$(SOURCE_TARBALL_DIR)/$(SOURCE_TARBALL_NAME)
+
 GIT_CLONE_DIR=$(MODULE_NAME)-$(MODULE_VERSION)
 
 # Download if SOURCE_TARBALL_NAME is not set to NONE and the file either
 # doesn't exist or is empty
 # If MODULE_VERSION is git, checkout source from git repo instead of
 # a tarball
-download: $(TARBALLDIR)
+download: $(SOURCE_TARBALL)
+
+$(SOURCE_TARBALL): $(TARBALLDIR)
 	@case '$(MAKEFLAGS)' in *[ik]*) set +e;; esac; $(START_CMD_ECHO) ; \
 	if [[ "$(MODULE_VERSION)" = "git" ]] ; then \
 	    if [[ ! -d $(GIT_CLONE_DIR) ]] ; then \
@@ -226,12 +236,48 @@
 	    fi ; \
 	else \
 	    if [[ "$(SOURCE_TARBALL_NAME)" != "NONE" ]] ; then \
-		if [[ ! -s $(SOURCE_TARBALL) ]] ; then \
+		if [[ ! -z "$(TARBALL_ARCHIVE)" ]] ; then \
+		    $(WGET) -O $(SOURCE_TARBALL) $(ARCHIVE_URL) ; \
+		else \
 		    $(WGET) -O $(SOURCE_TARBALL) $(SOURCE_URL) ; \
 		fi ; \
 	    fi ; \
 	fi
 
+check-checksums: $(SOURCE_TARBALL)
+	@case '$(MAKEFLAGS)' in *[ik]*) set +e;; esac; \
+	if [[ "$(MODULE_VERSION)" != "git" && \
+	      "$(SOURCE_TARBALL_NAME)" != "NONE" ]] ; then \
+	    ACTUAL_MD5="$$(digest -a md5 $(SOURCE_TARBALL))" ; \
+	    if [[ "$${ACTUAL_MD5}" != "${TARBALL_MD5}" ]] ; then \
+		print -u2 "ERROR: MD5 sum mismatch on ${SOURCE_TARBALL}\n" \
+			"$${ACTUAL_MD5} != ${TARBALL_MD5}" ; \
+		exit 1; \
+	    fi ; \
+	    ACTUAL_SHA1="$$(digest -a sha1 ${SOURCE_TARBALL})" ; \
+	    if [[ "$${ACTUAL_SHA1}" != "${TARBALL_SHA1}" ]] ; then \
+		print -u2 "ERROR: SHA1 sum mismatch on ${SOURCE_TARBALL}\n" \
+			"$${ACTUAL_SHA1} != ${TARBALL_SHA1}" ; \
+		exit 1; \
+	    fi ; \
+	fi
+
+
+# Submit a tarball to the archive
+ARCHIVE_SUBMIT=/ws/x11/tarballs/bin/archive-tarballs
+
+archive-tarball:
+	@case '$(MAKEFLAGS)' in *[ik]*) set +e;; esac; \
+	if [[ "$(MODULE_VERSION)" != "git" && \
+	      "$(SOURCE_TARBALL_NAME)" != "NONE" ]] ; then \
+		$(ARCHIVE_SUBMIT) \
+		 --modtype='$(SOURCE_TARBALL_DIR)' \
+		 --tarball='$(SOURCE_TARBALL_NAME)' \
+		 --url='$(SOURCE_URL)' \
+		 --md5='$(TARBALL_MD5)' \
+		 --sha1='$(TARBALL_SHA1)' ; \
+	fi
+
 $(TARBALLDIR):
 	mkdir -p $(TARBALLDIR)
 
@@ -267,7 +313,9 @@
 	$(MODTYPE_SUNTOUCH_MAN_FLAGS) \
 	$(MODULE_SUNTOUCH_MAN_FLAGS)
 
-default_source: $(MODULE_SOURCE_DEPS) $(MODTYPE_SOURCE_DEPS)
+SOURCE_DEPS = $(SOURCE_TARBALL) $(MODTYPE_SOURCE_DEPS) $(MODULE_SOURCE_DEPS)
+
+default_source: $(SOURCE_DEPS)
 	mkdir -p $(BUILD_DIR)
 	@ if [[ "$(SOURCE_TARBALL_NAME)" != "NONE" ]] ; then \
 	  if [[ "$(MODULE_VERSION)" = "git" ]] ; then \