Subject: security/john doesn't use optimised build types
To: None <pkgsrc-users@netbsd.org>
From: Stephen Borrill <netbsd@precedence.co.uk>
List: pkgsrc-users
Date: 11/01/2006 15:10:45
security/john has assembler versions of some of its functions which can be 
selected by specifying a different make target. It has a number of OpenBSD 
targets, but I don't see any reason why these shouldn't be the same for 
NetBSD (certainly the Makefile sections are the same for OpenBSD and 
FreeBSD). Therefore, we ought to add something like the following to 
Makefile:

--- Makefile.orig	2006-11-01 15:01:06.000000000 +0000
+++ Makefile	2006-11-01 15:01:06.000000000 +0000
@@ -29,6 +29,20 @@
  .  endif
  .elif ${OPSYS} == "SunOS" && ${MACHINE_ARCH} == "i386"
  BUILD_TARGET=	solaris-x86-any
+.elif ${OPSYS} == "NetBSD" || ${OPSYS} == "OpenBSD"
+.  if ${MACHINE_ARCH} == "i386"
+BUILD_TARGET=	openbsd-x86-any
+.  elif ${MACHINE_ARCH} == "sparc64"
+BUILD_TARGET=	openbsd-sparc64
+.  elif ${MACHINE_ARCH} == "sparc"
+BUILD_TARGET=	openbsd-sparc
+.  elif ${MACHINE_ARCH} == "alpha"
+BUILD_TARGET=	openbsd-alpha
+.  elif ${MACHINE_ARCH} == "powerpc"
+BUILD_TARGET=	openbsd-powerpc
+.  else
+BUILD_TARGET=	generic
+.  endif
  .else
  BUILD_TARGET=	generic
  .endif

The speed differences are significant. Here's the standard generic 
benchmark (using a newer version than we have in pkgsrc, but I see no 
reason for a major difference):

Benchmarking: Traditional DES [24/32 4K]... DONE
Many salts:     293290 c/s real, 297450 c/s virtual
Only one salt:  278119 c/s real, 278489 c/s virtual

Benchmarking: BSDI DES (x725) [24/32 4K]... DONE
Many salts:     10238 c/s real, 10484 c/s virtual
Only one salt:  10335 c/s real, 10384 c/s virtual

Benchmarking: FreeBSD MD5 [32/32]... DONE
Raw:    5201 c/s real, 5259 c/s virtual

Benchmarking: OpenBSD Blowfish (x32) [32/32]... DONE
Raw:    429 c/s real, 431 c/s virtual

Benchmarking: Kerberos AFS DES [24/32 4K]... DONE
Short:  261132 c/s real, 262440 c/s virtual
Long:   596592 c/s real, 606953 c/s virtual

Benchmarking: NT LM DES [32/32 BS]... DONE
Raw:    3072K c/s real, 3095K c/s virtual

Compare this to openbsd-x86-sse2:

Benchmarking: Traditional DES [128/128 BS SSE2]... DONE
Many salts:     822419 c/s real, 827373 c/s virtual
Only one salt:  740509 c/s real, 741990 c/s virtual

Benchmarking: BSDI DES (x725) [128/128 BS SSE2]... DONE
Many salts:     28308 c/s real, 28308 c/s virtual
Only one salt:  27592 c/s real, 27759 c/s virtual

Benchmarking: FreeBSD MD5 [32/32]... DONE
Raw:    7965 c/s real, 7997 c/s virtual

Benchmarking: OpenBSD Blowfish (x32) [32/32]... DONE
Raw:    394 c/s real, 402 c/s virtual

Benchmarking: Kerberos AFS DES [48/64 4K MMX]... DONE
Short:  172761 c/s real, 173107 c/s virtual
Long:   464734 c/s real, 470367 c/s virtual

Benchmarking: NT LM DES [128/128 BS SSE2]... DONE
Raw:    6068K c/s real, 6068K c/s virtual

Shall I send-pr this?

-- 
Stephen