Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 19 Sep 2020 15:35:12 +0000 (UTC)
From:      Sunpoet Po-Chuan Hsieh <sunpoet@FreeBSD.org>
To:        ports-committers@freebsd.org, svn-ports-all@freebsd.org, svn-ports-head@freebsd.org
Subject:   svn commit: r549001 - in head/science/eccodes: . files
Message-ID:  <202009191535.08JFZC69082792@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: sunpoet
Date: Sat Sep 19 15:35:11 2020
New Revision: 549001
URL: https://svnweb.freebsd.org/changeset/ports/549001

Log:
  Use local patch file instead of PATCHFILES

Added:
  head/science/eccodes/files/
  head/science/eccodes/files/patch-src-grib_bits.c   (contents, props changed)
  head/science/eccodes/files/patch-src-grib_bits_fast_big_endian.c   (contents, props changed)
Modified:
  head/science/eccodes/Makefile
  head/science/eccodes/distinfo

Modified: head/science/eccodes/Makefile
==============================================================================
--- head/science/eccodes/Makefile	Sat Sep 19 15:35:06 2020	(r549000)
+++ head/science/eccodes/Makefile	Sat Sep 19 15:35:11 2020	(r549001)
@@ -8,9 +8,6 @@ CATEGORIES=	science
 MASTER_SITES=	https://confluence.ecmwf.int/download/attachments/45757960/ \
 		LOCAL/sunpoet
 
-PATCH_SITES=	https://github.com/ecmwf/eccodes/commit/
-PATCHFILES=	7a618fa90aaafa3a28cacae130939c3268e15876.patch:-p1
-
 MAINTAINER=	sunpoet@FreeBSD.org
 COMMENT=	ECMWF API for WMO FM-92 GRIB and FM-94 BUFR messages
 

Modified: head/science/eccodes/distinfo
==============================================================================
--- head/science/eccodes/distinfo	Sat Sep 19 15:35:06 2020	(r549000)
+++ head/science/eccodes/distinfo	Sat Sep 19 15:35:11 2020	(r549001)
@@ -1,5 +1,3 @@
-TIMESTAMP = 1599505171
+TIMESTAMP = 1600177154
 SHA256 (eccodes-2.18.0-Source.tar.gz) = d88943df0f246843a1a062796edbf709ef911de7269648eef864be259e9704e3
 SIZE (eccodes-2.18.0-Source.tar.gz) = 11525701
-SHA256 (7a618fa90aaafa3a28cacae130939c3268e15876.patch) = ec04900f721353aa5e1c02e6a2405e6fe9386c95dd5b18325c8865733a2f01d7
-SIZE (7a618fa90aaafa3a28cacae130939c3268e15876.patch) = 4301

