Subject: [PATCH v2 0/2] When DC_SHA1 was made the default we missed a spot

From: Ævar Arnfjörð Bjarmason <[email-masked]>
Date: Thu, 28 Dec 2017 14:07:40 +0000

On Wed, Dec 27 2017, Jonathan Nieder jotted:

Here's v2, the only changes are to the commit messages.

> Ævar Arnfjörð Bjarmason wrote:
>
>> Stop supplying BLK_SHA1=YesPlease when NO_OPENSSL=UnfortunatelyYes is
>> supplied. This has been done ever since [1], when switching to DC_SHA1
>> by default in [2] this should have been changed as well.
>
> I had trouble parsing this, I think for a few reasons:
>
>  1. Too much 'this', so I end up not being able to keep track of what
>     has been done ever since (1) and (2)
>
>  2. The ',' should be a ';'
>
>  3. Can the commit names go inline in the message instead of being
>     footnotes?  That way, my eye doesn't have to chase so far to
>     find what kind of dates you are talking about.
>
>  4. Why should switching to DC_SHA1 by default have resulted in
>     simply dropping the NO_OPENSSL => BLK_SHA1 behavior?  At first
>     glance it would be more intuitive to change it to
>     NO_OPENSSL => DC_SHA1 instead.
>
> Putting those all together, I end up with
>
>  Use the collision detecting SHA-1 implementation by default even
>  when NO_OPENSSL is set.
>
>  Setting NO_OPENSSL=UnfortunatelyYes has implied BLK_SHA1=1 ever since
>  the former was introduced in dd53c7ab29 (Support for NO_OPENSSL,
>  2005-07-29).  That implication should have been removed when the
>  default SHA-1 implementation changed from OpenSSL to DC_SHA1 in
>  e6b07da278 (Makefile: make DC_SHA1 the default, 2017-03-17).  Finish
>  what that commit started by removing the BLK_SHA1 fallback setting so
>  the default DC_SHA1 implementation can be used.

Thanks. I've used that as-is, and also changed 2/2 to inline the
comment references.

> What happens if I set both OPENSSL_SHA1 and NO_OPENSSL?  Should this
> block set
>
> 	OPENSSL_SHA1 =
>
> so that the latter wins, or should we detect it as an error?

We fail at link-time if you supply both, but that's something that
happens alredy in master.

It's probably not worth the effort to add an $(error ...) for that to
the Makefile (I've added some of these already) since the error should
be fairly obvious, as opposed to some of the subtle "that doesn't work
like that anymore" errorors I've added recently for other topics.

> [...]
>> --- a/Makefile
>> +++ b/Makefile
>> @@ -23,7 +23,6 @@ all::
>>  # it at all).
>>  #
>>  # Define NO_OPENSSL environment variable if you do not have OpenSSL.
>> -# This also implies BLK_SHA1.
>>  #
>>  # Define USE_LIBPCRE if you have and want to use libpcre. Various
>>  # commands such as log and grep offer runtime options to use
>> @@ -1260,7 +1259,6 @@ ifndef NO_OPENSSL
>>  	endif
>>  else
>>  	BASIC_CFLAGS += -DNO_OPENSSL
>> -	BLK_SHA1 = 1
>>  	OPENSSL_LIBSSL =
>>  endif
>>  ifdef NO_OPENSSL
>> diff --git a/configure.ac b/configure.ac
>> index 2f55237e65..7f8415140f 100644
>> --- a/configure.ac
>> +++ b/configure.ac
>> @@ -241,7 +241,6 @@ AC_MSG_NOTICE([CHECKS for site configuration])
>>  # a bundled SHA1 routine optimized for PowerPC.
>>  #
>>  # Define NO_OPENSSL environment variable if you do not have OpenSSL.
>> -# This also implies BLK_SHA1.
>
> With or without some of those commit message tweaks
> Reviewed-by: Jonathan Nieder <[email-masked]>

Thanks!

Ævar Arnfjörð Bjarmason (2):
  Makefile: NO_OPENSSL=1 should no longer imply BLK_SHA1=1
  Windows: stop supplying BLK_SHA1=YesPlease by default

 Makefile         | 2 --
 config.mak.uname | 1 -
 configure.ac     | 1 -
 3 files changed, 4 deletions(-)

-- 
2.15.1.424.g9478a66081