[darwinbuild-changes] [859] branches/PR-8279204

source_changes at macosforge.org source_changes at macosforge.org
Fri Aug 6 14:39:09 PDT 2010


Revision: 859
          http://trac.macosforge.org/projects/darwinbuild/changeset/859
Author:   wsiegrist at apple.com
Date:     2010-08-06 14:39:09 -0700 (Fri, 06 Aug 2010)
Log Message:
-----------
Add digest helper to replace openssl dgst -sha1

Modified Paths:
--------------
    branches/PR-8279204/darwinbuild/darwinbuild.common
    branches/PR-8279204/darwinbuild/darwinbuild.in
    branches/PR-8279204/darwinbuild.xcodeproj/project.pbxproj

Added Paths:
-----------
    branches/PR-8279204/darwinbuild/digest.c

Modified: branches/PR-8279204/darwinbuild/darwinbuild.common
===================================================================
--- branches/PR-8279204/darwinbuild/darwinbuild.common	2010-08-06 21:36:40 UTC (rev 858)
+++ branches/PR-8279204/darwinbuild/darwinbuild.common	2010-08-06 21:39:09 UTC (rev 859)
@@ -1,6 +1,6 @@
 #!/bin/sh
 #
-# Copyright (c) 2005, Apple Computer, Inc. All rights reserved.
+# Copyright (c) 2005-2010, Apple Computer, Inc. All rights reserved.
 # 
 # @APPLE_BSD_LICENSE_HEADER_START@
 #
@@ -533,10 +533,10 @@
 	    echo "ERROR: Could not access $HashSource" 1>&2
 	    exit 1
 	fi
-	Hash=$(openssl dgst -sha1 < "$HashSource")
+	Hash=$($DIGEST < "$HashSource")
 	echo "# Hash of $HashSource" >> "$TmpFile"
     else
-	Hash=$(openssl dgst -sha1 < "$TmpFile")
+	Hash=$($DIGEST < "$TmpFile")
     fi
 
     cp "$TmpFile" "$receipts/$Hash"

Modified: branches/PR-8279204/darwinbuild/darwinbuild.in
===================================================================
--- branches/PR-8279204/darwinbuild/darwinbuild.in	2010-08-06 21:36:40 UTC (rev 858)
+++ branches/PR-8279204/darwinbuild/darwinbuild.in	2010-08-06 21:39:09 UTC (rev 859)
@@ -1,6 +1,6 @@
 #!/bin/sh
 #
-# Copyright (c) 2004-2005, Apple Computer, Inc. All rights reserved.
+# Copyright (c) 2004-2010, Apple Computer, Inc. All rights reserved.
 # 
 # Redistribution and use in source and binary forms, with or without
 # modification, are permitted provided that the following conditions
@@ -81,6 +81,7 @@
 NFSDIR=.build/buildroot.nfs
 DARWINXREF=$PREFIX/bin/darwinxref
 DATADIR=$PREFIX/share/darwinbuild
+DIGEST=$DATADIR/digest
 COMMONFILE=$DATADIR/darwinbuild.common
 DARWINTRACE=$DATADIR/darwintrace.dylib
 DITTO=$DATADIR/ditto
@@ -993,7 +994,7 @@
 	    	### Output the manifest
 		MANIFEST="/tmp/$projnam.$$"
 		"$DARWINXREF" register "$projnam" "$REAL_DSTROOT" | tee "$MANIFEST"
-		SHA1=$(cat "$MANIFEST" | openssl dgst -sha1)
+		SHA1=$(cat "$MANIFEST" | $DIGEST)
 		mkdir -p "$REAL_DSTROOT/usr/local/darwinbuild/receipts"
 		cp "$MANIFEST" "$REAL_DSTROOT/usr/local/darwinbuild/receipts/$SHA1"
 		ln -s "$SHA1" "$REAL_DSTROOT/usr/local/darwinbuild/receipts/$projnam.hdrs"
@@ -1007,7 +1008,7 @@
 		### in the receipts directory after registration.
 		MANIFEST="/tmp/$projnam.$$"
 		"$DARWINXREF" register "$projnam" "$REAL_DSTROOT" | tee "$MANIFEST"
-		SHA1=$(cat "$MANIFEST" | openssl dgst -sha1)
+		SHA1=$(cat "$MANIFEST" | $DIGEST)
 		mkdir -p "$REAL_DSTROOT/usr/local/darwinbuild/receipts"
 		cp "$MANIFEST" "$REAL_DSTROOT/usr/local/darwinbuild/receipts/$SHA1"
 		ln -s "$SHA1" "$REAL_DSTROOT/usr/local/darwinbuild/receipts/$projnam"

