New Upstream Release - liberasurecode

Ready changes

Summary

Merged new upstream version: 1.6.3 (was: 1.6.2).

Resulting package

Built on 2022-11-23T07:49 (took 8m1s)

The resulting binary packages can be installed (if you have the apt repository enabled) by running one of:

apt install -t fresh-releases liberasurecode-devapt install -t fresh-releases liberasurecode1-dbgsymapt install -t fresh-releases liberasurecode1

Lintian Result

Diff

diff --git a/.zuul.yaml b/.zuul.yaml
index 219c389..82ff46a 100644
--- a/.zuul.yaml
+++ b/.zuul.yaml
@@ -5,6 +5,14 @@
       Build and run test and valgrind-test for liberasurecode.
     run: playbooks/unittests/run.yaml
 
+- job:
+    name: liberasurecode-unittests-arm64
+    parent: liberasurecode-unittests
+    nodeset: ubuntu-focal-arm64
+    description: |
+      Build and run test and valgrind-test for liberasurecode
+      on arm64.
+
 - job:
     name: liberasurecode-unittests-centos-7
     parent: liberasurecode-unittests
@@ -14,21 +22,46 @@
       This job runs on CentOS-7.
 
 - job:
-    name: liberasurecode-unittests-centos-8
+    name: liberasurecode-unittests-centos-8-stream
+    parent: liberasurecode-unittests
+    nodeset: centos-8-stream
+    description: |
+      Build and run test and valgrind-test for liberasurecode.
+      This job runs on CentOS 8 Stream.
+
+- job:
+    name: liberasurecode-unittests-centos-8-stream-fips
+    parent: liberasurecode-unittests-centos-8-stream
+    pre-run: playbooks/enable-fips.yaml
+    description: |
+      Build and run test and valgrind-test for liberasurecode.
+      This job runs on a FIPS-enabled CentOS 8 Stream system.
+
+- job:
+    name: liberasurecode-unittests-centos-8-stream-arm64
     parent: liberasurecode-unittests
-    nodeset: centos-8
+    nodeset:
+      nodes:
+        - name: libec-centos-8-stream-arm64
+          label: centos-8-stream-arm64
     description: |
       Build and run test and valgrind-test for liberasurecode.
-      This job runs on CentOS-8.
+      This job runs on CentOS 8 Stream on arm64.
 
 - project:
     check:
       jobs:
         - liberasurecode-unittests
         - liberasurecode-unittests-centos-7
-        - liberasurecode-unittests-centos-8
+        - liberasurecode-unittests-centos-8-stream
+        - liberasurecode-unittests-centos-8-stream-fips
+    check-arm64:
+      jobs:
+        - liberasurecode-unittests-arm64
+        - liberasurecode-unittests-centos-8-stream-arm64
     gate:
       jobs:
         - liberasurecode-unittests
         - liberasurecode-unittests-centos-7
-        - liberasurecode-unittests-centos-8
+        - liberasurecode-unittests-centos-8-stream
+        - liberasurecode-unittests-centos-8-stream-fips
diff --git a/ChangeLog b/ChangeLog
index 30f0fa4..e1ba6f7 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,12 @@
+Release 1.6.3
+-------------
+
+ . Fixed an underflow error when using flat_xor_hd.
+ . Added a build option to allow a suffix to be added to library names passed
+   to dlopen(). To use, define LIBERASURECODE_SO_SUFFIX via CFLAGS when
+   building. This is useful when renaming libraries for PyEClib wheels, for
+   example, so they don't conflict with system packages that may be installed.
+
 Release 1.6.2
 -------------
 
@@ -94,7 +103,7 @@ Release 1.0.9
 
  . Minor bugfixes including removing offending MAJOR/MINOR version macros
  . Enforce upper limit 32 on the number of erasure coding fragments
