X-Git-Url: https://diplodocus.org/git/nmh/blobdiff_plain/bd13a50c43f00bd6d206c2400cf65787cbe429f0..7540f02725475698a47046ebf4e55b3e8dea5ab6:/build_nmh diff --git a/build_nmh b/build_nmh index 6e967560..ef6037c1 100755 --- a/build_nmh +++ b/build_nmh @@ -33,7 +33,7 @@ # -l , default 'build_nmh.log', - for stdout/stderr # Advanced/developer use: # -c to run 'make distcheck' instead of 'make check' -# -d to build nmh with asserts enabled and optimization disabled +# -d to build nmh with optimization disabled # -s to use 'make superclean': requires recent autoconf and automake, # see docs/README.developers # -r to build rpm @@ -48,7 +48,7 @@ logfile=build_nmh.log usage="usage: [-b , only if downloading] [-c to run 'make distcheck' instead of 'make check'] - [-d to build nmh with asserts enabled and optimization disabled] + [-d to build nmh with optimization disabled] [-i to install nmh] [-l , default '$logfile'] [-r to build rpm] @@ -122,7 +122,7 @@ download_sources() { [ "$verbose" -eq 0 ] && git_opts=--quiet [ "$branch" = master ] || git_opts="${git_opts:+$git_opts }--branch $branch" - if "$gitdir"/git clone --depth 1 $git_opts "git://$gitrepo/nmh.git" >&3 + if "$gitdir"/git clone $git_opts "git://$gitrepo/nmh.git" >&3 then directory=nmh cd "$directory" || die "failed to clone $directory" @@ -222,7 +222,7 @@ fi config_prefix=/usr/local/nmh config_locking= config_mts=smtp -config_smtpservers=localhost +config_smtpserver=localhost config_sasl='determined by configure' config_tls='determined by configure' config_debug=n @@ -252,13 +252,12 @@ if install-mh -check >/dev/null 2>&1; then mtsconfservers=`grep '^servers:' "$mtsconf"` if [ "$mtsconfservers" ]; then - servers=`echo "$mtsconfservers" | \ - sed -e 's/^servers: *//' -e 's/ /\\\ /g'` - [ "$servers" ] && config_smtpservers="$servers" + servers=`echo "$mtsconfservers" | sed -e 's/^servers: *//'` + [ "$servers" ] && config_smtpserver="$servers" fi fi - if test -x "$mhbin/mhparam"; then + if test $yes -eq 1 -a -x "$mhbin/mhparam"; then if mhparam sasl >/dev/null; then case `$mhbin/mhparam sasl` in *sasl*) config_sasl=y ;; @@ -294,9 +293,9 @@ if [ $yes -eq 0 ]; then [ "$mts" ] && config_mts="$mts" if [ "$config_mts" = smtp ]; then - printf 'SMTP server(s), space separated [%s]: ' $config_smtpservers >&3 - read response - [ "$response" ] && config_smtpservers="$response" + printf 'SMTP server [%s]: ' $config_smtpserver >&3 + read server + [ "$server" ] && config_smtpserver="$servers" fi printf 'Cyrus SASL support (y|n) [%s]: ' "$config_sasl" >&3 @@ -314,11 +313,18 @@ config_opts="--prefix=$config_prefix" config_opts="$config_opts --with-locking=$config_locking" [ "$config_mts" -a "$config_mts" != smtp ] && config_opts="$config_opts --with-mts=$config_mts" -[ "$config_smtpservers" -a "$config_smtpservers" != localhost ] && - config_opts="$config_opts --with-smtpservers=\"$config_smtpservers\"" -[ "$config_sasl" = y ] && config_opts="$config_opts --with-cyrus-sasl" -[ "$config_tls" = y ] && config_opts="$config_opts --with-tls" -[ $config_debug = y ] && config_opts="$config_opts --enable-assert" +[ "$config_smtpserver" -a "$config_smtpserver" != localhost ] && + config_opts="$config_opts --with-smtpserver=$config_smtpserver" +if [ "$config_sasl" = y ]; then + config_opts="$config_opts --with-cyrus-sasl" +elif [ "$config_sasl" != 'determined by configure' ]; then + config_opts="$config_opts --with-cyrus-sasl=no" +fi +if [ "$config_tls" = y ]; then + config_opts="$config_opts --with-tls" +elif [ "$config_tls" != 'determined by configure' ]; then + config_opts="$config_opts --with-tls=no" +fi #### dotlocking, the usual default, requires chgrp and chmod of inc. installpriv= @@ -364,19 +370,26 @@ if [ -z "$CFLAGS" ]; then #### Only use these flags with gcc. if cc -dM -E - &1 | grep __GNUC__ >/dev/null; then #### configure will supply -g -O2 with gcc, but only if CFLAGS - #### isn't defined. - CFLAGS='-g -ansi -pedantic' + #### isn't defined. Always add -g here. + #### Try all this, borrowed from Fedora 32 build. + CFLAGS="-g -std=c99 -pedantic -Wall -Werror=format-security \ +-Wp,-D_GLIBCXX_ASSERTIONS -fexceptions -fstack-protector-strong \ +-grecord-gcc-switches -fasynchronous-unwind-tables \ +-fstack-clash-protection -fcf-protection" + if ! cc -x c -c $CFLAGS /dev/null -o /dev/null 2>/dev/null; then + #### All that wasn't supported. The following should be. + CFLAGS='-g -std=c99 -pedantic' + fi if [ "$config_debug" = n ]; then - CFLAGS="$CFLAGS -O2" + CFLAGS="$CFLAGS -O2 -Wp,-D_FORTIFY_SOURCE=2" else CFLAGS="$CFLAGS -O0" fi fi fi -printf "\n./configure CFLAGS=\"${CFLAGS}\" $config_opts\n" -#### Use eval to handle space-separated smtpservers. -eval ./configure CFLAGS=\""${CFLAGS}"\" $config_opts +printf "\n./configure $config_opts${CFLAGS:+ CFLAGS=\"${CFLAGS}\"}\n" +./configure $config_opts ${CFLAGS:+CFLAGS="${CFLAGS}"} status=$? if [ $status -eq 0 ]; then