Discussion:
[john-dev] Linux x86_64
a***@lx42.de
2017-10-26 11:19:17 UTC
Permalink
Hello,

I am new to this mailinglist, because I compiled jtr on a few
platforms and ran into various problems.

Here is one problem on a machine, where i compiled the
john-1.8.0-jumbo-1 sucessfully, but not the git version from yesterday.

$ /nfs__share/ae/cc/189/JohnTheRipper/src>ll ../run/kernels
total 0
$ /nfs__share/ae/cc/189/JohnTheRipper/src>

Regards,
Alexander

screenlog:
/nfs__share/ae/cc/189/JohnTheRipper/src>CFLAGS="$CFLAGS $cflags
-I$asx_prefix/include" LDFLAGS="$LDFLAGS $ldflags -L$asx_prefix/lib"
OPENSSL_LIBS="$asx_pref
ix/lib/libssl.a $asx_prefix/lib/libcrypto.a"
OPENSSL_CFLAGS="-I$asx_prefix/include -L$asx_prefix/lib" ./configure
--prefix="$asx_prefix"
checking build system type... x86_64-unknown-linux-gnu
checking host system type... x86_64-unknown-linux-gnu
checking whether to compile using MPI... no
checking for gcc... gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables...
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... none needed
checking whether gcc understands -c and -o together... yes
checking whether we are using the GNU C compiler... (cached) yes
checking whether gcc accepts -g... (cached) yes
checking for gcc option to accept ISO C89... (cached) none needed
checking whether gcc understands -c and -o together... (cached) yes
checking additional paths... -L/usr/local/lib -I/usr/local/include
checking arg check macro for -m with gcc... yes
checking arg check macro for -Q with gcc... no
checking if gcc supports -funroll-loops... yes
checking if gcc supports -Os... yes
checking if gcc supports -finline-functions... yes
checking if gcc supports -Og... no
checking if gcc supports -Wall... yes
checking if gcc supports -Wdeclaration-after-statement... yes
checking if gcc supports -fomit-frame-pointer... yes
checking if gcc supports --param allow-store-data-races=0... no
checking if gcc supports -Wno-deprecated-declarations... yes
checking if gcc supports -Wformat-extra-args... no
checking if gcc supports -Wunused-but-set-variable... yes
checking if gcc supports -std=gnu89... yes
checking if gcc supports -Wdate-time... no
checking whether ln -s works... yes
checking for grep that handles long lines and -e... /bin/grep
checking for a sed that does not truncate output... /bin/sed
checking for GNU make... make
checking whether make sets $(MAKE)... yes
checking how to run the C preprocessor... gcc -E
checking for a thread-safe mkdir -p... /bin/mkdir -p
checking for sort... /bin/sort
checking for find... /usr/bin/find
checking for perl... /usr/bin/perl
checking for ar... ar
checking for strip... strip
checking for pkg-config... /usr/bin/pkg-config
checking pkg-config is at least version 0.9.0... yes
checking if pkg-config will be used... yes
checking for egrep... /bin/grep -E
checking for ANSI C header files... yes
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
checking size of short... 2
checking size of int... 4
checking size of long... 8
checking size of long long... 8
checking size of wchar_t... 4
checking size of int *... 8
checking size of void *... 8
configure: Testing build host's native CPU features
checking for Hyperthreading... yes
checking for MMX... yes
checking for SSE2... yes
checking for SSSE3... no
checking for arch.h alternative... x86-64.h
checking whether compiler understands -march=native... no
checking whether compiler understands -xarch=native64... no
checking whether compiler understands -xarch=native... no
checking whether compiler understands -arch host... no
checking for 32/64 bit... 64-bit
checking for extra ASFLAGS... None needed
checking for X32 ABI... no
checking for byte ordering according to target triple... little
checking for OPENSSL... yes
checking for sqrt in -lm... yes
checking for deflate in -lz... yes
checking for library containing crypt... -lcrypt
checking gmp.h usability... yes
checking gmp.h presence... yes
checking for gmp.h... yes
checking for __gmpz_init in -lgmp... yes
checking skey.h usability... no
checking skey.h presence... no
checking for skey.h... no
checking for S/Key... using our own code
checking bzlib.h usability... yes
checking bzlib.h presence... yes
checking for bzlib.h... yes
checking for main in -lbz2... yes
checking for main in -lkernel32... no
checking for dlopen in -ldl... yes
checking intrin.h usability... no
checking intrin.h presence... no
checking for intrin.h... no
checking openssl/cmac.h usability... yes
checking openssl/cmac.h presence... no
configure: WARNING: openssl/cmac.h: accepted by the compiler, rejected
by the preprocessor!
configure: WARNING: openssl/cmac.h: proceeding with the compiler's result
checking for openssl/cmac.h... yes
checking librexgen/version.h usability... no
checking librexgen/version.h presence... no
checking for librexgen/version.h... no
checking pcap.h usability... yes
checking pcap.h presence... yes
checking for pcap.h... yes
checking for pcap_compile in -lpcap... yes
checking for pcap.h... (cached) yes
checking for pcap_compile in -lwpcap... no
checking whether time.h and sys/time.h may both be included... yes
checking whether string.h and strings.h may both be included... yes
checking for SHA256... yes
checking for WHIRLPOOL... yes
checking for RIPEMD160... yes
checking for AES_encrypt... yes
checking for gcc option to support OpenMP... unsupported
checking additional paths for OpenCL... none
checking if compiler needs -Werror to reject unknown flags... no
checking for the pthreads library -lpthreads... no
checking whether pthreads work without any flags... no
checking whether pthreads work with -Kthread... no
checking whether pthreads work with -kthread... no
checking for the pthreads library -llthread... no
checking whether pthreads work with -pthread... yes
checking for joinable pthread attribute... PTHREAD_CREATE_JOINABLE
checking if more special flags are required for pthreads... no
checking for PTHREAD_PRIO_INHERIT... no
checking whether we are using the Microsoft C compiler... no
checking CL/cl.h usability... no
checking CL/cl.h presence... no
checking for CL/cl.h... no
checking OpenCL/cl.h usability... no
checking OpenCL/cl.h presence... no
checking for OpenCL/cl.h... no
checking windows.h usability... no
checking windows.h presence... no
checking for windows.h... no
checking for OpenCL library... no
checking arpa/inet.h usability... yes
checking arpa/inet.h presence... yes
checking for arpa/inet.h... yes
checking crypt.h usability... yes
checking crypt.h presence... yes
checking for crypt.h... yes
checking dirent.h usability... yes
checking dirent.h presence... yes
checking for dirent.h... yes
checking fcntl.h usability... yes
checking fcntl.h presence... yes
checking for fcntl.h... yes
checking limits.h usability... yes
checking limits.h presence... yes
checking for limits.h... yes
checking locale.h usability... yes
checking locale.h presence... yes
checking for locale.h... yes
checking malloc.h usability... yes
checking malloc.h presence... yes
checking for malloc.h... yes
checking net/ethernet.h usability... yes
checking net/ethernet.h presence... yes
checking for net/ethernet.h... yes
checking netdb.h usability... yes
checking netdb.h presence... yes
checking for netdb.h... yes
checking netinet/in.h usability... yes
checking netinet/in.h presence... yes
checking for netinet/in.h... yes
checking netinet/in_systm.h usability... yes
checking netinet/in_systm.h presence... yes
checking for netinet/in_systm.h... yes
checking for string.h... (cached) yes
checking for strings.h... (cached) yes
checking sys/ethernet.h usability... no
checking sys/ethernet.h presence... no
checking for sys/ethernet.h... no
checking sys/file.h usability... yes
checking sys/file.h presence... yes
checking for sys/file.h... yes
checking sys/param.h usability... yes
checking sys/param.h presence... yes
checking for sys/param.h... yes
checking sys/socket.h usability... yes
checking sys/socket.h presence... yes
checking for sys/socket.h... yes
checking sys/time.h usability... yes
checking sys/time.h presence... yes
checking for sys/time.h... yes
checking sys/times.h usability... yes
checking sys/times.h presence... yes
checking for sys/times.h... yes
checking for sys/types.h... (cached) yes
checking termios.h usability... yes
checking termios.h presence... yes
checking for termios.h... yes
checking for unistd.h... (cached) yes
checking unixlib/local.h usability... no
checking unixlib/local.h presence... no
checking for unixlib/local.h... no
checking for windows.h... (cached) no
checking for net/if.h... yes
checking for net/if_arp.h... yes
checking for netinet/if_ether.h... yes
checking for netinet/ip.h... yes
checking for stdbool.h that conforms to C99... yes
checking for _Bool... yes
checking for inline... inline
checking for int32_t... yes
checking for int64_t... yes
checking for off_t... yes
checking for size_t... yes
checking for ssize_t... yes
checking for uint16_t... yes
checking for uint32_t... yes
checking for uint64_t... yes
checking for uint8_t... yes
checking for ptrdiff_t... yes
checking for int128... no
checking for __int128... no
checking for __int128_t... yes
checking for error_at_line... yes
checking for pid_t... yes
checking vfork.h usability... no
checking vfork.h presence... no
checking for vfork.h... no
checking for fork... yes
checking for vfork... yes
checking for working fork... yes
checking for working vfork... (cached) yes
checking for fseek64... no
checking for fseeko... yes
checking for fseeko64... yes
checking for _fseeki64... no
checking for lseek64... yes
checking for lseek... yes
checking for ftell64... no
checking for ftello... yes
checking for ftello64... yes
checking for _ftelli64... no
checking for fopen64... yes
checking for _fopen64... no
checking for memmem... yes
checking for mmap... yes
checking for sleep... yes
checking for setenv... yes
checking for putenv... yes
checking for strcasecmp... yes
checking for strncasecmp... yes
checking for stricmp... no
checking for strcmpi... no
checking for _stricmp... no
checking for _strcmpi... no
checking for strnicmp... no
checking for strncmpi... no
checking for _strnicmp... no
checking for _strncmpi... no
checking for strnlen... yes
checking for strlwr... no
checking for strupr... no
checking for strrev... no
checking for atoll... yes
checking for _atoi64... no
checking for snprintf... yes
checking for sprintf_s... no
checking for strcasestr... yes
checking for clGetKernelArgInfo... no
checking for posix_memalign... yes
checking for yasm that supports "-g dwarf2 -f elf64"...
checking for OS-specific feature macros needed... -D_POSIX_SOURCE
-D_GNU_SOURCE -D_XOPEN_SOURCE=600
checking size of size_t... 8
checking size of off_t... 8
configure: Fuzz check disabled
configure: Fuzzing (using libFuzzer) check disabled
configure: creating *_plug.c and OpenCL object rules
configure: creating Makefile dependencies
configure: creating ./john_build_rule.h
configure: creating ./config.status
config.status: creating Makefile
config.status: creating aes/Makefile
config.status: creating aes/aesni/Makefile
config.status: creating aes/openssl/Makefile
config.status: creating secp256k1/Makefile
config.status: creating escrypt/Makefile
config.status: creating autoconfig.h
config.status: linking x86-64.h to arch.h
config.status: executing default commands
configure: creating ./fmt_externs.h
configure: creating ./fmt_registers.h

