[Varnish] #1046: exp2 portability

Varnish varnish-bugs at varnish-cache.org
Mon Oct 31 12:25:15 CET 2011


#1046: exp2 portability
------------------------+---------------------------------------------------
 Reporter:  msporleder  |        Type:  defect
   Status:  new         |    Priority:  normal
Milestone:              |   Component:  build 
  Version:  3.0.2       |    Severity:  normal
 Keywords:              |  
------------------------+---------------------------------------------------
Description changed by kristian:

Old description:

> exp2 isn't in netbsd 5 so varnish fails to compile.  The following
> patches should work:
>

> --- configure.ac.orig   2011-10-30 12:53:05.000000000 +0000
> +++ configure.ac
> @@ -380,6 +380,8 @@ else
>         ac_cv_func_port_create=no
>  fi
>
> +AC_CHECK_FUNCS([exp2])
> +
>  AM_MISSING_HAS_RUN
>  AC_CHECK_PROGS(PYTHON, [python3 python3.1 python3.2 python2.7 python2.6
> python2.5 python2 python], [AC_MSG_ERROR([Python is needed to build
> Varnish, please install python.])])
>

>
> --- bin/varnishd/cache_dir_random.c.orig        2011-10-24
> 07:25:09.000000000 +0000
> +++ bin/varnishd/cache_dir_random.c
> @@ -62,6 +62,11 @@
>  #include "vsha256.h"
>  #include "vend.h"
>
> +#ifndef HAVE_EXP2
> + #define EXP2_32 4294967296
> + #define EXP2_31 2147483648
> +#endif
> +
>  /*--------------------------------------------------------------------*/
>
>  struct vdi_random_host {
> @@ -97,7 +102,11 @@ vdi_random_sha(const char *input, ssize_
>         SHA256_Init(&ctx);
>         SHA256_Update(&ctx, input, len);
>         SHA256_Final(sign, &ctx);
> +#ifndef HAVE_EXP2
> +       return (vle32dec(sign) / EXP2_32);
> +#else
>         return (vle32dec(sign) / exp2(32));
> +#endif
>  }
>
>  /*
> @@ -119,11 +128,19 @@ vdi_random_init_seed(const struct vdi_ra
>                 break;
>         case c_hash:
>                 AN(sp->digest);
> +#ifndef HAVE_EXP2
> +               retval = vle32dec(sp->digest) / EXP2_32;
> +#else
>                 retval = vle32dec(sp->digest) / exp2(32);
> +#endif
>                 break;
>         case c_random:
>         default:
> +#ifndef HAVE_EXP2
> +               retval = random() / EXP2_31;
> +#else
>                 retval = random() / exp2(31);
> +#endif
>                 break;
>         }
>         return (retval);

New description:

 exp2 isn't in netbsd 5 so varnish fails to compile.  The following patches
 should work:

 {{{

 --- configure.ac.orig   2011-10-30 12:53:05.000000000 +0000
 +++ configure.ac
 @@ -380,6 +380,8 @@ else
         ac_cv_func_port_create=no
  fi

 +AC_CHECK_FUNCS([exp2])
 +
  AM_MISSING_HAS_RUN
  AC_CHECK_PROGS(PYTHON, [python3 python3.1 python3.2 python2.7 python2.6
 python2.5 python2 python], [AC_MSG_ERROR([Python is needed to build
 Varnish, please install python.])])



 --- bin/varnishd/cache_dir_random.c.orig        2011-10-24
 07:25:09.000000000 +0000
 +++ bin/varnishd/cache_dir_random.c
 @@ -62,6 +62,11 @@
  #include "vsha256.h"
  #include "vend.h"

 +#ifndef HAVE_EXP2
 + #define EXP2_32 4294967296
 + #define EXP2_31 2147483648
 +#endif
 +
  /*--------------------------------------------------------------------*/

  struct vdi_random_host {
 @@ -97,7 +102,11 @@ vdi_random_sha(const char *input, ssize_
         SHA256_Init(&ctx);
         SHA256_Update(&ctx, input, len);
         SHA256_Final(sign, &ctx);
 +#ifndef HAVE_EXP2
 +       return (vle32dec(sign) / EXP2_32);
 +#else
         return (vle32dec(sign) / exp2(32));
 +#endif
  }

  /*
 @@ -119,11 +128,19 @@ vdi_random_init_seed(const struct vdi_ra
                 break;
         case c_hash:
                 AN(sp->digest);
 +#ifndef HAVE_EXP2
 +               retval = vle32dec(sp->digest) / EXP2_32;
 +#else
                 retval = vle32dec(sp->digest) / exp2(32);
 +#endif
                 break;
         case c_random:
         default:
 +#ifndef HAVE_EXP2
 +               retval = random() / EXP2_31;
 +#else
                 retval = random() / exp2(31);
 +#endif
                 break;
         }
         return (retval);
 }}}

--

-- 
Ticket URL: <https://www.varnish-cache.org/trac/ticket/1046#comment:1>
Varnish <https://varnish-cache.org/>
The Varnish HTTP Accelerator




More information about the varnish-bugs mailing list