Added: branches/PR-8279204/darwinbuild/digest.c
===================================================================
--- branches/PR-8279204/darwinbuild/digest.c	                        (rev 0)
+++ branches/PR-8279204/darwinbuild/digest.c	2010-08-06 21:39:09 UTC (rev 859)
@@ -0,0 +1,118 @@
+/*
+ * Copyright (c) 2010 Apple Computer, Inc. All rights reserved.
+ *
+ * @APPLE_BSD_LICENSE_HEADER_START@
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1.  Redistributions of source code must retain the above copyright
+ *     notice, this list of conditions and the following disclaimer.
+ * 2.  Redistributions in binary form must reproduce the above copyright
+ *     notice, this list of conditions and the following disclaimer in the
+ *     documentation and/or other materials provided with the distribution.
+ * 3.  Neither the name of Apple Computer, Inc. ("Apple") nor the names of
+ *     its contributors may be used to endorse or promote products derived
+ *     from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * @APPLE_BSD_LICENSE_HEADER_END@
+ */
+
+#include <sys/types.h>
+#include <errno.h>
+#include <unistd.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <CommonCrypto/CommonDigest.h>
+
+
+void print_usage() {
+	fprintf(stdout, "digest [-1]                               \n");
+	fprintf(stdout, "   Print digest hash of stdin to stdout.  \n");
+	fprintf(stdout, "                                          \n");
+	fprintf(stdout, "     -1       Use SHA1 hash (default)     \n");
+	fprintf(stdout, "                                          \n");
+}
+
+char* format_digest(const unsigned char* m) {
+	char* result = NULL;
+	// SHA-1
+	asprintf(&result,
+			 "%02x%02x%02x%02x"
+			 "%02x%02x%02x%02x"
+			 "%02x%02x%02x%02x"
+			 "%02x%02x%02x%02x"
+			 "%02x%02x%02x%02x",
+			 m[0], m[1], m[2], m[3],
+			 m[4], m[5], m[6], m[7],
+			 m[8], m[9], m[10], m[11],
+			 m[12], m[13], m[14], m[15],
+			 m[16], m[17], m[18], m[19]
+			 );
+	return result;
+}
+
+char* calculate_digest(int fd) {
+	unsigned char md[20];
+	CC_SHA1_CTX c;
+	CC_SHA1_Init(&c);
+	
+	memset(md, 0, 20);
+	
+	ssize_t len;
+	const unsigned int blocklen = 8192;
+	unsigned char* block = (unsigned char*)malloc(blocklen);
+	if (!block) {
+		errno = ENOMEM;
+		return NULL;
+	}
+	while(1) {
+		len = read(fd, block, blocklen);
+		if (len == 0) { close(fd); break; }
+		if ((len < 0) && (errno == EINTR)) continue;
+		if (len < 0) { close(fd); return NULL; }
+		CC_SHA1_Update(&c, block, (size_t)len);
+	}
+	
+	CC_SHA1_Final(md, &c);
+	free(block);
+	return format_digest(md);
+}
+
+
+int main(int argc, char* argv[]) {
+	
+	int digest = 1; // default to SHA1
+	
+	int ch;
+	while ((ch = getopt(argc, argv, "1")) != -1) {
+		switch (ch) {
+			case '1':
+				digest = 1;
+				break;
+			case '?':
+			default:
+				print_usage();
+				exit(1);
+		}
+	}
+	argc -= optind;
+	argv += optind;
+	
+	fprintf(stdout, "%s\n", calculate_digest(fileno(stdin)));
+
+	return 0;
+}

