svn commit: r273128 - in projects/random_number_generator: cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/usdt lib/libc/arm/aeabi lib/libfetch release release/amd64 release/i386 release/tools ...

Mark Murray markm at FreeBSD.org
Wed Oct 15 12:38:01 UTC 2014


Author: markm
Date: Wed Oct 15 12:37:56 2014
New Revision: 273128
URL: https://svnweb.freebsd.org/changeset/base/273128

Log:
  MFC - tracking commit.
  Merging r273070 through r273127.

Added:
  projects/random_number_generator/lib/libc/arm/aeabi/aeabi_asm_double.S
     - copied unchanged from r273127, head/lib/libc/arm/aeabi/aeabi_asm_double.S
  projects/random_number_generator/lib/libc/arm/aeabi/aeabi_asm_float.S
     - copied unchanged from r273127, head/lib/libc/arm/aeabi/aeabi_asm_float.S
  projects/random_number_generator/release/amd64/mk-azure.sh
     - copied unchanged from r273127, head/release/amd64/mk-azure.sh
  projects/random_number_generator/release/i386/mk-azure.sh
     - copied unchanged from r273127, head/release/i386/mk-azure.sh
  projects/random_number_generator/release/tools/azure.conf
     - copied unchanged from r273127, head/release/tools/azure.conf
Deleted:
  projects/random_number_generator/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/usdt/main.c
Modified:
  projects/random_number_generator/lib/libc/arm/aeabi/Makefile.inc
  projects/random_number_generator/lib/libc/arm/aeabi/Symbol.map
  projects/random_number_generator/lib/libc/arm/aeabi/aeabi_double.c
  projects/random_number_generator/lib/libc/arm/aeabi/aeabi_float.c
  projects/random_number_generator/lib/libc/arm/aeabi/aeabi_vfp_double.S
  projects/random_number_generator/lib/libc/arm/aeabi/aeabi_vfp_float.S
  projects/random_number_generator/lib/libfetch/common.c
  projects/random_number_generator/lib/libfetch/fetch.3
  projects/random_number_generator/release/Makefile
  projects/random_number_generator/release/amd64/mk-vmimage.sh
  projects/random_number_generator/release/i386/mk-vmimage.sh
  projects/random_number_generator/share/examples/bhyve/vmrun.sh
  projects/random_number_generator/share/man/man4/gif.4
  projects/random_number_generator/share/man/man4/tcp.4
  projects/random_number_generator/share/misc/scsi_modes
  projects/random_number_generator/sys/amd64/vmm/vmm_instruction_emul.c
  projects/random_number_generator/sys/arm/conf/PANDABOARD
  projects/random_number_generator/sys/arm/ti/am335x/am335x_scm_padconf.c
  projects/random_number_generator/sys/arm/ti/omap4/omap4_scm_padconf.c
  projects/random_number_generator/sys/cam/ctl/ctl.c
  projects/random_number_generator/sys/cam/ctl/ctl.h
  projects/random_number_generator/sys/cam/ctl/ctl_backend.h
  projects/random_number_generator/sys/cam/ctl/ctl_cmd_table.c
  projects/random_number_generator/sys/cam/ctl/ctl_io.h
  projects/random_number_generator/sys/cam/ctl/ctl_private.h
  projects/random_number_generator/sys/cam/scsi/scsi_all.h
  projects/random_number_generator/sys/cam/scsi/scsi_da.h
  projects/random_number_generator/sys/conf/files
  projects/random_number_generator/sys/dev/ixgbe/ixgbe.c
  projects/random_number_generator/sys/fs/autofs/autofs.c
  projects/random_number_generator/sys/fs/autofs/autofs.h
  projects/random_number_generator/sys/fs/autofs/autofs_ioctl.h
  projects/random_number_generator/sys/kern/kern_descrip.c
  projects/random_number_generator/sys/kern/vfs_subr.c
  projects/random_number_generator/sys/modules/if_gif/Makefile
  projects/random_number_generator/sys/net/if_gif.c
  projects/random_number_generator/sys/net/if_gif.h
  projects/random_number_generator/sys/netinet/in_gif.c
  projects/random_number_generator/sys/netinet/in_gif.h
  projects/random_number_generator/sys/netinet6/in6_gif.c
  projects/random_number_generator/sys/netinet6/in6_gif.h
  projects/random_number_generator/sys/powerpc/powermac/pmu.c
  projects/random_number_generator/usr.sbin/autofs/automountd.c
  projects/random_number_generator/usr.sbin/autofs/common.c
  projects/random_number_generator/usr.sbin/autofs/common.h
  projects/random_number_generator/usr.sbin/autofs/token.l
Directory Properties:
  projects/random_number_generator/   (props changed)
  projects/random_number_generator/cddl/   (props changed)
  projects/random_number_generator/cddl/contrib/opensolaris/   (props changed)
  projects/random_number_generator/lib/libc/   (props changed)
  projects/random_number_generator/share/   (props changed)
  projects/random_number_generator/share/man/man4/   (props changed)
  projects/random_number_generator/sys/   (props changed)
  projects/random_number_generator/sys/amd64/vmm/   (props changed)
  projects/random_number_generator/sys/conf/   (props changed)

Modified: projects/random_number_generator/lib/libc/arm/aeabi/Makefile.inc
==============================================================================
--- projects/random_number_generator/lib/libc/arm/aeabi/Makefile.inc	Wed Oct 15 09:28:45 2014	(r273127)
+++ projects/random_number_generator/lib/libc/arm/aeabi/Makefile.inc	Wed Oct 15 12:37:56 2014	(r273128)
@@ -6,7 +6,9 @@ SRCS+=	aeabi_atexit.c		\
 	aeabi_unwind_cpp.c	\
 	aeabi_unwind_exidx.c
 .if ${MACHINE_ARCH:Marm*hf*} == ""