-   (#data + #chunks) < 32 
+   (#data + #chunks) < 32
 
  Release 1.0.8
 -------------
diff --git a/README.md b/README.md
index bb8469c..5c80211 100644
--- a/README.md
+++ b/README.md
@@ -73,6 +73,15 @@ top-level directory:
 
 ----
 
+Getting Help
+============
+
+- Bugs: https://bugs.launchpad.net/liberasurecode/
+- Mailing List: http://lists.openstack.org/pipermail/openstack-discuss/ (use tag `[swift][liberasurecode]`)
+- IRC: #openstack-swift on OFTC
+
+----
+
 References
 ==========
 
diff --git a/debian/changelog b/debian/changelog
index 19e668e..37b5b2e 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,9 @@
+liberasurecode (1.6.3-1) UNRELEASED; urgency=low
+
+  * New upstream release.
+
+ -- Debian Janitor <janitor@jelmer.uk>  Wed, 23 Nov 2022 07:42:42 -0000
+
 liberasurecode (1.6.2-1) unstable; urgency=medium
 
   * New upstream release.
diff --git a/include/erasurecode/erasurecode_version.h b/include/erasurecode/erasurecode_version.h
index 21a511b..5f06cd7 100644
--- a/include/erasurecode/erasurecode_version.h
+++ b/include/erasurecode/erasurecode_version.h
@@ -27,11 +27,15 @@
 
 #define _MAJOR 1
 #define _MINOR 6
-#define _REV 2
+#define _REV 3
 #define _VERSION(x, y, z) ((x << 16) | (y << 8) | (z))
 
 #define LIBERASURECODE_VERSION _VERSION(_MAJOR, _MINOR, _REV)
 
+#ifndef LIBERASURECODE_SO_SUFFIX
+#define LIBERASURECODE_SO_SUFFIX ""
+#endif // LIBERASURECODE_SO_SUFFIX
+
 #endif // _ERASURECODE_VERSION_H_
 
 
diff --git a/playbooks/enable-fips.yaml b/playbooks/enable-fips.yaml
new file mode 100644
index 0000000..bc1dc04
--- /dev/null
+++ b/playbooks/enable-fips.yaml
@@ -0,0 +1,3 @@
+- hosts: all
+  roles:
+    - enable-fips
diff --git a/roles/install_isal/tasks/main.yaml b/roles/install_isal/tasks/main.yaml
index 62ea807..6dd8a99 100644
--- a/roles/install_isal/tasks/main.yaml
+++ b/roles/install_isal/tasks/main.yaml
@@ -23,7 +23,7 @@
       set -e
       set -x
       cd $WORKSPACE
-      git clone git://github.com/01org/isa-l.git
+      git clone https://github.com/intel/isa-l.git -b v2.30.0
       cd isa-l
       ./autogen.sh
       ./configure
diff --git a/src/backends/isa-l/isa_l_rs_cauchy.c b/src/backends/isa-l/isa_l_rs_cauchy.c
index 3ab927e..2c9e117 100644
--- a/src/backends/isa-l/isa_l_rs_cauchy.c
+++ b/src/backends/isa-l/isa_l_rs_cauchy.c
@@ -38,9 +38,9 @@
 #define ISA_L_RS_CAUCHY_LIB_VER_STR "2.14"
 #define ISA_L_RS_CAUCHY_LIB_NAME "isa_l_rs_cauchy"
 #if defined(__MACOS__) || defined(__MACOSX__) || defined(__OSX__) || defined(__APPLE__)
-#define ISA_L_RS_CAUCHY_SO_NAME "libisal.dylib"
+#define ISA_L_RS_CAUCHY_SO_NAME "libisal" LIBERASURECODE_SO_SUFFIX ".dylib"
 #else
-#define ISA_L_RS_CAUCHY_SO_NAME "libisal.so.2"
+#define ISA_L_RS_CAUCHY_SO_NAME "libisal" LIBERASURECODE_SO_SUFFIX ".so.2"
 #endif
 
 /* Forward declarations */
diff --git a/src/backends/isa-l/isa_l_rs_vand.c b/src/backends/isa-l/isa_l_rs_vand.c
index ca176cb..6e65747 100644
--- a/src/backends/isa-l/isa_l_rs_vand.c
+++ b/src/backends/isa-l/isa_l_rs_vand.c
@@ -37,9 +37,9 @@
 #define ISA_L_RS_VAND_LIB_VER_STR "2.13"
 #define ISA_L_RS_VAND_LIB_NAME "isa_l_rs_vand"
 #if defined(__MACOS__) || defined(__MACOSX__) || defined(__OSX__) || defined(__APPLE__)
-#define ISA_L_RS_VAND_SO_NAME "libisal.dylib"
+#define ISA_L_RS_VAND_SO_NAME "libisal" LIBERASURECODE_SO_SUFFIX ".dylib"
 #else
-#define ISA_L_RS_VAND_SO_NAME "libisal.so.2"
+#define ISA_L_RS_VAND_SO_NAME "libisal" LIBERASURECODE_SO_SUFFIX ".so.2"
 #endif
 
 /* Forward declarations */
diff --git a/src/backends/jerasure/jerasure_rs_cauchy.c b/src/backends/jerasure/jerasure_rs_cauchy.c
index 82d796a..793504a 100644
--- a/src/backends/jerasure/jerasure_rs_cauchy.c
+++ b/src/backends/jerasure/jerasure_rs_cauchy.c
@@ -40,9 +40,9 @@
 #define JERASURE_RS_CAUCHY_LIB_VER_STR "2.0"
 #define JERASURE_RS_CAUCHY_LIB_NAME "jerasure_rs_cauchy"
 #if defined(__MACOS__) || defined(__MACOSX__) || defined(__OSX__) || defined(__APPLE__)
-#define JERASURE_RS_CAUCHY_SO_NAME "libJerasure.dylib"
+#define JERASURE_RS_CAUCHY_SO_NAME "libJerasure" LIBERASURECODE_SO_SUFFIX ".dylib"
 #else
-#define JERASURE_RS_CAUCHY_SO_NAME "libJerasure.so.2"
+#define JERASURE_RS_CAUCHY_SO_NAME "libJerasure" LIBERASURECODE_SO_SUFFIX ".so.2"
 #endif
 
 /* Forward declarations */
diff --git a/src/backends/jerasure/jerasure_rs_vand.c b/src/backends/jerasure/jerasure_rs_vand.c
index 9395046..c2676ee 100644
--- a/src/backends/jerasure/jerasure_rs_vand.c
+++ b/src/backends/jerasure/jerasure_rs_vand.c
@@ -40,9 +40,9 @@
 #define JERASURE_RS_VAND_LIB_VER_STR "2.0"
 #define JERASURE_RS_VAND_LIB_NAME "jerasure_rs_vand"
 #if defined(__MACOS__) || defined(__MACOSX__) || defined(__OSX__) || defined(__APPLE__)
-#define JERASURE_RS_VAND_SO_NAME "libJerasure.dylib"
+#define JERASURE_RS_VAND_SO_NAME "libJerasure" LIBERASURECODE_SO_SUFFIX ".dylib"
 #else
-#define JERASURE_RS_VAND_SO_NAME "libJerasure.so.2"
+#define JERASURE_RS_VAND_SO_NAME "libJerasure" LIBERASURECODE_SO_SUFFIX ".so.2"
 #endif
 
 /* Forward declarations */
diff --git a/src/backends/null/null.c b/src/backends/null/null.c
index abc925b..85aa8fe 100644
--- a/src/backends/null/null.c
+++ b/src/backends/null/null.c
@@ -37,9 +37,9 @@
 #define NULL_LIB_VER_STR "1.0"
 #define NULL_LIB_NAME "null"
 #if defined(__MACOS__) || defined(__MACOSX__) || defined(__OSX__) || defined(__APPLE__)
-#define NULL_SO_NAME "libnullcode.dylib"
+#define NULL_SO_NAME "libnullcode" LIBERASURECODE_SO_SUFFIX ".dylib"
 #else
-#define NULL_SO_NAME "libnullcode.so.1"
+#define NULL_SO_NAME "libnullcode" LIBERASURECODE_SO_SUFFIX ".so.1"
 #endif
 /* Forward declarations */
 struct ec_backend null;
diff --git a/src/backends/phazrio/libphazr.c b/src/backends/phazrio/libphazr.c
index 41ed74e..0dfd1fb 100644
--- a/src/backends/phazrio/libphazr.c
+++ b/src/backends/phazrio/libphazr.c
@@ -39,9 +39,9 @@
 #define LIBPHAZR_LIB_VER_STR "1.0.0"
 #define LIBPHAZR_LIB_NAME "libphazr"
 #if defined(__MACOS__) || defined(__MACOSX__) || defined(__OSX__) || defined(__APPLE__)
-#define LIBPHAZR_SO_NAME "libphazr.dylib"
+#define LIBPHAZR_SO_NAME "libphazr" LIBERASURECODE_SO_SUFFIX ".dylib"
 #else
-#define LIBPHAZR_SO_NAME "libphazr.so.1"
+#define LIBPHAZR_SO_NAME "libphazr" LIBERASURECODE_SO_SUFFIX ".so.1"
 #endif
 
 /* Forward declarations */
diff --git a/src/backends/rs_vand/liberasurecode_rs_vand.c b/src/backends/rs_vand/liberasurecode_rs_vand.c
index cc84b65..c17dde1 100644
--- a/src/backends/rs_vand/liberasurecode_rs_vand.c
+++ b/src/backends/rs_vand/liberasurecode_rs_vand.c
@@ -38,9 +38,9 @@
 #define LIBERASURECODE_RS_VAND_LIB_VER_STR "1.0"
 #define LIBERASURECODE_RS_VAND_LIB_NAME "liberasurecode_rs_vand"
 #if defined(__MACOS__) || defined(__MACOSX__) || defined(__OSX__) || defined(__APPLE__)
-#define LIBERASURECODE_RS_VAND_SO_NAME "liberasurecode_rs_vand.dylib"
+#define LIBERASURECODE_RS_VAND_SO_NAME "liberasurecode_rs_vand" LIBERASURECODE_SO_SUFFIX ".dylib"
 #else
-#define LIBERASURECODE_RS_VAND_SO_NAME "liberasurecode_rs_vand.so.1"
+#define LIBERASURECODE_RS_VAND_SO_NAME "liberasurecode_rs_vand" LIBERASURECODE_SO_SUFFIX ".so.1"
 #endif
 
 /* Forward declarations */
diff --git a/src/backends/shss/shss.c b/src/backends/shss/shss.c
index 51622f2..75e24b6 100644
--- a/src/backends/shss/shss.c
+++ b/src/backends/shss/shss.c
@@ -63,9 +63,9 @@ struct shss_descriptor {
 #define SHSS_LIB_VER_STR "1.0"
 #define SHSS_LIB_NAME "shss"
 #if defined(__MACOS__) || defined(__MACOSX__) || defined(__OSX__) || defined(__APPLE__)
-#define SHSS_SO_NAME "libshss.dylib"
+#define SHSS_SO_NAME "libshss" LIBERASURECODE_SO_SUFFIX ".dylib"
 #else
-#define SHSS_SO_NAME "libshss.so.1"
+#define SHSS_SO_NAME "libshss" LIBERASURECODE_SO_SUFFIX ".so.1"
 #endif
 #define DEFAULT_W 128
 #define METADATA 32
diff --git a/src/backends/xor/flat_xor_hd.c b/src/backends/xor/flat_xor_hd.c
index dbc1d7f..62a1bd9 100644
--- a/src/backends/xor/flat_xor_hd.c
+++ b/src/backends/xor/flat_xor_hd.c
@@ -39,9 +39,9 @@
 #define FLAT_XOR_LIB_VER_STR "1.0"
 #define FLAT_XOR_LIB_NAME "flat_xor_hd"
 #if defined(__MACOS__) || defined(__MACOSX__) || defined(__OSX__) || defined(__APPLE__)
-#define FLAT_XOR_SO_NAME "libXorcode.dylib"
+#define FLAT_XOR_SO_NAME "libXorcode" LIBERASURECODE_SO_SUFFIX ".dylib"
 #else
-#define FLAT_XOR_SO_NAME "libXorcode.so.1"
+#define FLAT_XOR_SO_NAME "libXorcode" LIBERASURECODE_SO_SUFFIX ".so.1"
 #endif
 #define DEFAULT_W 32
 
diff --git a/src/builtin/xor_codes/xor_hd_code.c b/src/builtin/xor_codes/xor_hd_code.c
index 9e41ad1..ae9607a 100644
--- a/src/builtin/xor_codes/xor_hd_code.c
+++ b/src/builtin/xor_codes/xor_hd_code.c
@@ -155,19 +155,21 @@ static int fragments_needed_three_data(xor_code_t *code_desc, int *missing_data,
 
   remove_from_missing_list(data_index, missing_data);
 
-  // Include all data elements except for this one
-  *data_bm |= (code_desc->parity_bms[parity_index-code_desc->k]);
-
-  // Include this parity element
   if (parity_index > -1) {
+    // Include this parity element
     *parity_bm |= (1 << (parity_index-code_desc->k));
+    // Include all data elements except for this one
+    *data_bm |= code_desc->parity_bms[parity_index-code_desc->k];
   } else {
+    // Include both parity elements
     *parity_bm |= (1 << (contains_2d-code_desc->k));
     *parity_bm |= (1 << (contains_3d-code_desc->k));
+    // And all other data elements that didn't cancel out
+    *data_bm |= tmp_parity_bm;
   }
 
   ret = fragments_needed_two_data(code_desc, missing_data, missing_parity, data_bm, parity_bm);
-  
+
   *data_bm &= ~((unsigned int)1 << data_index);
 
   return ret;

Debdiff

[The following lists of changes regard files as different if they have different names, permissions or owners.]

Files in second set of .debs but not in first

-rw-r--r--  root/root   /usr/lib/debug/.build-id/20/a31f3d5f0a9e5c97d8d0c7be81eb9cb7cd9765.debug
-rw-r--r--  root/root   /usr/lib/debug/.build-id/21/86c665a2f18df9675fb9ac167baee92a0fa62c.debug
-rw-r--r--  root/root   /usr/lib/debug/.build-id/4d/e8f1e8e64ec9d454967acf9c496640757d8c75.debug
-rw-r--r--  root/root   /usr/lib/debug/.build-id/d2/00446ba41fe155f8548126d8a7835d82117c2e.debug
-rw-r--r--  root/root   /usr/lib/x86_64-linux-gnu/liberasurecode.so.1.6.3
lrwxrwxrwx  root/root   /usr/lib/x86_64-linux-gnu/liberasurecode.so -> liberasurecode.so.1.6.3
lrwxrwxrwx  root/root   /usr/lib/x86_64-linux-gnu/liberasurecode.so.1 -> liberasurecode.so.1.6.3

Files in first set of .debs but not in second

-rw-r--r--  root/root   /usr/lib/debug/.build-id/67/5f541d018301e5039206af2e315c1bff288064.debug
-rw-r--r--  root/root   /usr/lib/debug/.build-id/6a/c7e5476ddb0c73af3a3ed71383a5d81261e448.debug
-rw-r--r--  root/root   /usr/lib/debug/.build-id/78/e9d0ba3ac1ad9c7dbad30ed63732ba97f75390.debug
-rw-r--r--  root/root   /usr/lib/debug/.build-id/fe/9c2ffe62a6240093d253d0fab63a5b14a80631.debug
-rw-r--r--  root/root   /usr/lib/x86_64-linux-gnu/liberasurecode.so.1.6.2
lrwxrwxrwx  root/root   /usr/lib/x86_64-linux-gnu/liberasurecode.so -> liberasurecode.so.1.6.2
lrwxrwxrwx  root/root   /usr/lib/x86_64-linux-gnu/liberasurecode.so.1 -> liberasurecode.so.1.6.2

No differences were encountered between the control files of package liberasurecode-dev

No differences were encountered between the control files of package liberasurecode1

Control files of package liberasurecode1-dbgsym: lines which differ (wdiff format)

  • Build-Ids: 675f541d018301e5039206af2e315c1bff288064 6ac7e5476ddb0c73af3a3ed71383a5d81261e448 78e9d0ba3ac1ad9c7dbad30ed63732ba97f75390 fe9c2ffe62a6240093d253d0fab63a5b14a80631 20a31f3d5f0a9e5c97d8d0c7be81eb9cb7cd9765 2186c665a2f18df9675fb9ac167baee92a0fa62c 4de8f1e8e64ec9d454967acf9c496640757d8c75 d200446ba41fe155f8548126d8a7835d82117c2e

More details

Full run details