Re: parallel make broken

2013-06-22 Thread Mike Frysinger
On Wednesday 19 June 2013 07:21:39 Ben Laurie wrote:
 On 18 June 2013 22:35, Mike Frysinger vap...@gentoo.org wrote:
  On Tuesday 18 June 2013 07:37:55 Richard Weinberger wrote:
  While building openssl-1.0.1e I noticed that the parallel build
  is broken.
  
  yes, it's pretty much always been broken
  
  I found this patch on the net:
  http://sources.gentoo.org/cgi-bin/viewvc.cgi/gentoo-x86/dev-libs/openssl
  /fi les/openssl-1.0.1-parallel-build.patch With it applied openssl
  builds fine in parallel.
  
  heh, you've found me!  the referenced ticket says it's been merged, but
  it doesn't seem that way (at least for the latest branch).
 
 You are right it hasn't been merged. One problem with it is it doesn't
 work with BSD make (BSD make doesn't understand | in dependencies).

true, but the patch posted to RT didn't include that, and that usage shows up 
only twice in the current Gentoo patch.  plenty of the other parts can be 
merged now so it's not nearly as terrible.

i wonder if the | can be written instead like:
lib:
$(MAKE) subdirs
$(MAKE) $(LIB)
@touch lib
$(LIB): $(LIBOBJ)
...
-mike


signature.asc
Description: This is a digitally signed message part.


Re: [Patch] ALPN Implementation for OpenSSL

2013-06-22 Thread Ben Laurie
On 21 June 2013 02:29, Thor Lancelot Simon t...@panix.com wrote:
 On Thu, Jun 20, 2013 at 09:30:32PM +, Jeff Mendoza (MS OPEN TECH) wrote:
  Yeah, my point was that in the perfect world, you'd support both at
  runtime (at least on the server-side) and either ALPN or NPN could be
  used. I want to have a library that supports both, not either-or.

 Yes, supporting both at runtime would be best. But having a compile-time 
 option now, and defaulting to NPN should keep this from being a blocking 
 issue with the patch, correct?

 I don't speak for the OpenSSL project, but I'd suggest they should treat
 it as one.  It positively reeks of embrace and extend.  After all, the
 effect is to force all build systems producing system default packages
 of OpenSSL to pick one way or the other, ensuring that both won't work
 at the same time.

That's not really embrace and extend, but nevertheless it seems like
an unacceptable design choice.

I suggest you need to figure out how to make both ALPN and NPN work in
a single build to have any chance of acceptance at all.
__
OpenSSL Project http://www.openssl.org
Development Mailing List   openssl-dev@openssl.org
Automated List Manager   majord...@openssl.org


Re: parallel make broken

2013-06-22 Thread Ben Laurie
On 22 June 2013 19:04, Mike Frysinger vap...@gentoo.org wrote:
 On Wednesday 19 June 2013 07:21:39 Ben Laurie wrote:
 On 18 June 2013 22:35, Mike Frysinger vap...@gentoo.org wrote:
  On Tuesday 18 June 2013 07:37:55 Richard Weinberger wrote:
  While building openssl-1.0.1e I noticed that the parallel build
  is broken.
 
  yes, it's pretty much always been broken
 
  I found this patch on the net:
  http://sources.gentoo.org/cgi-bin/viewvc.cgi/gentoo-x86/dev-libs/openssl
  /fi les/openssl-1.0.1-parallel-build.patch With it applied openssl
  builds fine in parallel.
 
  heh, you've found me!  the referenced ticket says it's been merged, but
  it doesn't seem that way (at least for the latest branch).

 You are right it hasn't been merged. One problem with it is it doesn't
 work with BSD make (BSD make doesn't understand | in dependencies).

 true, but the patch posted to RT didn't include that, and that usage shows up
 only twice in the current Gentoo patch.  plenty of the other parts can be
 merged now so it's not nearly as terrible.

 i wonder if the | can be written instead like:
 lib:
 $(MAKE) subdirs
 $(MAKE) $(LIB)
 @touch lib
 $(LIB): $(LIBOBJ)
 ...

I don't know, but FWIW, I've also been working on -j stuff, but using
the mk1mf script (see the GitConfigure and GitMake scripts in master
and 1.0.2). My version is at least twice as fast as yours - on my
machine :-)

Possibly the right answer is to simply move to a single makefile...
__
OpenSSL Project http://www.openssl.org
Development Mailing List   openssl-dev@openssl.org
Automated List Manager   majord...@openssl.org


[openssl.org #3078] Makefile: install rule builds components

2013-06-22 Thread noloa...@gmail.com via RT
From OpenSSL 1.0.1e (https://www.openssl.org/source/openssl-1.0.1e.tar.gz).

Makefile.org and Makefile's 'install' rule is:

install: all install_docs install_sw

The 'all' rule is default and is:

all: Makefile build_all openssl.pc libssl.pc libcrypto.pc

This should not be a problem from a standard cycle:

./config fips shared ...
make depend
make
make install

However, there are a few problems. First, Stallman states (in his GNU
Make book) that the 'install' rule should copy the executable and
axillary files, and not build objects [1]. This would be a harmless
transgression except it breaks install during cross-compilation.

Second, 'all' appears to have a dependency that is always out of date
(perhaps due to a directory time somewhere). So even if you `make
depend` and then `make` (with 'all' being default), targets will still
be built during 'install'.

Third, the cycle often includes `sudo make install`:

./config fips shared ...
make depend
make
sudo make install

`sudo` drops a user's path so cross-compilation path changes are lost.
When GCC is re-invoked, the required $(CC) (for example,
arm-linuxeabi-gcc) cannot be found.

JW

[1] GNU Make, p. 91.

__
OpenSSL Project http://www.openssl.org
Development Mailing List   openssl-dev@openssl.org
Automated List Manager   majord...@openssl.org


Re: [openssl.org #3078] Makefile: install rule builds components

2013-06-22 Thread noloa...@gmail.com via RT
Below is a sample from Mac OS X. If this was run for Android, then
CC=arm-linuxeabi-gcc and RANLIB=arm-linuxeabi-ranlib. Neither would be
found when sudo drops the user's path.

$./config shared -no-comp -no-sslv2 -no-sslv3
…
$ make depend
…
$ make
...
$ sudo make install
Password:
making all in crypto...
making all in crypto/objects...
make[2]: Nothing to be done for `all'.
making all in crypto/md4...
make[2]: Nothing to be done for `all'.
making all in crypto/md5...
make[2]: Nothing to be done for `all'.
...
making all in crypto/srp...
make[2]: Nothing to be done for `all'.
making all in crypto/cmac...
make[2]: Nothing to be done for `all'.
if [ -n libcrypto.1.0.0.dylib libssl.1.0.0.dylib ]; then \
(cd ..; make libcrypto.1.0.0.dylib); \
fi
[ -z  ] || cc -fPIC -fno-common -DOPENSSL_PIC -DOPENSSL_THREADS
-D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -arch i386 -O3
-fomit-frame-pointer -DL_ENDIAN -DOPENSSL_BN_ASM_PART_WORDS
-DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_GF2m
-DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DMD5_ASM -DRMD160_ASM -DAES_ASM
-DVPAES_ASM -DWHIRLPOOL_ASM -DGHASH_ASM -Iinclude \
-DFINGERPRINT_PREMAIN_DSO_LOAD -o fips_premain_dso  \
fips_premain.c fipscanister.o \
libcrypto.a
making all in ssl...
if [ -n libcrypto.1.0.0.dylib libssl.1.0.0.dylib ]; then \
(cd ..; make libssl.1.0.0.dylib); \
fi
[ -z  ] || cc -fPIC -fno-common -DOPENSSL_PIC -DOPENSSL_THREADS
-D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -arch i386 -O3
-fomit-frame-pointer -DL_ENDIAN -DOPENSSL_BN_ASM_PART_WORDS
-DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_GF2m
-DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DMD5_ASM -DRMD160_ASM -DAES_ASM
-DVPAES_ASM -DWHIRLPOOL_ASM -DGHASH_ASM -Iinclude \
-DFINGERPRINT_PREMAIN_DSO_LOAD -o fips_premain_dso  \
fips_premain.c fipscanister.o \
libcrypto.a
making all in engines...
...

On Thu, Jun 20, 2013 at 2:22 PM, Jeffrey Walton noloa...@gmail.com wrote:
 From OpenSSL 1.0.1e (https://www.openssl.org/source/openssl-1.0.1e.tar.gz).

 Makefile.org and Makefile's 'install' rule is:

 install: all install_docs install_sw

 The 'all' rule is default and is:

 all: Makefile build_all openssl.pc libssl.pc libcrypto.pc

 This should not be a problem from a standard cycle:

 ./config fips shared ...
 make depend
 make
 make install

 However, there are a few problems. First, Stallman states (in his GNU
 Make book) that the 'install' rule should copy the executable and
 axillary files, and not build objects [1]. This would be a harmless
 transgression except it breaks install during cross-compilation.

 Second, 'all' appears to have a dependency that is always out of date
 (perhaps due to a directory time somewhere). So even if you `make
 depend` and then `make` (with 'all' being default), targets will still
 be built during 'install'.

 Third, the cycle often includes `sudo make install`:

 ./config fips shared ...
 make depend
 make
 sudo make install

 `sudo` drops a user's path so cross-compilation path changes are lost.
 When GCC is re-invoked, the required $(CC) (for example,
 arm-linuxeabi-gcc) cannot be found.

__
OpenSSL Project http://www.openssl.org
Development Mailing List   openssl-dev@openssl.org
Automated List Manager   majord...@openssl.org


[openssl.org #3080] Android NEON and CFLAGS options

2013-06-22 Thread noloa...@gmail.com via RT
In reference to
https://android.googlesource.com/platform/ndk/+/ics-mr0/docs/STANDALONE-TOOLCHAIN.html.

It appears there are some flags that should be present when targeting
Neon on Android:

CFLAGS='-march=armv7-a -mfloat-abi=softfp -mfpu=neon'

__
OpenSSL Project http://www.openssl.org
Development Mailing List   openssl-dev@openssl.org
Automated List Manager   majord...@openssl.org


Re: parallel make broken

2013-06-22 Thread Mike Frysinger
On Saturday 22 June 2013 15:07:49 Ben Laurie wrote:
 On 22 June 2013 19:04, Mike Frysinger vap...@gentoo.org wrote:
  On Wednesday 19 June 2013 07:21:39 Ben Laurie wrote:
  On 18 June 2013 22:35, Mike Frysinger vap...@gentoo.org wrote:
   On Tuesday 18 June 2013 07:37:55 Richard Weinberger wrote:
   While building openssl-1.0.1e I noticed that the parallel build
   is broken.
   
   yes, it's pretty much always been broken
   
   I found this patch on the net:
   http://sources.gentoo.org/cgi-bin/viewvc.cgi/gentoo-x86/dev-libs/open
   ssl /fi les/openssl-1.0.1-parallel-build.patch With it applied
   openssl builds fine in parallel.
   
   heh, you've found me!  the referenced ticket says it's been merged,
   but it doesn't seem that way (at least for the latest branch).
  
  You are right it hasn't been merged. One problem with it is it doesn't
  work with BSD make (BSD make doesn't understand | in dependencies).
  
  true, but the patch posted to RT didn't include that, and that usage
  shows up only twice in the current Gentoo patch.  plenty of the other
  parts can be merged now so it's not nearly as terrible.
  
  i wonder if the | can be written instead like:
  lib:
  $(MAKE) subdirs
  $(MAKE) $(LIB)
  @touch lib
  $(LIB): $(LIBOBJ)
  ...
 
 I don't know, but FWIW, I've also been working on -j stuff, but using
 the mk1mf script (see the GitConfigure and GitMake scripts in master
 and 1.0.2). My version is at least twice as fast as yours - on my
 machine :-)

to be fair, i was just trying to make it work rather than rewrite things

unfortunately mk1mf is a perl script, and i've been doing my damnedest to make 
sure perl isn't a requirement to build a base system.  we've been able to 
avoid this so far w/openssl ...

 Possibly the right answer is to simply move to a single makefile...

that might work
-mike


signature.asc
Description: This is a digitally signed message part.