configure: WARNING: No recognized optimization option present in CFLAGS

Configured for building John the Ripper jumbo:

Target CPU ................................. x86_64 SSE2, 64-bit LE
AES-NI support ............................. depends on OpenSSL
Target OS .................................. linux-gnu
Cross compiling ............................ no
Legacy arch header ......................... x86-64.h

Optional libraries/features found:
Fuzzing test ............................... no
Experimental code .......................... no
OpenMPI support (default disabled) ......... no
Fork support ............................... yes
OpenMP support ............................. no
OpenCL support ............................. no
Generic crypt(3) format .................... yes
librexgen (regex cracking mode) ............ no
libgmp (PRINCE mode and faster SRP formats) yes
libpcap (vncpcap2john and SIPdump) ......... yes
libz (pkzip format, gpg2john) .............. yes
libbz2 (gpg2john extra decompression logic) yes
128-bit integer (faster PRINCE mode) ....... yes
Memory map (share/page large files) ........ yes
ZTEX USB-FPGA module 1.15y support ......... no

Development options (these may hurt performance when enabled):
Memdbg memory debugging settings ........... disabled
AddressSanitizer ("ASan") .................. disabled
UndefinedBehaviorSanitizer ("UbSan") ....... disabled

Install missing libraries to get any needed features that were omitted.