-SRCS+=	aeabi_double.c		\
+SRCS+=	aeabi_asm_double.S	\
+	aeabi_asm_float.S	\
+	aeabi_double.c		\
 	aeabi_float.c
 .endif
 .if ${MACHINE_ARCH:Marmv6*}

Modified: projects/random_number_generator/lib/libc/arm/aeabi/Symbol.map
==============================================================================
--- projects/random_number_generator/lib/libc/arm/aeabi/Symbol.map	Wed Oct 15 09:28:45 2014	(r273127)
+++ projects/random_number_generator/lib/libc/arm/aeabi/Symbol.map	Wed Oct 15 12:37:56 2014	(r273128)
@@ -17,6 +17,10 @@ FBSDprivate_1.0 {
 	__aeabi_dcmpgt;
 	__aeabi_dcmpun;
 
+	__aeabi_cdcmpeq;
+	__aeabi_cdcmple;
+	__aeabi_cdrcmple;
+
 	__aeabi_d2iz;
 	__aeabi_d2f;
 
@@ -33,6 +37,10 @@ FBSDprivate_1.0 {
 	__aeabi_fcmpgt;
 	__aeabi_fcmpun;
 
+	__aeabi_cfcmpeq;
+	__aeabi_cfcmple;
+	__aeabi_cfrcmple;
+
 	__aeabi_f2iz;
 	__aeabi_f2d;
 

Copied: projects/random_number_generator/lib/libc/arm/aeabi/aeabi_asm_double.S (from r273127, head/lib/libc/arm/aeabi/aeabi_asm_double.S)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ projects/random_number_generator/lib/libc/arm/aeabi/aeabi_asm_double.S	Wed Oct 15 12:37:56 2014	(r273128, copy of r273127, head/lib/libc/arm/aeabi/aeabi_asm_double.S)
@@ -0,0 +1,117 @@
+/*
+ * Copyright (C) 2014 Andrew Turner
+ * All rights reserved.
+ *
+ * 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.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND 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 THE AUTHOR OR 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.
+ *
+ */
+
+#include <machine/asm.h>
+__FBSDID("$FreeBSD$");
+
+#define	PCR_Z	(1 << 30)
+#define	PCR_C	(1 << 29)
+
+/*
+ * These functions return the result in the CPSR register.
+ *
+ * For __aeabi_cdcmple:
+ *      Z C
+ *   LT 0 0
+ *   EQ 1 1
+ * else 0 1
+ *
+ * __aeabi_cdrcmple is the same as __aeabi_cdcmple, however the arguments
+ * have been swapped.
+ */
+ENTRY(__aeabi_cdcmple)
+	push	{r4, r5, r6, r7, ip, lr}
+
+	/* Backup the input registers */
+	mov	r4, r0
+	mov	r5, r1
+	mov	r6, r2
+	mov	r7, r3
+	/* Is it less than? */
+	bl	__aeabi_dcmplt
+	cmp	r0, #1
+	bne	1f
+	/* Yes, clear Z and C */
+	msr	cpsr_c, #(0)
+	b	99f
+
+1:
+	/* Restore the input regsters for the next function call */
+	mov	r0, r4
+	mov	r1, r5
+	mov	r2, r6
+	mov	r3, r7
+	/* Is it equal? */
+	bl	__aeabi_dcmpeq
+	cmp	r0, #1
+	bne	2f
+	/* Yes, set Z and C */
+	msr	cpsr_c, #(PCR_Z | PCR_C)
+	b 99f
+
+2:
+	/* Not less than or equal, set C and clear Z */
+	msr	cpsr_c, #(PCR_C)
+
+99:
+	pop	{r4, r5, r6, r7, ip, pc}
+END(__aeabi_cdcmple)
+
+ENTRY(__aeabi_cdrcmple)
+	/* Swap the first half of the arguments */
+	mov	ip, r0
+	mov	r0, r2
+	mov	r2, ip
+
+	/* And the second half */
+	mov	ip, r1
+	mov	r1, r3
+	mov	r3, ip
+
+	b	__aeabi_cdcmple
+END(__aeabi_cdrcmple)
+
+/*
+ * This is just like __aeabi_cdcmple except it will not throw an exception
+ * in the presence of a quiet NaN. If either argument is a signalling NaN we
+ * will still signal.
+ */
+ENTRY(__aeabi_cdcmpeq)
+	/* Check if we can call __aeabi_cfcmple safely */
+	push	{r0, r1, r2, r3, r4, lr}
+	bl	__aeabi_cdcmpeq_helper
+	cmp	r0, #1
+	pop	{r0, r1, r2, r3, r4, lr}
+	beq	1f
+
+	bl	__aeabi_cdcmple
+	RET
+
+1:
+	msr	cpsr_c, #(PCR_C)
+	RET
+END(__aeabi_cdcmpeq)

Copied: projects/random_number_generator/lib/libc/arm/aeabi/aeabi_asm_float.S (from r273127, head/lib/libc/arm/aeabi/aeabi_asm_float.S)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ projects/random_number_generator/lib/libc/arm/aeabi/aeabi_asm_float.S	Wed Oct 15 12:37:56 2014	(r273128, copy of r273127, head/lib/libc/arm/aeabi/aeabi_asm_float.S)
@@ -0,0 +1,108 @@
+/*
+ * Copyright (C) 2014 Andrew Turner
+ * All rights reserved.
+ *
+ * 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.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND 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 THE AUTHOR OR 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.
+ *
+ */
+
+#include <machine/asm.h>
+__FBSDID("$FreeBSD$");
+
+#define	PCR_Z	(1 << 30)
+#define	PCR_C	(1 << 29)
+
+/*
+ * These functions return the result in the CPSR register.
+ *
+ * For __aeabi_cfcmple:
+ *      Z C
+ *   LT 0 0
+ *   EQ 1 1
+ * else 0 1
+ *
+ * __aeabi_cfrcmple is the same as __aeabi_cfcmple, however the arguments
+ * have been swapped.
+ */
+ENTRY(__aeabi_cfcmple)
+	push	{r4, r5, ip, lr}
+
+	/* Backup the input registers */
+	mov	r4, r0
+	mov	r5, r1
+	/* Is it less than? */
+	bl	__aeabi_fcmplt
+	cmp	r0, #1
+	bne	1f
+	/* Yes, clear Z and C */
+	msr	cpsr_c, #(0)
+	b	99f
+
+1:
+	/* Restore the input regsters for the next function call */
+	mov	r0, r4
+	mov	r1, r5
+	/* Is it equal? */
+	bl	__aeabi_fcmpeq
+	cmp	r0, #1
+	bne	2f
+	/* Yes, set Z and C */
+	msr	cpsr_c, #(PCR_Z | PCR_C)
+	b 99f
+
+2:
+	/* Not less than or equal, set C and clear Z */
+	msr	cpsr_c, #(PCR_C)
+
+99:
+	pop	{r4, r5, ip, pc}
+END(__aeabi_cfcmple)
+
+ENTRY(__aeabi_cfrcmple)
+	/* Swap the arguments */
+	mov	ip, r0
+	mov	r0, r1
+	mov	r1, ip
+
+	b	__aeabi_cfcmple
+END(__aeabi_cfrcmple)
+
+/*
+ * This is just like __aeabi_cfcmple except it will not throw an exception
+ * in the presence of a quiet NaN. If either argument is a signalling NaN we
+ * will still signal.
+ */
+ENTRY(__aeabi_cfcmpeq)
+	/* Check if we can call __aeabi_cfcmple safely */
+	push	{r0, r1, r2, lr}
+	bl	__aeabi_cfcmpeq_helper
+	cmp	r0, #1
+	pop	{r0, r1, r2, lr}
+	beq	1f
+
+	bl	__aeabi_cfcmple
+	RET
+
+1:
+	msreq	cpsr_c, #(PCR_C)
+	RET
+END(__aeabi_cfcmpeq)

Modified: projects/random_number_generator/lib/libc/arm/aeabi/aeabi_double.c
==============================================================================
--- projects/random_number_generator/lib/libc/arm/aeabi/aeabi_double.c	Wed Oct 15 09:28:45 2014	(r273127)
+++ projects/random_number_generator/lib/libc/arm/aeabi/aeabi_double.c	Wed Oct 15 12:37:56 2014	(r273128)
@@ -74,3 +74,28 @@ float64 AEABI_FUNC2(ddiv, float64, float
 float64 AEABI_FUNC2(dmul, float64, float64_mul)
 float64 AEABI_FUNC2(dsub, float64, float64_sub)
 
+int
+__aeabi_cdcmpeq_helper(float64 a, float64 b)
+{
+	int quiet = 0;
+
+	/* Check if a is a NaN */
+	if ((a << 1) > 0xffe0000000000000ull) {
+		/* If it's a signalling NaN we will always signal */
+		if ((a & 0x0008000000000000ull) == 0)
+			return (0);
+
+		quiet = 1;
+	}
+
+	/* Check if b is a NaN */
+	if ((b << 1) > 0xffe0000000000000ull) {
+		/* If it's a signalling NaN we will always signal */
+		if ((b & 0x0008000000000000ull) == 0)
+			return (0);
+
+		quiet = 1;
+	}
+
+	return (quiet);
+}

Modified: projects/random_number_generator/lib/libc/arm/aeabi/aeabi_float.c
==============================================================================
--- projects/random_number_generator/lib/libc/arm/aeabi/aeabi_float.c	Wed Oct 15 09:28:45 2014	(r273127)
+++ projects/random_number_generator/lib/libc/arm/aeabi/aeabi_float.c	Wed Oct 15 12:37:56 2014	(r273128)
@@ -74,3 +74,28 @@ float32 AEABI_FUNC2(fdiv, float32, float
 float32 AEABI_FUNC2(fmul, float32, float32_mul)
 float32 AEABI_FUNC2(fsub, float32, float32_sub)
 
+int
+__aeabi_cfcmpeq_helper(float32 a, float32 b)
+{
+	int quiet = 0;
+
+	/* Check if a is a NaN */
+	if ((a << 1) > 0xff000000u) {
+		/* If it's a signalling NaN we will always signal */
+		if ((a & 0x00400000u) == 0)
+			return (0);
+
+		quiet = 1;
+	}
+
+	/* Check if b is a NaN */
+	if ((b << 1) > 0xff000000u) {
+		/* If it's a signalling NaN we will always signal */
+		if ((b & 0x00400000u) == 0)
+			return (0);
+
+		quiet = 1;
+	}
+
+	return (quiet);
+}

Modified: projects/random_number_generator/lib/libc/arm/aeabi/aeabi_vfp_double.S
==============================================================================
--- projects/random_number_generator/lib/libc/arm/aeabi/aeabi_vfp_double.S	Wed Oct 15 09:28:45 2014	(r273127)
+++ projects/random_number_generator/lib/libc/arm/aeabi/aeabi_vfp_double.S	Wed Oct 15 12:37:56 2014	(r273128)
@@ -33,6 +33,33 @@ __FBSDID("$FreeBSD$");
 .fpu	vfp
 .syntax	unified
 
+/* void __aeabi_cdcmpeq(double, double) */
+AEABI_ENTRY(cdcmpeq)
+	LOAD_DREG(d0, r0, r1)
+	LOAD_DREG(d1, r2, r3)
+	vcmp.f64	d0, d1
+	vmrs		APSR_nzcv, fpscr
+	RET
+AEABI_END(cdcmpeq)
+
+/* void __aeabi_cdcmple(double, double) */
+AEABI_ENTRY(cdcmple)
+	LOAD_DREG(d0, r0, r1)
+	LOAD_DREG(d1, r2, r3)
+	vcmpe.f64	d0, d1
+	vmrs		APSR_nzcv, fpscr
+	RET
+AEABI_END(cdcmple)
+
+/* void __aeabi_cdrcmple(double, double) */
+AEABI_ENTRY(cdrcmple)
+	LOAD_DREG(d0, r0, r1)
+	LOAD_DREG(d1, r2, r3)
+	vcmpe.f64	d1, d0
+	vmrs		APSR_nzcv, fpscr
+	RET
+AEABI_END(cdrcmple)
+
 /* int __aeabi_dcmpeq(double, double) */
 AEABI_ENTRY(dcmpeq)
 	LOAD_DREG(d0, r0, r1)

Modified: projects/random_number_generator/lib/libc/arm/aeabi/aeabi_vfp_float.S
==============================================================================
--- projects/random_number_generator/lib/libc/arm/aeabi/aeabi_vfp_float.S	Wed Oct 15 09:28:45 2014	(r273127)
+++ projects/random_number_generator/lib/libc/arm/aeabi/aeabi_vfp_float.S	Wed Oct 15 12:37:56 2014	(r273128)
@@ -33,6 +33,30 @@ __FBSDID("$FreeBSD$");
 .fpu	vfp
 .syntax	unified
 
+/* void __aeabi_cfcmpeq(float, float) */
+AEABI_ENTRY(cfcmpeq)
+	LOAD_SREGS(s0, s1, r0, r1)
+	vcmp.f32	s0, s1
+	vmrs     	APSR_nzcv, fpscr
+	RET
+AEABI_END(cfcmpeq)
+
+/* void __aeabi_cfcmple(float, float) */
+AEABI_ENTRY(cfcmple)
+	LOAD_SREGS(s0, s1, r0, r1)
+	vcmpe.f32	s0, s1
+	vmrs     	APSR_nzcv, fpscr
+	RET
+AEABI_END(cfcmple)
+
+/* void __aeabi_cfrcmple(float, float) */
+AEABI_ENTRY(cfrcmple)
+	LOAD_SREGS(s0, s1, r0, r1)
+	vcmpe.f32	s1, s0
+	vmrs     	APSR_nzcv, fpscr
+	RET
+AEABI_END(cfrcmple)
+
 /* int __aeabi_fcmpeq(float, float) */
 AEABI_ENTRY(fcmpeq)
 	LOAD_SREGS(s0, s1, r0, r1)

Modified: projects/random_number_generator/lib/libfetch/common.c
==============================================================================
--- projects/random_number_generator/lib/libfetch/common.c	Wed Oct 15 09:28:45 2014	(r273127)
+++ projects/random_number_generator/lib/libfetch/common.c	Wed Oct 15 12:37:56 2014	(r273128)
@@ -675,10 +675,14 @@ fetch_ssl_setup_transport_layer(SSL_CTX 
 	ssl_ctx_options = SSL_OP_ALL | SSL_OP_NO_TICKET;
 	if (getenv("SSL_ALLOW_SSL2") == NULL)
 		ssl_ctx_options |= SSL_OP_NO_SSLv2;
-	if (getenv("SSL_NO_SSL3") != NULL)
+	if (getenv("SSL_ALLOW_SSL3") == NULL)
 		ssl_ctx_options |= SSL_OP_NO_SSLv3;
 	if (getenv("SSL_NO_TLS1") != NULL)
 		ssl_ctx_options |= SSL_OP_NO_TLSv1;
+	if (getenv("SSL_NO_TLS1_1") != NULL)
+		ssl_ctx_options |= SSL_OP_NO_TLSv1_1;
+	if (getenv("SSL_NO_TLS1_2") != NULL)
+		ssl_ctx_options |= SSL_OP_NO_TLSv1_2;
 	if (verbose)
 		fetch_info("SSL options: %lx", ssl_ctx_options);
 	SSL_CTX_set_options(ctx, ssl_ctx_options);
@@ -873,8 +877,8 @@ fetch_ssl(conn_t *conn, const struct url
 	}
 
 	if (verbose) {
-		fetch_info("SSL connection established using %s",
-		    SSL_get_cipher(conn->ssl));
+		fetch_info("%s connection established using %s",
+		    SSL_get_version(conn->ssl), SSL_get_cipher(conn->ssl));
 		name = X509_get_subject_name(conn->ssl_cert);
 		str = X509_NAME_oneline(name, 0, 0);
 		fetch_info("Certificate subject: %s", str);

Modified: projects/random_number_generator/lib/libfetch/fetch.3
==============================================================================
--- projects/random_number_generator/lib/libfetch/fetch.3	Wed Oct 15 09:28:45 2014	(r273127)
+++ projects/random_number_generator/lib/libfetch/fetch.3	Wed Oct 15 12:37:56 2014	(r273128)
@@ -26,7 +26,7 @@
 .\"
 .\" $FreeBSD$
 .\"
-.Dd July 30, 2013
+.Dd October 15, 2014
 .Dt FETCH 3
 .Os
 .Sh NAME
@@ -438,15 +438,17 @@ input (see
 .Pp
 By default
 .Nm libfetch
-allows SSLv3 and TLSv1 when negotiating the connecting with the remote
+allows TLSv1 and newer when negotiating the connecting with the remote
 peer.
-You can change this behavior by setting the environment variable
+You can change this behavior by setting the
 .Ev SSL_ALLOW_SSL2
-to allow SSLv2 (not recommended) and
-.Ev SSL_NO_SSL3
-or
-.Ev SSL_NO_TLS1
-to disable the respective methods.
+and
+.Ev SSL_ALLOW_SSL3
+environment variables to allow SSLv2 and SSLv3, respectively, and
+.Ev SSL_NO_TLS1 ,
+.Ev SSL_NO_TLS1_1 and
+.Ev SSL_NO_TLS1_2
+to disable TLS 1.0, 1.1 and 1.2 respectively.
 .Sh AUTHENTICATION
 Apart from setting the appropriate environment variables and
 specifying the user name and password in the URL or the
@@ -646,6 +648,8 @@ Same as
 for compatibility.
 .It Ev SSL_ALLOW_SSL2
 Allow SSL version 2 when negotiating the connection (not recommended).
+.It Ev SSL_ALLOW_SSL3
+Allow SSL version 3 when negotiating the connection (not recommended).
 .It Ev SSL_CA_CERT_FILE
 CA certificate bundle containing trusted CA certificates.
 Default value:
@@ -660,10 +664,12 @@ PEM encoded client key in case key and c
 are stored separately.
 .It Ev SSL_CRL_FILE
 File containing certificate revocation list.
-.It Ev SSL_NO_SSL3
-Don't allow SSL version 3 when negotiating the connection.
 .It Ev SSL_NO_TLS1
-Don't allow TLV version 1 when negotiating the connection.
+Do not allow TLS version 1.0 when negotiating the connection.
+.It Ev SSL_NO_TLS1_1
+Do not allow TLS version 1.1 when negotiating the connection.
+.It Ev SSL_NO_TLS1_2
+Do not allow TLS version 1.2 when negotiating the connection.
 .It Ev SSL_NO_VERIFY_HOSTNAME
 If set, do not verify that the hostname matches the subject of the
 certificate presented by the server.

Modified: projects/random_number_generator/release/Makefile
==============================================================================
--- projects/random_number_generator/release/Makefile	Wed Oct 15 09:28:45 2014	(r273127)
+++ projects/random_number_generator/release/Makefile	Wed Oct 15 12:37:56 2014	(r273128)
@@ -101,6 +101,7 @@ VMTARGETS=	vm-base vm-image
 VMFORMATS?=	vhd vmdk qcow2 raw
 VMSIZE?=	20G
 VMBASE?=	vm
+AZURECONF?=	${.CURDIR}/tools/azure.conf
 
 CLEANFILES=	packagesystem *.txz MANIFEST system ${IMAGES}
 .if defined(WITH_COMPRESSED_IMAGES) && !empty(WITH_COMPRESSED_IMAGES)
@@ -121,6 +122,12 @@ CLEANDIRS=	dist ftp release bootonly dvd
 .if defined(WITH_VMIMAGES) && !empty(WITH_VMIMAGES)
 CLEANDIRS+=	${VMTARGETS}
 .endif
+.if exists(${.CURDIR}/${TARGET}/mk-azure.sh)
+CLEANFILES+=	${OSRELEASE}.vhd \
+		${OSRELEASE}.vhd.raw \
+		azure.img
+CLEANDIRS+=	vm-azure
+.endif
 beforeclean:
 	chflags -R noschg .
 .include <bsd.obj.mk>
@@ -338,3 +345,11 @@ vm-image: vm-base
 . endif
 .endif
 	touch ${.TARGET}
+
+vm-azure:
+.if exists(${.CURDIR}/${TARGET}/mk-azure.sh)
+	env TARGET=${TARGET} TARGET_ARCH=${TARGET_ARCH} AZURECONF=${AZURECONF} \
+		${.CURDIR}/${TARGET}/mk-azure.sh ${.TARGET} azure.img \
+		${WORLDDIR} ${.TARGET} ${VMSIZE} ${OSRELEASE}.vhd
+.endif
+	touch ${.TARGET}

Copied: projects/random_number_generator/release/amd64/mk-azure.sh (from r273127, head/release/amd64/mk-azure.sh)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ projects/random_number_generator/release/amd64/mk-azure.sh	Wed Oct 15 12:37:56 2014	(r273128, copy of r273127, head/release/amd64/mk-azure.sh)
@@ -0,0 +1,173 @@
+#!/bin/sh
+#-
+# Copyright (c) 2014 The FreeBSD Foundation
+# All rights reserved.
+#
+# This software was developed by Glen Barber under sponsorship
+# from the FreeBSD Foundation.
+#
+# 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.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND 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 THE AUTHOR OR 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.
+#
+# mk-azure.sh: Create virtual machine disk images for Microsoft Azure
+#
+# $FreeBSD$
+#
+
+export PATH="/bin:/usr/bin:/sbin:/usr/sbin:/usr/local/bin"
+
+usage() {
+	echo "Usage:"
+	echo -n "$(basename ${0}) vm-azure <base image>"
+	echo " <source tree> <dest dir> <disk image size> <vm image name>"
+	exit 1
+}
+
+panic() {
+	msg="${@}"
+	printf "${msg}\n"
+	if [ ! -z "${mddev}" ]; then
+		mdconfig -d -u ${mddev}
+	fi
+	# Do not allow one failure case to chain through any remaining image
+	# builds.
+	exit 0
+}
+
+vm_create_azure() {
+	# Arguments:
+	# vm-azure <base image> <source tree> <dest dir> <disk image size> <vm image name>
+
+	VMBASE="${1}"
+	WORLDDIR="${2}"
+	DESTDIR="${3}"
+	VMSIZE="${4}"
+	VMIMAGE="${5}"
+
+	if [ -z "${VMBASE}" -o -z "${WORLDDIR}" -o -z "${DESTDIR}" \
+		-o -z "${VMSIZE}" -o -z "${VMIMAGE}" ]; then
+			usage
+	fi
+
+	trap "umount ${DESTDIR}/dev ${DESTDIR}" INT QUIT TRAP ABRT TERM
+
+	i=0
+	mkdir -p ${DESTDIR}
+	truncate -s ${VMSIZE} ${VMBASE}
+	mddev=$(mdconfig -f ${VMBASE})
+	newfs -j /dev/${mddev}
+	mkdir -p ${DESTDIR}
+	mount /dev/${mddev} ${DESTDIR}
+	make -C ${WORLDDIR} DESTDIR=$(realpath ${DESTDIR}) \
+		installworld installkernel distribution || \
+		panic 1 "\n\nCannot install the base system to ${DESTDIR}."
+	mount -t devfs devfs ${DESTDIR}/dev
+	chroot ${DESTDIR} /usr/bin/newaliases
+	echo '# Custom /etc/fstab for FreeBSD VM images' \
+		> ${DESTDIR}/etc/fstab
+	echo '/dev/gpt/rootfs	/	ufs	rw	2	2' \
+		>> ${DESTDIR}/etc/fstab
+	# Although a swap partition is created, it is not used in Azure.
+	echo '#/dev/gpt/swapfs	none	swap	sw	0	0' \
+		>> ${DESTDIR}/etc/fstab
+
+	chroot ${DESTDIR} /etc/rc.d/ldconfig forcestart
+	chroot ${DESTDIR} env ASSUME_ALWAYS_YES=yes /usr/sbin/pkg bootstrap -y
+	chroot ${DESTDIR} env ASSUME_ALWAYS_YES=yes /usr/sbin/pkg install -y \
+	        python python2 python27 py27-asn1 sudo bash
+	if [ ! -z "${VM_EXTRA_PACKAGES}" ]; then
+	        chroot ${DESTDIR} env ASSUME_ALWAYS_YES=yes /usr/sbin/pkg install -y \
+	                ${VM_EXTRA_PACKAGES}
+	fi
+
+	fetch -o ${DESTDIR}/usr/sbin/waagent \
+		http://people.freebsd.org/~gjb/waagent
+	chmod +x ${DESTDIR}/usr/sbin/waagent
+	rm -f ${DESTDIR}/etc/resolv.conf
+	chroot ${DESTDIR} /usr/sbin/waagent -verbose -install
+	yes | chroot ${DESTDIR} /usr/sbin/waagent -deprovision
+	echo 'sshd_enable="YES"' > ${DESTDIR}/etc/rc.conf
+	echo 'ifconfig_hn0="SYNCDHCP"' >> ${DESTDIR}/etc/rc.conf
+	echo 'waagent_enable="YES"' >> ${DESTDIR}/etc/rc.conf
+
+	echo 'console="comconsole vidconsole"' >> ${DESTDIR}/boot/loader.conf
+	echo 'comconsole_speed="115200"' >> ${DESTDIR}/boot/loader.conf
+
+	if [ ! -z "${VM_RC_LIST}" ]; then
+		for _rcvar in ${VM_RC_LIST}; do
+			echo ${_rcvar}_enable="YES" >> ${DESTDIR}/etc/rc.conf
+		done
+	fi
+
+	sync
+
+	while ! umount ${DESTDIR}/dev ${DESTDIR}; do
+		i=$(( $i + 1 ))
+		if [ $i -ge 10 ]; then
+			# This should never happen.  But, it has happened.
+			msg="Cannot umount(8) ${DESTDIR}\n"
+			msg="${msg}Something has gone horribly wrong."
+			panic 1 "${msg}"
+		fi
+		sleep 1
+	done
+
+	echo "Creating image...  Please wait."
+
+	mkimg -f vhdf -s gpt \
+		-b /boot/pmbr -p freebsd-boot/bootfs:=/boot/gptboot \
+		-p freebsd-swap/swapfs::1G \
+		-p freebsd-ufs/rootfs:=${VMBASE} \
+		-o ${VMIMAGE}.raw
+
+	if [ ! -x "/usr/local/bin/qemu-img" ]; then
+		env ASSUME_ALWAYS_YES=yes pkg install -y emulators/qemu-devel
+	fi
+
+	size=$(qemu-img info -f raw --output json ${VMIMAGE}.raw | awk '/virtual-size/ {print $2}' | tr -d ',')
+	size=$(( ( ${size} / ( 1024 * 1024 ) + 1 ) * ( 1024 * 1024 ) ))
+	qemu-img resize ${VMIMAGE}.raw ${size}
+	qemu-img convert -f raw -o subformat=fixed -O vpc ${VMIMAGE}.raw ${VMIMAGE}
+
+	return 0
+}
+
+main() {
+	cmd="${1}"
+	shift 1
+
+	if [ -e "${AZURECONF}" -a ! -c "${AZURECONF}" ]; then
+		. ${AZURECONF}
+	fi
+
+	case ${cmd} in
+		vm-azure)
+			eval vm_create_azure "$@" || return 0
+			;;
+		*|\?)
+			usage
+			;;
+	esac
+
+	return 0
+}
+
+main "$@"

Modified: projects/random_number_generator/release/amd64/mk-vmimage.sh
==============================================================================
--- projects/random_number_generator/release/amd64/mk-vmimage.sh	Wed Oct 15 09:28:45 2014	(r273127)
+++ projects/random_number_generator/release/amd64/mk-vmimage.sh	Wed Oct 15 12:37:56 2014	(r273128)
@@ -32,7 +32,7 @@
 # $FreeBSD$
 #
 
-PATH="/bin:/usr/bin:/sbin:/usr/sbin"
+PATH="/bin:/usr/bin:/sbin:/usr/sbin:/usr/local/bin:/usr/local/sbin"
 export PATH
 
 usage_vm_base() {
@@ -58,16 +58,25 @@ usage() {
 }
 
 panic() {
-	rc="${1}"
-	shift 1
 	msg="${@}"
 	printf "${msg}\n"
 	if [ ! -z "${mddev}" ]; then
 		mdconfig -d -u ${mddev}
 	fi
+	case ${cmd} in
+		vm-base)
+			# If the vm-base target fails, the vm-image target
+			# cannot possibly succeed.  Touch the .TARGET file
+			# so it is not attempted.
+			touch vm-image
+			;;
+		*)
+			# FALLTHROUGH
+			;;
+	esac
 	# Do not allow one failure case to chain through any remaining image
 	# builds.
-	exit 0
+	return 1
 }
 
 vm_create_baseimage() {
@@ -96,7 +105,7 @@ vm_create_baseimage() {
 	cd ${WORLDDIR} && \
 		make DESTDIR=${DESTDIR} \
 		installworld installkernel distribution || \
-		panic 1 "\n\nCannot install the base system to ${DESTDIR}."
+		panic "\n\nCannot install the base system to ${DESTDIR}."
 	chroot ${DESTDIR} /usr/bin/newaliases
 	echo '# Custom /etc/fstab for FreeBSD VM images' \
 		> ${DESTDIR}/etc/fstab
@@ -111,7 +120,7 @@ vm_create_baseimage() {
 			# This should never happen.  But, it has happened.
 			msg="Cannot umount(8) ${DESTDIR}\n"
 			msg="${msg}Something has gone horribly wrong."
-			panic 1 "${msg}"
+			panic "${msg}"
 		fi
 		sleep 1
 	done
@@ -141,11 +150,11 @@ vm_create_vmdisk() {
 	if [ -z "${mkimg_version}" ]; then
 		msg="Cannot determine mkimg(1) version.\n"
 		msg="${msg}Cannot continue without a known mkimg(1) version."
-		panic 0 "${msg}"
+		panic "${msg}"
 	fi
 
 	if ! mkimg --formats 2>/dev/null | grep -q ${FORMAT}; then
-		panic 0 "'${FORMAT}' is not supported by this mkimg(1).\n"
+		panic "'${FORMAT}' is not supported by this mkimg(1).\n"
 	fi
 
 	case ${FORMAT} in

Copied: projects/random_number_generator/release/i386/mk-azure.sh (from r273127, head/release/i386/mk-azure.sh)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ projects/random_number_generator/release/i386/mk-azure.sh	Wed Oct 15 12:37:56 2014	(r273128, copy of r273127, head/release/i386/mk-azure.sh)
@@ -0,0 +1,173 @@
+#!/bin/sh
+#-
+# Copyright (c) 2014 The FreeBSD Foundation
+# All rights reserved.
+#
+# This software was developed by Glen Barber under sponsorship
+# from the FreeBSD Foundation.
+#
+# 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.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND 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 THE AUTHOR OR 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.
+#
+# mk-azure.sh: Create virtual machine disk images for Microsoft Azure
+#
+# $FreeBSD$
+#
+
+export PATH="/bin:/usr/bin:/sbin:/usr/sbin:/usr/local/bin"
+
+usage() {
+	echo "Usage:"
+	echo -n "$(basename ${0}) vm-azure <base image>"
+	echo " <source tree> <dest dir> <disk image size> <vm image name>"
+	exit 1
+}
+
+panic() {
+	msg="${@}"
+	printf "${msg}\n"
+	if [ ! -z "${mddev}" ]; then
+		mdconfig -d -u ${mddev}
+	fi
+	# Do not allow one failure case to chain through any remaining image
+	# builds.
+	exit 0
+}
+
+vm_create_azure() {
+	# Arguments:
+	# vm-azure <base image> <source tree> <dest dir> <disk image size> <vm image name>
+
+	VMBASE="${1}"
+	WORLDDIR="${2}"
+	DESTDIR="${3}"
+	VMSIZE="${4}"
+	VMIMAGE="${5}"
+
+	if [ -z "${VMBASE}" -o -z "${WORLDDIR}" -o -z "${DESTDIR}" \
+		-o -z "${VMSIZE}" -o -z "${VMIMAGE}" ]; then
+			usage
+	fi
+
+	trap "umount ${DESTDIR}/dev ${DESTDIR}" INT QUIT TRAP ABRT TERM
+
+	i=0
+	mkdir -p ${DESTDIR}
+	truncate -s ${VMSIZE} ${VMBASE}
+	mddev=$(mdconfig -f ${VMBASE})
+	newfs -j /dev/${mddev}
+	mkdir -p ${DESTDIR}
+	mount /dev/${mddev} ${DESTDIR}
+	make -C ${WORLDDIR} DESTDIR=$(realpath ${DESTDIR}) \
+		installworld installkernel distribution || \
+		panic 1 "\n\nCannot install the base system to ${DESTDIR}."
+	mount -t devfs devfs ${DESTDIR}/dev
+	chroot ${DESTDIR} /usr/bin/newaliases
+	echo '# Custom /etc/fstab for FreeBSD VM images' \
+		> ${DESTDIR}/etc/fstab
+	echo '/dev/gpt/rootfs	/	ufs	rw	2	2' \
+		>> ${DESTDIR}/etc/fstab
+	# Although a swap partition is created, it is not used in Azure.
+	echo '#/dev/gpt/swapfs	none	swap	sw	0	0' \
+		>> ${DESTDIR}/etc/fstab
+
+	chroot ${DESTDIR} /etc/rc.d/ldconfig forcestart
+	chroot ${DESTDIR} env ASSUME_ALWAYS_YES=yes /usr/sbin/pkg bootstrap -y
+	chroot ${DESTDIR} env ASSUME_ALWAYS_YES=yes /usr/sbin/pkg install -y \
+	        python python2 python27 py27-asn1 sudo bash
+	if [ ! -z "${VM_EXTRA_PACKAGES}" ]; then
+	        chroot ${DESTDIR} env ASSUME_ALWAYS_YES=yes /usr/sbin/pkg install -y \
+	                ${VM_EXTRA_PACKAGES}
+	fi
+
+	fetch -o ${DESTDIR}/usr/sbin/waagent \
+		http://people.freebsd.org/~gjb/waagent
+	chmod +x ${DESTDIR}/usr/sbin/waagent
+	rm -f ${DESTDIR}/etc/resolv.conf
+	chroot ${DESTDIR} /usr/sbin/waagent -verbose -install
+	yes | chroot ${DESTDIR} /usr/sbin/waagent -deprovision
+	echo 'sshd_enable="YES"' > ${DESTDIR}/etc/rc.conf
+	echo 'ifconfig_hn0="SYNCDHCP"' >> ${DESTDIR}/etc/rc.conf
+	echo 'waagent_enable="YES"' >> ${DESTDIR}/etc/rc.conf
+
+	echo 'console="comconsole vidconsole"' >> ${DESTDIR}/boot/loader.conf
+	echo 'comconsole_speed="115200"' >> ${DESTDIR}/boot/loader.conf
+
+	if [ ! -z "${VM_RC_LIST}" ]; then
+		for _rcvar in ${VM_RC_LIST}; do
+			echo ${_rcvar}_enable="YES" >> ${DESTDIR}/etc/rc.conf
+		done
+	fi
+
+	sync
+
+	while ! umount ${DESTDIR}/dev ${DESTDIR}; do
+		i=$(( $i + 1 ))
+		if [ $i -ge 10 ]; then
+			# This should never happen.  But, it has happened.
+			msg="Cannot umount(8) ${DESTDIR}\n"
+			msg="${msg}Something has gone horribly wrong."
+			panic 1 "${msg}"
+		fi
+		sleep 1
+	done
+
+	echo "Creating image...  Please wait."
+
+	mkimg -f vhdf -s gpt \
+		-b /boot/pmbr -p freebsd-boot/bootfs:=/boot/gptboot \
+		-p freebsd-swap/swapfs::1G \
+		-p freebsd-ufs/rootfs:=${VMBASE} \
+		-o ${VMIMAGE}.raw
+
+	if [ ! -x "/usr/local/bin/qemu-img" ]; then
+		env ASSUME_ALWAYS_YES=yes pkg install -y emulators/qemu-devel
+	fi
+
+	size=$(qemu-img info -f raw --output json ${VMIMAGE}.raw | awk '/virtual-size/ {print $2}' | tr -d ',')
+	size=$(( ( ${size} / ( 1024 * 1024 ) + 1 ) * ( 1024 * 1024 ) ))
+	qemu-img resize ${VMIMAGE}.raw ${size}
+	qemu-img convert -f raw -o subformat=fixed -O vpc ${VMIMAGE}.raw ${VMIMAGE}
+
+	return 0
+}
+
+main() {
+	cmd="${1}"
+	shift 1
+
+	if [ -e "${AZURECONF}" -a ! -c "${AZURECONF}" ]; then
+		. ${AZURECONF}
+	fi
+
+	case ${cmd} in
+		vm-azure)
+			eval vm_create_azure "$@" || return 0
+			;;
+		*|\?)
+			usage
+			;;
+	esac
+
+	return 0
+}
+
+main "$@"

Modified: projects/random_number_generator/release/i386/mk-vmimage.sh
==============================================================================
--- projects/random_number_generator/release/i386/mk-vmimage.sh	Wed Oct 15 09:28:45 2014	(r273127)
+++ projects/random_number_generator/release/i386/mk-vmimage.sh	Wed Oct 15 12:37:56 2014	(r273128)
@@ -32,7 +32,7 @@
 # $FreeBSD$
 #
 
-PATH="/bin:/usr/bin:/sbin:/usr/sbin"
+PATH="/bin:/usr/bin:/sbin:/usr/sbin:/usr/local/bin:/usr/local/sbin"
 export PATH
 
 usage_vm_base() {
@@ -58,16 +58,25 @@ usage() {
 }
 
 panic() {
-	rc="${1}"
-	shift 1
 	msg="${@}"
 	printf "${msg}\n"
 	if [ ! -z "${mddev}" ]; then
 		mdconfig -d -u ${mddev}
 	fi
+	case ${cmd} in
+		vm-base)
+			# If the vm-base target fails, the vm-image target
+			# cannot possibly succeed.  Touch the .TARGET file
+			# so it is not attempted.
+			touch vm-image
+			;;
+		*)
+			# FALLTHROUGH
+			;;
+	esac
 	# Do not allow one failure case to chain through any remaining image
 	# builds.
-	exit 0
+	return 1
 }
 
 vm_create_baseimage() {
@@ -96,7 +105,7 @@ vm_create_baseimage() {
 	cd ${WORLDDIR} && \
 		make DESTDIR=${DESTDIR} \
 		installworld installkernel distribution || \
-		panic 1 "\n\nCannot install the base system to ${DESTDIR}."
+		panic "\n\nCannot install the base system to ${DESTDIR}."
 	chroot ${DESTDIR} /usr/bin/newaliases
 	echo '# Custom /etc/fstab for FreeBSD VM images' \
 		> ${DESTDIR}/etc/fstab
@@ -111,7 +120,7 @@ vm_create_baseimage() {
 			# This should never happen.  But, it has happened.
 			msg="Cannot umount(8) ${DESTDIR}\n"

*** DIFF OUTPUT TRUNCATED AT 1000 LINES ***


More information about the svn-src-projects mailing list