commit:     b90d145c70b50b5b906e1d660647d6189cf51ad4
Author:     Sergei Trofimovich <slyfox <AT> gentoo <DOT> org>
AuthorDate: Mon Mar 29 07:33:52 2021 +0000
Commit:     Sergei Trofimovich <slyfox <AT> gentoo <DOT> org>
CommitDate: Mon Mar 29 07:38:07 2021 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=b90d145c

net-libs/libiscsi: fix -fno-common build failures

Reported-by: Leonid Kopylov
Closes: https://bugs.gentoo.org/778419
Signed-off-by: Sergei Trofimovich <slyfox <AT> gentoo.org>

 .../files/libiscsi-1.18.0-fno-common-2.patch       | 53 ++++++++++++++++++++++
 .../files/libiscsi-1.18.0-fno-common-3.patch       | 34 ++++++++++++++
 net-libs/libiscsi/libiscsi-1.18.0.ebuild           |  6 ++-
 3 files changed, 92 insertions(+), 1 deletion(-)

diff --git a/net-libs/libiscsi/files/libiscsi-1.18.0-fno-common-2.patch 
b/net-libs/libiscsi/files/libiscsi-1.18.0-fno-common-2.patch
new file mode 100644
index 00000000000..abb561982ba
--- /dev/null
+++ b/net-libs/libiscsi/files/libiscsi-1.18.0-fno-common-2.patch
@@ -0,0 +1,53 @@
+From ea89dcdbf167acd634300296172926c2e8d85804 Mon Sep 17 00:00:00 2001
+From: Cole Robinson <[email protected]>
+Date: Sat, 15 Feb 2020 18:03:11 -0500
+Subject: [PATCH] test-tool: Use 'extern int' in headers
+
+Without this, linking fails on Fedora rawhide. Example:
+
+...
+/usr/bin/ld: 
test_async_lu_reset_simple.o:/root/libiscsi/libiscsi.git/test-tool/iscsi-support.h:59:
 multiple definition of `param_list_len_err_ascqs'; 
iscsi-test-cu.o:/root/libiscsi/libiscsi.git/test-tool/iscsi-support.h:59: first 
defined here
+/usr/bin/ld: 
test_async_lu_reset_simple.o:/root/libiscsi/libiscsi.git/test-tool/iscsi-support.h:58:
 multiple definition of `invalid_cdb_ascqs'; 
iscsi-test-cu.o:/root/libiscsi/libiscsi.git/test-tool/iscsi-support.h:58: first 
defined here
+...
+
+Signed-off-by: Cole Robinson <[email protected]>
+---
+ test-tool/iscsi-support.h | 22 +++++++++++-----------
+ 1 file changed, 11 insertions(+), 11 deletions(-)
+
+diff --git a/test-tool/iscsi-support.h b/test-tool/iscsi-support.h
+index 7aa9e45..9c3a461 100644
+--- a/test-tool/iscsi-support.h
++++ b/test-tool/iscsi-support.h
+@@ -53,17 +53,17 @@ extern const char *initiatorname2;
+ #define EXPECT_RESERVATION_CONFLICT SCSI_STATUS_RESERVATION_CONFLICT, 0, 
NULL, 0
+ #define EXPECT_COPY_ABORTED SCSI_STATUS_CHECK_CONDITION, 
SCSI_SENSE_COPY_ABORTED, copy_aborted_ascqs, 3
+ 
+-int no_medium_ascqs[3];
+-int lba_oob_ascqs[1];
+-int invalid_cdb_ascqs[2];
+-int param_list_len_err_ascqs[1];
+-int too_many_desc_ascqs[2];
+-int unsupp_desc_code_ascqs[2];
+-int write_protect_ascqs[3];
+-int sanitize_ascqs[1];
+-int removal_ascqs[1];
+-int miscompare_ascqs[1];
+-int copy_aborted_ascqs[3];
++extern int no_medium_ascqs[3];
++extern int lba_oob_ascqs[1];
++extern int invalid_cdb_ascqs[2];
++extern int param_list_len_err_ascqs[1];
++extern int too_many_desc_ascqs[2];
++extern int unsupp_desc_code_ascqs[2];
++extern int write_protect_ascqs[3];
++extern int sanitize_ascqs[1];
++extern int removal_ascqs[1];
++extern int miscompare_ascqs[1];
++extern int copy_aborted_ascqs[3];
+ 
+ extern int loglevel;
+ #define LOG_SILENT  0
+-- 
+2.31.1
+