Configure finished. Now 'make clean && make -s' to compile.
]0;***@lab189:/nfs__share/ae/cc/189/JohnTheRipper/src0
nfs__lab189 /nfs__share/ae/cc/189/JohnTheRipper/src>make
clean && make
rm -f ../run/john ../run/unshadow ../run/unafs ../run/unique
../run/undrop ../run/rar2john ../run/zip2john ../run/genmkvpwd
../run/mkvcalcproba ../run/calc_stat ../run/tgtsnarf ../run/racf2john
../run/hccap2john ../run/raw2dyna ../run/keepass2john
../run/bitlocker2john ../run/dmg2john ../run/putty2john
../run/uaf2john ../run/wpapcap2john ../run/gpg2john ../run/cprepair
../run/base64conv ../run/SIPdump ../run/vncpcap2john ../run/eapmd5tojohn
rm -f john-macosx-* *.o escrypt/*.o *.bak core
rm -f ../run/kernels/*
rm -f lzma/*.o
rm -f detect bench generic.h tmp.s
rm -f *~
cp /dev/null Makefile.dep
make[1]: Entering directory `/nfs__share/ae/cc/189/JohnTheRipper/src/aes'
/usr/bin/find . -name \*.a -exec /bin/rm -f {} \;
/usr/bin/find . -name \*.o -exec /bin/rm -f {} \;
make[1]: Leaving directory `/nfs__share/ae/cc/189/JohnTheRipper/src/aes'
make[1]: Entering directory
`/nfs__share/ae/cc/189/JohnTheRipper/src/secp256k1'
/usr/bin/find . -name \*.a -exec /bin/rm -f {} \;
/usr/bin/find . -name \*.o -exec /bin/rm -f {} \;
make[1]: Leaving directory `/nfs__share/ae/cc/189/JohnTheRipper/src/secp256k1'
make[1]: Entering directory `/nfs__share/ae/cc/189/JohnTheRipper/src/escrypt'
/bin/rm -f tests crypto_scrypt-best.o crypto_scrypt-common.o sha256.o
tests.o crypto_scrypt-*.o
make[1]: Leaving directory `/nfs__share/ae/cc/189/JohnTheRipper/src/escrypt'
make find_version
make[1]: Entering directory `/nfs__share/ae/cc/189/JohnTheRipper/src'
/bin/mkdir -p ../run/kernels
cp ../run/kernels ../run/kernels
cp: omitting directory `../run/kernels'
make[1]: *** [opencl/7z_kernel.cl] Error 1
make[1]: Leaving directory `/nfs__share/ae/cc/189/JohnTheRipper/src'
make: *** [default] Error 2
]0;***@lab189:/nfs__share/ae/cc/189/JohnTheRipper/src2
nfs__lab189 /nfs__share/ae/cc/189/JohnTheRipper/src>
2 nfs__lab189 /nfs__share/ae/cc/189/JohnTheRipper/src>
Solar Designer
2017-10-26 12:12:39 UTC
Permalink
Hi,
Post by a***@lx42.de
I am new to this mailinglist, because I compiled jtr on a few
platforms and ran into various problems.
Your message would be more appropriate for the john-users list than for
john-dev. You're reporting a problem rather than intend to participate
in JtR development (as far as I can tell from your message).
Post by a***@lx42.de
make clean && make
[...]
Post by a***@lx42.de
make[1]: Entering directory
`/nfs__share/ae/cc/189/JohnTheRipper/src/escrypt'
/bin/rm -f tests crypto_scrypt-best.o crypto_scrypt-common.o sha256.o
tests.o crypto_scrypt-*.o
make[1]: Leaving directory `/nfs__share/ae/cc/189/JohnTheRipper/src/escrypt'
make find_version
make[1]: Entering directory `/nfs__share/ae/cc/189/JohnTheRipper/src'
/bin/mkdir -p ../run/kernels
cp ../run/kernels ../run/kernels
cp: omitting directory `../run/kernels'
make[1]: *** [opencl/7z_kernel.cl] Error 1
I can't reproduce the problem. For me, this looks as follows:

make[1]: Entering directory `/home/solar/j/bleeding-jumbo-20171026/src/escrypt'
/bin/rm -f tests crypto_scrypt-best.o crypto_scrypt-common.o sha256.o tests.o crypto_scrypt-*.o
make[1]: Leaving directory `/home/solar/j/bleeding-jumbo-20171026/src/escrypt'
make find_version
make[1]: Entering directory `/home/solar/j/bleeding-jumbo-20171026/src'
/bin/mkdir -p ../run/kernels
cp opencl_device_info.h ../run/kernels
cp opencl_misc.h ../run/kernels

... and so on.

In your case, the "cp ../run/kernels ../run/kernels" command is clearly
wrong, but it is unclear why it became so wrong.

magnum, on a related note, maybe we should have configure suggest "-j"
in the second make, e.g. replace:

Configure finished. Now 'make clean && make -s' to compile.

with:

Configure finished. Now 'make clean && make -sj8' to compile.

given that almost everyone is on a multi-core machine these days.
Ideally, we'd determine and include the logical CPU count in there, but
even a generally reasonable constant like 8 would do.

Alexander
Solar Designer
2017-10-26 13:15:03 UTC
Permalink
Post by a***@lx42.de
/nfs__share/ae/cc/189/JohnTheRipper/src>CFLAGS="$CFLAGS $cflags
-I$asx_prefix/include" LDFLAGS="$LDFLAGS $ldflags -L$asx_prefix/lib"
OPENSSL_LIBS="$asx_pref
ix/lib/libssl.a $asx_prefix/lib/libcrypto.a"
OPENSSL_CFLAGS="-I$asx_prefix/include -L$asx_prefix/lib" ./configure
--prefix="$asx_prefix"
checking build system type... x86_64-unknown-linux-gnu
checking host system type... x86_64-unknown-linux-gnu
So this looks like a custom or at least unusual Linux distro (or at
least build of gcc), and you use custom build options.
Post by a***@lx42.de
configure: Testing build host's native CPU features
checking for Hyperthreading... yes
checking for MMX... yes
checking for SSE2... yes
checking for SSSE3... no
It is rather unusual to have a CPU supporting SSE2 yet not SSSE3 these
days. I'd guess this non-detection of SSSE3 is a side-effect of the
overridden CFLAGS, but I can't reproduce it. So are you actually on a
currently rare early x86-64 CPU from prior to 2006 or so? What is it?
Post by a***@lx42.de
configure: WARNING: No recognized optimization option present in CFLAGS
So you'd have a highly unoptimal build, even if the build worked,
because of you having overridden the CFLAGS.

None of this is directly related to the build failure, but it indicates
that your build is highly unusual in general.

As to the build failure, what's your version of "make" - e.g., what does
"make -v" say?
Post by a***@lx42.de
OpenCL support ............................. no
magnum, when we build without OpenCL support, can we possibly have it
skip copying of the OpenCL kernels? (The copying should have succeeded
anyway, but let's use this as a reminder of this possible improvement.)

Alexander
a***@lx42.de
2017-10-26 13:39:52 UTC
Permalink
Post by Solar Designer
Post by a***@lx42.de
/nfs__share/ae/cc/189/JohnTheRipper/src>CFLAGS="$CFLAGS $cflags
-I$asx_prefix/include" LDFLAGS="$LDFLAGS $ldflags -L$asx_prefix/lib"
OPENSSL_LIBS="$asx_pref
ix/lib/libssl.a $asx_prefix/lib/libcrypto.a"
OPENSSL_CFLAGS="-I$asx_prefix/include -L$asx_prefix/lib" ./configure
--prefix="$asx_prefix"
checking build system type... x86_64-unknown-linux-gnu
checking host system type... x86_64-unknown-linux-gnu
So this looks like a custom or at least unusual Linux distro (or at
least build of gcc), and you use custom build options.
The flags are for openssl only. It is openssl-1.0.2k in this case.
Post by Solar Designer
Post by a***@lx42.de
configure: Testing build host's native CPU features
checking for Hyperthreading... yes
checking for MMX... yes
checking for SSE2... yes
checking for SSSE3... no
It is rather unusual to have a CPU supporting SSE2 yet not SSSE3 these
days. I'd guess this non-detection of SSSE3 is a side-effect of the
overridden CFLAGS, but I can't reproduce it. So are you actually on a
currently rare early x86-64 CPU from prior to 2006 or so? What is it?
The OS is CentOS 4.1, the CPU has the ability, but the kernel is
unable to do ssse3:

model name : Intel(R) Xeon(R) CPU E5-4620 v2 @ 2.60GHz
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge
mca cmov pat pse36 clflush dts mmx fxsr sse sse2 ss ht syscall nx lm
pni cx16 ts
Post by Solar Designer
Post by a***@lx42.de
configure: WARNING: No recognized optimization option present in CFLAGS
So you'd have a highly unoptimal build, even if the build worked,
because of you having overridden the CFLAGS.
I like to append the options, how do I achieve this?
Post by Solar Designer
None of this is directly related to the build failure, but it indicates
that your build is highly unusual in general.
The machines are rather old to ensure compatiblity for newer machines.
So upgrading is not an option.
Post by Solar Designer
As to the build failure, what's your version of "make" - e.g., what does
"make -v" say?
GNU Make 3.80

Best Regards,
Alexander
Solar Designer
2017-10-26 19:15:32 UTC
Permalink
Post by a***@lx42.de
Post by Solar Designer
Post by a***@lx42.de
/nfs__share/ae/cc/189/JohnTheRipper/src>CFLAGS="$CFLAGS $cflags
-I$asx_prefix/include" LDFLAGS="$LDFLAGS $ldflags -L$asx_prefix/lib"
OPENSSL_LIBS="$asx_pref
ix/lib/libssl.a $asx_prefix/lib/libcrypto.a"
OPENSSL_CFLAGS="-I$asx_prefix/include -L$asx_prefix/lib" ./configure
--prefix="$asx_prefix"
checking build system type... x86_64-unknown-linux-gnu
checking host system type... x86_64-unknown-linux-gnu
So this looks like a custom or at least unusual Linux distro (or at
least build of gcc), and you use custom build options.
The flags are for openssl only. It is openssl-1.0.2k in this case.
What's in the $CFLAGS $cflags and $LDFLAGS $ldflags environment
variables before you run the configure command?
Post by a***@lx42.de
Post by Solar Designer
Post by a***@lx42.de
configure: Testing build host's native CPU features
checking for Hyperthreading... yes
checking for MMX... yes
checking for SSE2... yes
checking for SSSE3... no
It is rather unusual to have a CPU supporting SSE2 yet not SSSE3 these
days. I'd guess this non-detection of SSSE3 is a side-effect of the
overridden CFLAGS, but I can't reproduce it. So are you actually on a
currently rare early x86-64 CPU from prior to 2006 or so? What is it?
The OS is CentOS 4.1, the CPU has the ability, but the kernel is
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge
mca cmov pat pse36 clflush dts mmx fxsr sse sse2 ss ht syscall nx lm
pni cx16 ts
I understand that a kernel this old wouldn't detect SSSE3, but that
doesn't mean JtR's configure also wouldn't, because SSSE3 doesn't
require any special support from the kernel to be usable in userspace.
(AVX does. So you should be able to use up to SSE4.1 with this old
kernel, unfortunately not using this CPU's AVX support.)

I think the reason for non-detection of SSSE3+ here is old gcc: our
configure script test for SSSE3 tries to compile a tiny program that
uses an SSSE3 intrinsic.

So this is sort of "fine". In fact, it might have saved you from worse
problems if the code compiled for AVX but failed to run on this kernel.
Post by a***@lx42.de
Post by Solar Designer
Post by a***@lx42.de
configure: WARNING: No recognized optimization option present in CFLAGS
So you'd have a highly unoptimal build, even if the build worked,
because of you having overridden the CFLAGS.
I like to append the options, how do I achieve this?
Per my testing, the only important option that is lost when you override
CFLAGS is -O2, so simply include -O2 in your own CFLAGS. The rest of
our custom CFLAGS are added on top of those you specify.
Post by a***@lx42.de
Post by Solar Designer
None of this is directly related to the build failure, but it indicates
that your build is highly unusual in general.
The machines are rather old to ensure compatiblity for newer machines.
So upgrading is not an option.
CentOS 4.1 is ridiculously old for this hardware, not letting you use it
fully, but OK. I'm surprised it runs there at all. BTW, besides not
supporting AVX in the kernel and not supporting SSSE3+ in gcc, I guess
it also fails to enable turbo boost on these CPUs.
Post by a***@lx42.de
Post by Solar Designer
As to the build failure, what's your version of "make" - e.g., what does
"make -v" say?
GNU Make 3.80
OK, we might try to reproduce the problem with that.

Meanwhile, you may try newer GNU make and optionally newer gcc (but then
you'd have to disable AVX manually) in your home directory.

Alexander
Solar Designer
2017-10-26 19:42:53 UTC
Permalink
Post by Solar Designer
Post by a***@lx42.de
GNU Make 3.80
OK, we might try to reproduce the problem with that.
I just did: the problem manifests itself just like this when using GNU
Make 3.80, but goes away with 3.81.

magnum, we have this weird make rule:

%.cl: | ../run/kernels
$(CP) $< ../run/kernels

Do we really need it like that? I'm not familiar with that trick, and
couldn't easily find it in documentation - the '|' character isn't in
the index here:

https://www.gnu.org/software/make/manual/html_node/Concept-Index.html#Concept-Index

Maybe we can avoid it to relax the GNU Make version requirement?

Alternatively, we can use this test as an opportunity to document the
exact minimum version of GNU Make we require in jumbo - now we know it's
3.81 or newer.

Alexander
magnum
2017-10-26 20:05:01 UTC
Permalink
Post by Solar Designer
Post by Solar Designer
Post by a***@lx42.de
GNU Make 3.80
OK, we might try to reproduce the problem with that.
I just did: the problem manifests itself just like this when using GNU
Make 3.80, but goes away with 3.81.
%.cl: | ../run/kernels
$(CP) $< ../run/kernels
Do we really need it like that? I'm not familiar with that trick, and
couldn't easily find it in documentation - the '|' character isn't in
https://www.gnu.org/software/make/manual/html_node/Concept-Index.html#Concept-Index
I can't even remember what it does... we need to figure that out >.<
Post by Solar Designer
Maybe we can avoid it to relax the GNU Make version requirement?
Alternatively, we can use this test as an opportunity to document the
exact minimum version of GNU Make we require in jumbo - now we know it's
3.81 or newer.
That would be an alternative. I wonder how we could make 'make' itself
bail with an informative message if it's too old...

magnum
magnum
2017-11-07 07:18:36 UTC
Permalink
Post by magnum
%.cl:    | ../run/kernels
    $(CP) $< ../run/kernels
Do we really need it like that?  I'm not familiar with that trick, and
couldn't easily find it in documentation - the '|' character isn't in
https://www.gnu.org/software/make/manual/html_node/Concept-Index.html#Concept-Index
I can't even remember what it does... we need to figure that out >.<
https://www.gnu.org/software/make/manual/html_node/Prerequisite-Types.html

Without the pipe sign, a changed timestamp on ../run/kernels would
trigger an unwanted "rebuild" of the target (since a directory's
timestamp will change whenever a file is put there). We just need
../run/kernels to exist at all.

magnum
a***@lx42.de
2017-11-28 20:40:12 UTC
Permalink
Post by magnum
Post by magnum
%.cl:    | ../run/kernels
    $(CP) $< ../run/kernels
Do we really need it like that?  I'm not familiar with that trick, and
couldn't easily find it in documentation - the '|' character isn't in
https://www.gnu.org/software/make/manual/html_node/Concept-Index.html#Concept-Index
I can't even remember what it does... we need to figure that out >.<
https://www.gnu.org/software/make/manual/html_node/Prerequisite-Types.html
Without the pipe sign, a changed timestamp on ../run/kernels would
trigger an unwanted "rebuild" of the target (since a directory's
timestamp will change whenever a file is put there). We just need
../run/kernels to exist at all.
I've removed the both rules and it worked. ;)

====
opencl_%.h: | ../run/kernels
$(CP) $< ../run/kernels

%.cl: | ../run/kernels
$(CP) $< ../run/kernels
===


Question: to what value expands $< in this context? ==> $(CP) $< $<

Regards,
Alexander

Loading...