Modified: branches/PR-8279204/darwinbuild.xcodeproj/project.pbxproj
===================================================================
--- branches/PR-8279204/darwinbuild.xcodeproj/project.pbxproj	2010-08-06 21:36:40 UTC (rev 858)
+++ branches/PR-8279204/darwinbuild.xcodeproj/project.pbxproj	2010-08-06 21:39:09 UTC (rev 859)
@@ -25,6 +25,7 @@
 				7227AD1B109A053900BE33D7 /* CopyFiles */,
 			);
 			dependencies = (
+				720BE2F6120C90E500B3C4A5 /* PBXTargetDependency */,
 				7227AC421098DC6A00BE33D7 /* PBXTargetDependency */,
 				7227AC401098DC6A00BE33D7 /* PBXTargetDependency */,
 				7227AC3E1098DC6A00BE33D7 /* PBXTargetDependency */,
@@ -101,6 +102,7 @@
 
 /* Begin PBXBuildFile section */
 		61E0A6BD10A8DCC700DA7EBC /* exportIndex.c in Sources */ = {isa = PBXBuildFile; fileRef = 72C86BFF10965EEA00C66E90 /* exportIndex.c */; };
+		720BE2F4120C90C500B3C4A5 /* digest.c in Sources */ = {isa = PBXBuildFile; fileRef = 720BE2E9120C909E00B3C4A5 /* digest.c */; };
 		7227AB41109897D500BE33D7 /* binary_sites.tcl in CopyFiles */ = {isa = PBXBuildFile; fileRef = 72C86BF310965EEA00C66E90 /* binary_sites.tcl */; };
 		7227AB42109897D500BE33D7 /* branch.tcl in CopyFiles */ = {isa = PBXBuildFile; fileRef = 72C86BF410965EEA00C66E90 /* branch.tcl */; };
 		7227AB43109897D500BE33D7 /* currentBuild.tcl in CopyFiles */ = {isa = PBXBuildFile; fileRef = 72C86BF610965EEA00C66E90 /* currentBuild.tcl */; };
@@ -171,6 +173,13 @@
 /* End PBXBuildFile section */
 
 /* Begin PBXContainerItemProxy section */
+		720BE2F5120C90E500B3C4A5 /* PBXContainerItemProxy */ = {
+			isa = PBXContainerItemProxy;
+			containerPortal = 726DD14910965C5700D5AEAB /* Project object */;
+			proxyType = 1;
+			remoteGlobalIDString = 720BE2EA120C90A700B3C4A5;
+			remoteInfo = digest;
+		};
 		7227AB0F1097BBA900BE33D7 /* PBXContainerItemProxy */ = {
 			isa = PBXContainerItemProxy;
 			containerPortal = 726DD14910965C5700D5AEAB /* Project object */;
@@ -658,6 +667,8 @@
 /* End PBXCopyFilesBuildPhase section */
 
 /* Begin PBXFileReference section */
+		720BE2E9120C909E00B3C4A5 /* digest.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = digest.c; path = darwinbuild/digest.c; sourceTree = "<group>"; };
+		720BE2F2120C90A700B3C4A5 /* digest */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = digest; sourceTree = BUILT_PRODUCTS_DIR; };
 		7227AB6D10989A9900BE33D7 /* manifest */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = manifest; sourceTree = BUILT_PRODUCTS_DIR; };
 		7227AB871098A7BF00BE33D7 /* buildlist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; name = buildlist; path = darwinbuild/buildlist; sourceTree = "<group>"; };
 		7227AB881098A7BF00BE33D7 /* buildorder */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.perl; name = buildorder; path = darwinbuild/buildorder; sourceTree = "<group>"; };
@@ -784,6 +795,13 @@
 /* End PBXFileReference section */
 
 /* Begin PBXFrameworksBuildPhase section */
