Hi Kay, On Thu, Jun 23, 2016 at 07:03:19PM +0200, Kay Fuchs wrote: > Hi list, > > i'm on the latest 1.6 version(a7b7ad0d75) and i'm used to compile HAProxy like > > make TARGET=linux2628 USE_PCRE=1 USE_LINUX_SPLICE=1 USE_LINUX_TPROXY=1 > USE_GETADDRINFO=1 USE_OPENSSL=1 SSL_INC=$staticlibssl/include > SSL_LIB=$staticlibssl/lib USE_SLZ=1 SLZ_INC=$libslz/src > SLZ_LIB=$libslz > > and if all went well make install. But since "BUILD/MEDIUM: rebuild > everything when an include file is changed" and "BUILD/MEDIUM: force a > full rebuild if some build options change" make install compiles some > more files, although the binary is allready compiled. The compiled > binary seems not to be ready. For example it doesn't understand the > keyword "ssl" in the bind line. > > If i compile and install in one go like > > make TARGET=linux2628 USE_PCRE=1 USE_LINUX_SPLICE=1 USE_LINUX_TPROXY=1 > USE_GETADDRINFO=1 USE_OPENSSL=1 SSL_INC=$staticlibssl/include > SSL_LIB=$staticlibssl/lib USE_SLZ=1 SLZ_INC=$libslz/src > SLZ_LIB=$libslz install > > all is well.
So now I understand what's happening. It's interesting because the only reason it used to work is precisely due to the lack of controls. The "make install" target depends on "haproxy", so it is supposed to be called with exactly the same options. For example if you would run "make" with certain options and it fails, then run "make install", it would have caused a build of the failed files with different options resulting in something odd. I'm seeing two options : 1) perform a check in the "install" target to force all the same options to be passed again to "make install" as to "make". I find this quite cumbersome and counter-intuitive for users, and is often a pain to put into distro packages because these two operations are performed at different places. 2) simply remove the dependency between "install" and anything else. If "make install" is called before "make", it will simply fail as do many other products in the same situation. If it is called after, it will install what was previously built. I'm willing to go for #2 now which is (in my opinion) the safest solution and the least cumbersome for users. If people have problems with that being done into 1.6, I can also revert the two patches that fix the build dependencies, but I'd prefer to keep them to stop having to ask users to perform a clean rebuild after each bug report. For 1.7 I'm going for #2 right now anyway to address this issue for now. Regards, Willy