Added: head/science/eccodes/files/patch-src-grib_bits.c
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/science/eccodes/files/patch-src-grib_bits.c	Sat Sep 19 15:35:11 2020	(r549001)
@@ -0,0 +1,17 @@
+Obtained from:	https://github.com/ecmwf/eccodes/commit/7a618fa90aaafa3a28cacae130939c3268e15876
+
+--- src/grib_bits.c.orig	2020-06-24 09:11:27 UTC
++++ src/grib_bits.c
+@@ -30,6 +30,12 @@ long GRIB_MASK = -1; /* Mask of sword bits */
+     ((b) == max_nbits ? GRIB_MASK : (~(GRIB_MASK << (b)) << (max_nbits - ((q) + (b)))))
+ 
+ 
++#define VALUE_SIZE_T(p, q, b) \
++    (((b) == max_nbits_size_t ? GRIB_MASK : ~(GRIB_MASK << (b))) & ((p) >> (max_nbits_size_t - ((q) + (b)))))
++
++#define MASKVALUE_SIZE_T(q, b) \
++    ((b) == max_nbits_size_t ? GRIB_MASK : (~(GRIB_MASK << (b)) << (max_nbits_size_t - ((q) + (b)))))
++
+ static const unsigned long dmasks[] = {
+     0xFF,
+     0xFE,

Added: head/science/eccodes/files/patch-src-grib_bits_fast_big_endian.c
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/science/eccodes/files/patch-src-grib_bits_fast_big_endian.c	Sat Sep 19 15:35:11 2020	(r549001)
@@ -0,0 +1,97 @@
+Obtained from:	https://github.com/ecmwf/eccodes/commit/7a618fa90aaafa3a28cacae130939c3268e15876
+
+--- src/grib_bits_fast_big_endian.c.orig	2020-06-24 09:11:27 UTC
++++ src/grib_bits_fast_big_endian.c
+@@ -114,7 +114,6 @@ char* grib_decode_string(const unsigned char* bitStrea
+     return string;
+ }
+ 
+-
+ unsigned long grib_decode_unsigned_long(const unsigned char* p, long* bitp, long nbits)
+ {
+     long countOfLeftmostBits = 0, leftmostBits = 0;
+@@ -146,6 +145,37 @@ unsigned long grib_decode_unsigned_long(const unsigned
+     return val;
+ }
+ 
++size_t grib_decode_size_t(const unsigned char* p, long* bitp, long nbits)
++{
++    long countOfLeftmostBits = 0, leftmostBits = 0;
++    long startBit      = *bitp;
++    long remainingBits = nbits;
++    long* pp           = (long*)p;
++    size_t val  = 0;
++
++    if (startBit >= max_nbits_size_t) {
++        pp += startBit / max_nbits_size_t;
++        startBit %= max_nbits_size_t;
++    }
++
++    countOfLeftmostBits = startBit + remainingBits;
++    if (countOfLeftmostBits > max_nbits_size_t) {
++        countOfLeftmostBits = max_nbits_size_t - startBit;
++        remainingBits -= countOfLeftmostBits;
++        leftmostBits = (VALUE_SIZE_T(*pp, startBit, countOfLeftmostBits)) << remainingBits;
++        startBit     = 0;
++        pp++;
++    }
++    else
++        leftmostBits = 0;
++
++    val = leftmostBits + (VALUE_SIZE_T(*pp, startBit, remainingBits));
++
++    *bitp += nbits;
++
++    return val;
++}
++
+ int grib_encode_unsigned_long(unsigned char* p, unsigned long val, long* bitp, long nbits)
+ {
+     long* destination        = (long*)p;
+@@ -184,6 +214,46 @@ int grib_encode_unsigned_longb(unsigned char* p, unsig
+ {
+     return grib_encode_unsigned_long(p, val, bitp, nbits);
+ }
++
++int grib_encode_size_t(unsigned char* p, size_t val, long* bitp, long nbits)
++{
++    long* destination        = (long*)p;
++    long countOfLeftmostBits = 0, nextWord = 0, startBit = 0, remainingBits = 0, rightmostBits = 0;
++
++    startBit      = *bitp;
++    remainingBits = nbits;
++
++    if (startBit >= max_nbits_size_t) {
++        nextWord = startBit / max_nbits_size_t;
++        startBit %= max_nbits_size_t;
++    }
++    else
++        nextWord = 0;
++
++    countOfLeftmostBits = startBit + remainingBits;
++    if (countOfLeftmostBits > max_nbits_size_t) {
++        countOfLeftmostBits = max_nbits_size_t - startBit;
++        startBit            = max_nbits_size_t - remainingBits;
++        remainingBits -= countOfLeftmostBits;
++        destination[nextWord] =
++            ((destination[nextWord] >> countOfLeftmostBits) << countOfLeftmostBits) + (VALUE_SIZE_T(val, startBit, countOfLeftmostBits));
++        startBit = 0;
++        nextWord++;
++    }
++
++    rightmostBits = VALUE_SIZE_T(val, max_nbits_size_t - remainingBits, remainingBits);
++    destination[nextWord] =
++        (destination[nextWord] & ~MASKVALUE_SIZE_T(startBit, remainingBits)) + (rightmostBits << max_nbits_size_t - (remainingBits + startBit));
++
++    *bitp += nbits;
++    return GRIB_SUCCESS;
++}
++
++int grib_encode_size_tb(unsigned char* p, size_t val, long* bitp, long nbits)
++{
++    return grib_encode_size_t(p, val, bitp, nbits);
++}
++
+ 
+ #if VECTOR
+ #include "grib_bits_fast_big_endian_vector.c" /* Experimental */



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202009191535.08JFZC69082792>