+		720BE2ED120C90A700B3C4A5 /* Frameworks */ = {
+			isa = PBXFrameworksBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
 		7227AB6B10989A9900BE33D7 /* Frameworks */ = {
 			isa = PBXFrameworksBuildPhase;
 			buildActionMask = 2147483647;
@@ -1007,6 +1025,7 @@
 		72C86BD510965DC900C66E90 /* darwinbuild */ = {
 			isa = PBXGroup;
 			children = (
+				720BE2E9120C909E00B3C4A5 /* digest.c */,
 				7227AB871098A7BF00BE33D7 /* buildlist */,
 				7227AB881098A7BF00BE33D7 /* buildorder */,
 				7227AB891098A7BF00BE33D7 /* ditto */,
@@ -1162,6 +1181,7 @@
 				7227AC251098DB9200BE33D7 /* installXcode */,
 				7227AC2E1098DBDF00BE33D7 /* installXcode32 */,
 				72D05CB711D267C400B33EDD /* query.so */,
+				720BE2F2120C90A700B3C4A5 /* digest */,
 			);
 			name = Products;
 			sourceTree = "<group>";
@@ -1188,6 +1208,22 @@
 /* End PBXHeadersBuildPhase section */
 
 /* Begin PBXNativeTarget section */
+		720BE2EA120C90A700B3C4A5 /* digest */ = {
+			isa = PBXNativeTarget;
+			buildConfigurationList = 720BE2EE120C90A700B3C4A5 /* Build configuration list for PBXNativeTarget "digest" */;
+			buildPhases = (
+				720BE2EB120C90A700B3C4A5 /* Sources */,
+				720BE2ED120C90A700B3C4A5 /* Frameworks */,
+			);
+			buildRules = (
+			);
+			dependencies = (
+			);
+			name = digest;
+			productName = digest;
+			productReference = 720BE2F2120C90A700B3C4A5 /* digest */;
+			productType = "com.apple.product-type.tool";
+		};
 		7227AB6C10989A9900BE33D7 /* manifest */ = {
 			isa = PBXNativeTarget;
 			buildConfigurationList = 7227AB7310989ACD00BE33D7 /* Build configuration list for PBXNativeTarget "manifest" */;
@@ -1816,6 +1852,7 @@
 				7227AC1E1098DB9200BE33D7 /* installXcode */,
 				7227AC271098DBDF00BE33D7 /* installXcode32 */,
 				7227AC7E1098EF6400BE33D7 /* libredo_prebinding.a */,
+				720BE2EA120C90A700B3C4A5 /* digest */,
 			);
 		};
 /* End PBXProject section */
@@ -2017,6 +2054,14 @@
 /* End PBXShellScriptBuildPhase section */
 
 /* Begin PBXSourcesBuildPhase section */
+		720BE2EB120C90A700B3C4A5 /* Sources */ = {
+			isa = PBXSourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				720BE2F4120C90C500B3C4A5 /* digest.c in Sources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
 		7227AB6A10989A9900BE33D7 /* Sources */ = {
 			isa = PBXSourcesBuildPhase;
 			buildActionMask = 2147483647;
@@ -2258,6 +2303,11 @@
 /* End PBXSourcesBuildPhase section */
 
 /* Begin PBXTargetDependency section */
+		720BE2F6120C90E500B3C4A5 /* PBXTargetDependency */ = {
+			isa = PBXTargetDependency;
+			target = 720BE2EA120C90A700B3C4A5 /* digest */;
+			targetProxy = 720BE2F5120C90E500B3C4A5 /* PBXContainerItemProxy */;
+		};
 		7227AB101097BBA900BE33D7 /* PBXTargetDependency */ = {
 			isa = PBXTargetDependency;
 			target = 725740981097B051008AD4D7 /* darwinxref_plugins */;
@@ -2571,6 +2621,33 @@
 /* End PBXTargetDependency section */
 
 /* Begin XCBuildConfiguration section */
+		720BE2EF120C90A700B3C4A5 /* Debug */ = {
+			isa = XCBuildConfiguration;
+			baseConfigurationReference = 7227AB9C1098AAE100BE33D7 /* prefix.xcconfig */;
+			buildSettings = {
+				INSTALL_PATH = "$(DATDIR)/darwinbuild";
+				PRODUCT_NAME = digest;
+			};
+			name = Debug;
+		};
+		720BE2F0120C90A700B3C4A5 /* Public */ = {
+			isa = XCBuildConfiguration;
+			baseConfigurationReference = 7227AB9C1098AAE100BE33D7 /* prefix.xcconfig */;
+			buildSettings = {
+				INSTALL_PATH = "$(DATDIR)/darwinbuild";
+				PRODUCT_NAME = digest;
+			};
+			name = Public;
+		};
+		720BE2F1120C90A700B3C4A5 /* Release */ = {
+			isa = XCBuildConfiguration;
+			baseConfigurationReference = 7227AB9C1098AAE100BE33D7 /* prefix.xcconfig */;
+			buildSettings = {
+				INSTALL_PATH = "$(DATDIR)/darwinbuild";
+				PRODUCT_NAME = digest;
+			};
+			name = Release;
+		};
 		7227AB3E1098977D00BE33D7 /* Debug */ = {
 			isa = XCBuildConfiguration;
 			baseConfigurationReference = 7227AB9C1098AAE100BE33D7 /* prefix.xcconfig */;
@@ -3599,6 +3676,16 @@
 /* End XCBuildConfiguration section */
 
 /* Begin XCConfigurationList section */
+		720BE2EE120C90A700B3C4A5 /* Build configuration list for PBXNativeTarget "digest" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				720BE2EF120C90A700B3C4A5 /* Debug */,
+				720BE2F0120C90A700B3C4A5 /* Public */,
+				720BE2F1120C90A700B3C4A5 /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Public;
+		};
 		7227AB4A109897E500BE33D7 /* Build configuration list for PBXAggregateTarget "tcl_plugins" */ = {
 			isa = XCConfigurationList;
 			buildConfigurations = (
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/darwinbuild-changes/attachments/20100806/74440fb4/attachment-0001.html>


More information about the darwinbuild-changes mailing list