Skip to contentSkip to conversation

package/sane-backends: fix musl build issue

PATCH New Romain Naour 3 participants 4 messages Nov 11, 2016 – Nov 12, 2016

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 package/sane-backends: fix musl build issue

We should include config.h from sanei_backend.h in order to use the correct if/else HAVE_FOO.

For some reason with Glibc or uClibc there is no problem but with musl we have the following weird issue:

In file included from epsonds.h:41:0,

                 from epsonds-jpeg.c:18:

../include/sane/sanei_backend.h:99:33: error: expected ';', identifier or '(' before 'int'

../include/sane/sanei_backend.h:99:33: warning: useless type name in empty declaration

That's because HAVE_SIGPROCMASK is not defined although it's correctly detected by the configure script.

$ grep config.log
config.log:#define HAVE_SIGPROCMASK 1

So, include config.h to avoid to redefine sigset_t.

Fixes:
http://autobuild.buildroot.net/results/9f1/9f1f1cb727b5c5407e69172280a3dee880e55cdf

---
 .../0003-sane_backend-add-missing-config.h.patch   | 49 ++++++++++++++++++++++
 1 file changed, 49 insertions(+)
 create mode 100644 package/sane-backends/0003-sane_backend-add-missing-config.h.patch
package/sane-backends/0003-sane_backend-add-missing-config.h.patch new file +49 -0
new file mode 100644
index 0000000..8e56b02
@@ -0,0 +1,49 @@
+From 13aadf79659dd238b618c8be7c1de44960bd5d50 Mon Sep 17 00:00:00 2001
+From: Romain Naour <[email protected]>
+Date: Fri, 11 Nov 2016 22:20:03 +0100
+Subject: [PATCH] sane_backend: add missing config.h
+
+We should include config.h from sanei_backend.h in order to use the
+correct if/else HAVE_FOO.
+
+For some reason with Glibc or uClibc there is no problem but with musl
+we have the following weird issue:
+
+In file included from epsonds.h:41:0,
+                 from epsonds-jpeg.c:18:
+../include/sane/sanei_backend.h:99:33: error: expected ';', identifier or '(' before 'int'
+ # define sigset_t               int
+                                 ^
+../include/sane/sanei_backend.h:99:33: warning: useless type name in empty declaration
+
+That's because HAVE_SIGPROCMASK is not defined although it's correctly
+detected by the configure script.
+
+$ grep config.log
+config.log:#define HAVE_SIGPROCMASK 1
+
+So, include config.h to avoid to redefine sigset_t.
+
+Fixes:
+http://autobuild.buildroot.net/results/9f1/9f1f1cb727b5c5407e69172280a3dee880e55cdf
+
+Signed-off-by: Romain Naour <[email protected]>
+---
+ include/sane/sanei_backend.h | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/include/sane/sanei_backend.h b/include/sane/sanei_backend.h
+index 1b5afe2..2a96532 100644
+--- a/include/sane/sanei_backend.h
++++ b/include/sane/sanei_backend.h
+@@ -8,6 +8,7 @@
+  * @sa sanei.h sanei_thread.h
+  */
+ 
++#include "../include/sane/config.h"
+ 
+ /*
+  * Compiler related options
+-- 
+2.5.5
+
Signature · 1 line
2.5.5
#1 lore raw

PATCH 1/1 package/sane-backends: fix musl build issue

Hi Romain,

Quoted 18 lines · Romain Naour

We should include config.h from sanei_backend.h in order to use the correct if/else HAVE_FOO.

For some reason with Glibc or uClibc there is no problem but with musl we have the following weird issue:

In file included from epsonds.h:41:0,

                 from epsonds-jpeg.c:18:

../include/sane/sanei_backend.h:99:33: error: expected ';', identifier or '(' before 'int'

../include/sane/sanei_backend.h:99:33: warning: useless type name in empty declaration

That's because HAVE_SIGPROCMASK is not defined although it's correctly detected by the configure script.

$ grep config.log
config.log:#define HAVE_SIGPROCMASK 1
Quoted 7 lines

So, include config.h to avoid to redefine sigset_t.

Fixes:
http://autobuild.buildroot.net/results/9f1/9f1f1cb727b5c5407e69172280a3dee880e55cdf

Thanks for looking into this. For some reason, I had thought I saw a mention on the list that this was due to something else, but you're completely right that it's a sane-backends issue. I took a look upstream and found this patch:

https://anonscm.debian.org/cgit/sane/sane-backends.git/commit/?id=1dbabdce5d34e686608bb997245c49a823e19fb5

It looks functionally the same as yours except that they added the #include to epsonds-jpeg.c instead. No other similar commits were made at the same time, so presumably that's the only file that breaks due to the missing config.h issue. Could you try the patch above? If it works, it will be more obvious that the patch can be dropped on the next sane-backends release.

Thanks,
Frank

Quoted 63 lines
---
 .../0003-sane_backend-add-missing-config.h.patch   | 49 ++++++++++++++++++++++
 1 file changed, 49 insertions(+)
 create mode 100644 package/sane-backends/0003-sane_backend-add-missing-config.h.patch
package/sane-backends/0003-sane_backend-add-missing-config.h.patch new file +49 -1
new file mode 100644
index 0000000..8e56b02
@@ -0,0 +1,49 @@
+From 13aadf79659dd238b618c8be7c1de44960bd5d50 Mon Sep 17 00:00:00 2001
+From: Romain Naour <[email protected]>
+Date: Fri, 11 Nov 2016 22:20:03 +0100
+Subject: [PATCH] sane_backend: add missing config.h
+
+We should include config.h from sanei_backend.h in order to use the
+correct if/else HAVE_FOO.
+
+For some reason with Glibc or uClibc there is no problem but with musl
+we have the following weird issue:
+
+In file included from epsonds.h:41:0,
+                 from epsonds-jpeg.c:18:
+../include/sane/sanei_backend.h:99:33: error: expected ';', identifier or '(' before 'int'
+ # define sigset_t               int
+                                 ^
+../include/sane/sanei_backend.h:99:33: warning: useless type name in empty declaration
+
+That's because HAVE_SIGPROCMASK is not defined although it's correctly
+detected by the configure script.
+
+$ grep config.log
+config.log:#define HAVE_SIGPROCMASK 1
+
+So, include config.h to avoid to redefine sigset_t.
+
+Fixes:
+http://autobuild.buildroot.net/results/9f1/9f1f1cb727b5c5407e69172280a3dee880e55cdf
+
+Signed-off-by: Romain Naour <[email protected]>
+---
+ include/sane/sanei_backend.h | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/include/sane/sanei_backend.h b/include/sane/sanei_backend.h
+index 1b5afe2..2a96532 100644
+--- a/include/sane/sanei_backend.h
++++ b/include/sane/sanei_backend.h
+@@ -8,6 +8,7 @@
+  * @sa sanei.h sanei_thread.h
+  */
+
++#include "../include/sane/config.h"
+
+ /*
+  * Compiler related options
+--
+2.5.5
+
--

2.5.5

Signature · 4 lines
Frank Hunleth
Troodon Software LLC
Embedded Software Development
http://troodon-software.com/
#2 lore raw

PATCH 1/1 package/sane-backends: fix musl build issue

Hi Frank,

Le 12/11/2016 ? 19:09, Frank Hunleth a ?crit :

Quoted 34 lines

Hi Romain,

Quoted 18 lines · Romain Naour

We should include config.h from sanei_backend.h in order to use the correct if/else HAVE_FOO.

For some reason with Glibc or uClibc there is no problem but with musl we have the following weird issue:

In file included from epsonds.h:41:0,

                 from epsonds-jpeg.c:18:

../include/sane/sanei_backend.h:99:33: error: expected ';', identifier or '(' before 'int'

../include/sane/sanei_backend.h:99:33: warning: useless type name in empty declaration

That's because HAVE_SIGPROCMASK is not defined although it's correctly detected by the configure script.

$ grep config.log
config.log:#define HAVE_SIGPROCMASK 1
Quoted 7 lines

So, include config.h to avoid to redefine sigset_t.

Fixes:
http://autobuild.buildroot.net/results/9f1/9f1f1cb727b5c5407e69172280a3dee880e55cdf

Thanks for looking into this. For some reason, I had thought I saw a mention on the list that this was due to something else, but you're completely right that it's a sane-backends issue. I took a look upstream and found this patch:

Quoted 8 lines

https://anonscm.debian.org/cgit/sane/sane-backends.git/commit/?id=1dbabdce5d34e686608bb997245c49a823e19fb5

It looks functionally the same as yours except that they added the #include to epsonds-jpeg.c instead. No other similar commits were made at the same time, so presumably that's the only file that breaks due to the missing config.h issue. Could you try the patch above? If it works, it will be more obvious that the patch can be dropped on the next sane-backends release.

Thanks for the feedback and review!
Indeed the upstream patch fix the issues.
I missed it while searching for an upstream patch to backport... It seems that "epsonds: fix compilation" is not really meaningful :p

Best regards,
Romain

Quoted 72 lines

Thanks,
Frank

Quoted 63 lines
---
 .../0003-sane_backend-add-missing-config.h.patch   | 49 ++++++++++++++++++++++
 1 file changed, 49 insertions(+)
 create mode 100644 package/sane-backends/0003-sane_backend-add-missing-config.h.patch
package/sane-backends/0003-sane_backend-add-missing-config.h.patch new file +49 -1
new file mode 100644
index 0000000..8e56b02
@@ -0,0 +1,49 @@
+From 13aadf79659dd238b618c8be7c1de44960bd5d50 Mon Sep 17 00:00:00 2001
+From: Romain Naour <[email protected]>
+Date: Fri, 11 Nov 2016 22:20:03 +0100
+Subject: [PATCH] sane_backend: add missing config.h
+
+We should include config.h from sanei_backend.h in order to use the
+correct if/else HAVE_FOO.
+
+For some reason with Glibc or uClibc there is no problem but with musl
+we have the following weird issue:
+
+In file included from epsonds.h:41:0,
+                 from epsonds-jpeg.c:18:
+../include/sane/sanei_backend.h:99:33: error: expected ';', identifier or '(' before 'int'
+ # define sigset_t               int
+                                 ^
+../include/sane/sanei_backend.h:99:33: warning: useless type name in empty declaration
+
+That's because HAVE_SIGPROCMASK is not defined although it's correctly
+detected by the configure script.
+
+$ grep config.log
+config.log:#define HAVE_SIGPROCMASK 1
+
+So, include config.h to avoid to redefine sigset_t.
+
+Fixes:
+http://autobuild.buildroot.net/results/9f1/9f1f1cb727b5c5407e69172280a3dee880e55cdf
+
+Signed-off-by: Romain Naour <[email protected]>
+---
+ include/sane/sanei_backend.h | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/include/sane/sanei_backend.h b/include/sane/sanei_backend.h
+index 1b5afe2..2a96532 100644
+--- a/include/sane/sanei_backend.h
++++ b/include/sane/sanei_backend.h
+@@ -8,6 +8,7 @@
+  * @sa sanei.h sanei_thread.h
+  */
+
++#include "../include/sane/config.h"
+
+ /*
+  * Compiler related options
+--
+2.5.5
+
--

2.5.5

#3 lore raw

PATCH 1/1 package/sane-backends: fix musl build issue

In reply to Romain Naour

Hello,

Quoted 23 lines · Romain Naour

We should include config.h from sanei_backend.h in order to use the correct if/else HAVE_FOO.

For some reason with Glibc or uClibc there is no problem but with musl we have the following weird issue:

In file included from epsonds.h:41:0,

                 from epsonds-jpeg.c:18:

../include/sane/sanei_backend.h:99:33: error: expected ';', identifier or '(' before 'int'

../include/sane/sanei_backend.h:99:33: warning: useless type name in empty declaration

That's because HAVE_SIGPROCMASK is not defined although it's correctly detected by the configure script.

$ grep config.log
config.log:#define HAVE_SIGPROCMASK 1

So, include config.h to avoid to redefine sigset_t.

Fixes:
http://autobuild.buildroot.net/results/9f1/9f1f1cb727b5c5407e69172280a3dee880e55cdf

Quoted 6 lines
---
 .../0003-sane_backend-add-missing-config.h.patch   | 49 ++++++++++++++++++++++
 1 file changed, 49 insertions(+)
 create mode 100644 package/sane-backends/0003-sane_backend-add-missing-config.h.patch

Applied to master, thanks.

Thomas

Signature · 3 lines
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com