diff --git a/net-libs/libiscsi/files/libiscsi-1.18.0-fno-common-3.patch 
b/net-libs/libiscsi/files/libiscsi-1.18.0-fno-common-3.patch
new file mode 100644
index 00000000000..e3c34aa6fdb
--- /dev/null
+++ b/net-libs/libiscsi/files/libiscsi-1.18.0-fno-common-3.patch
@@ -0,0 +1,34 @@
+--- a/test-tool/iscsi-support.c
++++ b/test-tool/iscsi-support.c
+@@ -119,7 +119,8 @@ int readonly;
+ int sbc3_support;
+ int maximum_transfer_length;
+ 
+-int (*real_iscsi_queue_pdu)(struct iscsi_context *iscsi, struct iscsi_pdu 
*pdu);
++static int (*real_iscsi_queue_pdu)(struct iscsi_context *iscsi, struct 
iscsi_pdu *pdu);
++int (*local_iscsi_queue_pdu)(struct iscsi_context *iscsi, struct iscsi_pdu 
*pdu);
+ 
+ static const unsigned char zeroBlock[4096];
+ 
+--- a/test-tool/iscsi-support.h
++++ b/test-tool/iscsi-support.h
+@@ -779,7 +779,7 @@ struct iscsi_async_state {
+ void wait_until_test_finished(struct iscsi_context *iscsi, struct 
iscsi_async_state *test_state);
+ 
+ struct iscsi_pdu;
+-int (*local_iscsi_queue_pdu)(struct iscsi_context *iscsi, struct iscsi_pdu 
*pdu);
++extern int (*local_iscsi_queue_pdu)(struct iscsi_context *iscsi, struct 
iscsi_pdu *pdu);
+ 
+ struct scsi_command_descriptor *get_command_descriptor(int opcode, int sa);
+ 
+--- a/test-tool/iscsi-test-cu.c
++++ b/test-tool/iscsi-test-cu.c
+@@ -63,7 +63,7 @@ static unsigned int maxsectors;
+  * this allows us to redefine how PDU are queued, at times, for
+  * testing purposes
+  */
+-int (*real_iscsi_queue_pdu)(struct iscsi_context *iscsi, struct iscsi_pdu 
*pdu);
++int (*real_iscsi_queue_pdu)(struct iscsi_context *iscsi, struct iscsi_pdu 
*pdu) = NULL;
+ 
+ /*****************************************************************
+  *

diff --git a/net-libs/libiscsi/libiscsi-1.18.0.ebuild 
b/net-libs/libiscsi/libiscsi-1.18.0.ebuild
index d5f2c942c2d..444ee4b744f 100644
--- a/net-libs/libiscsi/libiscsi-1.18.0.ebuild
+++ b/net-libs/libiscsi/libiscsi-1.18.0.ebuild
@@ -22,7 +22,11 @@ LICENSE="GPL-2 LGPL-2"
 RDEPEND="dev-libs/libgcrypt:0="
 DEPEND="${RDEPEND}"
 
-PATCHES=( "${FILESDIR}"/${P}-fno-common.patch )
+PATCHES=(
+       "${FILESDIR}"/${P}-fno-common.patch
+       "${FILESDIR}"/${P}-fno-common-2.patch
+       "${FILESDIR}"/${P}-fno-common-3.patch
+)
 
 src_prepare() {
        default

Reply via email to