summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--user/libqmi/APKBUILD9
-rw-r--r--user/libqmi/endian.patch69
2 files changed, 75 insertions, 3 deletions
diff --git a/user/libqmi/APKBUILD b/user/libqmi/APKBUILD
index f747cdd65..4b0f96ece 100644
--- a/user/libqmi/APKBUILD
+++ b/user/libqmi/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=libqmi
-pkgver=1.22.4
+pkgver=1.24.0
pkgrel=0
pkgdesc="Library for interfacing with Qualcomm modems"
url="https://www.freedesktop.org/wiki/Software/libqmi/"
@@ -10,7 +10,9 @@ license="LGPL-2.0+"
depends=""
makedepends="glib-dev libgudev-dev python3"
subpackages="$pkgname-dev $pkgname-doc"
-source="https://www.freedesktop.org/software/libqmi/libqmi-$pkgver.tar.xz"
+source="https://www.freedesktop.org/software/libqmi/libqmi-$pkgver.tar.xz
+ endian.patch
+ "
build() {
./configure \
@@ -32,4 +34,5 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="eaa17cb7a19c73db0e1c50c714dab73ad5f97d85de86b74135085ecf31d048b80f2476509139832327925eeca97bee24e18bab33d87e814fe9b7f190ee823a34 libqmi-1.22.4.tar.xz"
+sha512sums="e899765e67c1db0f758030e78b296015c476f938bb2afa01594b3e71a0b8d5fc2237c8272497aec891d5555523ecf0fecd69c4d0e14165c07072780621b3b502 libqmi-1.24.0.tar.xz
+af01895913a66de52a79cb6de63a56025c8ee84ca7d62b91d3798d626b2eb133bc3c933fdac49d7b73874f3f641c158fb466b7567e6224d7d8a0b58e932a14d5 endian.patch"
diff --git a/user/libqmi/endian.patch b/user/libqmi/endian.patch
new file mode 100644
index 000000000..cf84b481b
--- /dev/null
+++ b/user/libqmi/endian.patch
@@ -0,0 +1,69 @@
+From 6030b9bb2e0ed9f3824a34cef548feaefceb9e37 Mon Sep 17 00:00:00 2001
+From: "A. Wilcox" <AWilcox@Wilcox-Tech.com>
+Date: Fri, 4 Oct 2019 17:45:10 -0500
+Subject: [PATCH 1/2] libqmi-glib: Fix message creation on BE systems
+
+Creation of the fake QMUX header wrote the length as a native value, which
+caused the wrong value to be written on big endian systems.
+
+Before, a test run on a ppc64 system gave:
+
+ERROR:test-message.c:296:test_message_new_request_from_data: assertion failed: (self)
+ /libqmi-glib/message/new/request: OK
+ /libqmi-glib/message/new/request-from-data: FAIL
+
+Adding a g_assert_no_error gave the more helpful message:
+
+ERROR:test-message.c:296:test_message_new_request_from_data: assertion failed (error == NULL): QMUX length and buffer length don't match (3072 != 12) (qmi_core_error_quark, 4)
+
+After this commit is applied, all tests pass on a big endian ppc64 system.
+---
+ src/libqmi-glib/qmi-message.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/libqmi-glib/qmi-message.c b/src/libqmi-glib/qmi-message.c
+index b82069e..41c5b43 100644
+--- a/src/libqmi-glib/qmi-message.c
++++ b/src/libqmi-glib/qmi-message.c
+@@ -478,7 +478,7 @@ qmi_message_new_from_data (QmiService service,
+ /* Set up fake QMUX header */
+ buffer = (struct full_message *)(self->data);
+ buffer->marker = QMI_MESSAGE_QMUX_MARKER;
+- buffer->qmux.length = buffer_len - 1;
++ buffer->qmux.length = GUINT16_TO_LE(buffer_len - 1);
+ buffer->qmux.flags = 0;
+ buffer->qmux.service = service;
+ buffer->qmux.client = client_id;
+--
+2.22.1
+
+From e299023094516a5be3ffb05f66ea90c47e966811 Mon Sep 17 00:00:00 2001
+From: "A. Wilcox" <AWilcox@Wilcox-Tech.com>
+Date: Fri, 4 Oct 2019 17:49:07 -0500
+Subject: [PATCH 2/2] libqmi-glib: Add small error test to test-message
+
+The previous commit was easier to diagnose with the error condition from
+qmi_message_new_from_data provided. This change adds g_assert_no_error to
+the test_message_new_request_from_data case so that any future issues can
+be diagnosed quickly.
+---
+ src/libqmi-glib/test/test-message.c | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/src/libqmi-glib/test/test-message.c b/src/libqmi-glib/test/test-message.c
+index b6ea711..e41917a 100644
+--- a/src/libqmi-glib/test/test-message.c
++++ b/src/libqmi-glib/test/test-message.c
+@@ -292,7 +292,8 @@ test_message_new_request_from_data (void)
+ qmi = g_byte_array_new ();
+ g_byte_array_append (qmi, expected_buffer, sizeof (expected_buffer));
+
+- self = qmi_message_new_from_data (QMI_SERVICE_DMS, 0x01, qmi, NULL);
++ self = qmi_message_new_from_data (QMI_SERVICE_DMS, 0x01, qmi, &error);
++ g_assert_no_error (error);
+ g_assert (self);
+
+ /* check that the QMUX header contains the right values*/
+--
+2.22.1
+