diff mbox

uClibc: fix darwin build

Message ID 1414250961-7975-1-git-send-email-andreas@biessmann.de
State Rejected, archived
Headers show

Commit Message

Andreas Bießmann Oct. 25, 2014, 3:29 p.m. UTC
uClibc's unifdef tool declares strlcpy(3) which is problematic on OS X. There
(and probably on other systems) strlcpy(3) is defined as a macro, re-declaring
it here will fail cause the macro expansion will generate an invalid function
name.
The declaration of strlcpy(3) is however useless cause it is never used in the
tool. Also upstream patch 2a021ae81c36f4281883a3195f7ce81504edf978 will remove
it. Using that patch here is overkill, cause it rewrites a lot of the
unifdef.c code.

Signed-off-by: Andreas Bießmann <andreas@biessmann.de>
Cc: Yann E. MORIN <yann.morin.1998@free.fr>
---
 patches/uClibc/0.9.33.2/300-fix-darwin-build.patch | 12 ++++++++++++
 1 file changed, 12 insertions(+)
 create mode 100644 patches/uClibc/0.9.33.2/300-fix-darwin-build.patch

Comments

Andreas Bießmann Dec. 6, 2014, 5:10 p.m. UTC | #1
Please review me

On 25.10.14 17:29, Andreas Bießmann wrote:
> uClibc's unifdef tool declares strlcpy(3) which is problematic on OS X. There
> (and probably on other systems) strlcpy(3) is defined as a macro, re-declaring
> it here will fail cause the macro expansion will generate an invalid function
> name.
> The declaration of strlcpy(3) is however useless cause it is never used in the
> tool. Also upstream patch 2a021ae81c36f4281883a3195f7ce81504edf978 will remove
> it. Using that patch here is overkill, cause it rewrites a lot of the
> unifdef.c code.
> 
> Signed-off-by: Andreas Bießmann <andreas@biessmann.de>
> Cc: Yann E. MORIN <yann.morin.1998@free.fr>
> ---
>  patches/uClibc/0.9.33.2/300-fix-darwin-build.patch | 12 ++++++++++++
>  1 file changed, 12 insertions(+)
>  create mode 100644 patches/uClibc/0.9.33.2/300-fix-darwin-build.patch
> 
> diff --git a/patches/uClibc/0.9.33.2/300-fix-darwin-build.patch b/patches/uClibc/0.9.33.2/300-fix-darwin-build.patch
> new file mode 100644
> index 0000000..884307d
> --- /dev/null
> +++ b/patches/uClibc/0.9.33.2/300-fix-darwin-build.patch
> @@ -0,0 +1,12 @@
> +diff -Nrupa uClibc-0.9.33.2.orig/extra/scripts/unifdef.c uClibc-0.9.33.2/extra/scripts/unifdef.c
> +--- uClibc-0.9.33.2.orig/extra/scripts/unifdef.c	2012-05-15 09:20:09.000000000 +0200
> ++++ uClibc-0.9.33.2/extra/scripts/unifdef.c	2014-10-25 17:07:33.000000000 +0200
> +@@ -78,8 +78,6 @@ __FBSDID("$FreeBSD: /repoman/r/ncvs/src/
> + #define errx(exit_code, fmt, args...) ({ warnx(fmt, ## args); exit(exit_code); })
> + #define err(exit_code, fmt, args...)  errx(exit_code, fmt ": %s", ## args, strerror(errno))
> + 
> +-size_t strlcpy(char *dst, const char *src, size_t siz);
> +-
> + /* types of input lines: */
> + typedef enum {
> + 	LT_TRUEI,		/* a true #if with ignore flag */
>
Bryan Hundven Dec. 7, 2014, 5:20 a.m. UTC | #2
Andreas,

On Sat, Dec 6, 2014 at 9:10 AM, Andreas Bießmann <andreas@biessmann.de> wrote:
> Please review me
>
> On 25.10.14 17:29, Andreas Bießmann wrote:
>> uClibc's unifdef tool declares strlcpy(3) which is problematic on OS X. There
>> (and probably on other systems) strlcpy(3) is defined as a macro, re-declaring
>> it here will fail cause the macro expansion will generate an invalid function
>> name.
>> The declaration of strlcpy(3) is however useless cause it is never used in the
>> tool. Also upstream patch 2a021ae81c36f4281883a3195f7ce81504edf978 will remove
>> it. Using that patch here is overkill, cause it rewrites a lot of the
>> unifdef.c code.
>>
>> Signed-off-by: Andreas Bießmann <andreas@biessmann.de>
>> Cc: Yann E. MORIN <yann.morin.1998@free.fr>
>> ---
>>  patches/uClibc/0.9.33.2/300-fix-darwin-build.patch | 12 ++++++++++++
>>  1 file changed, 12 insertions(+)
>>  create mode 100644 patches/uClibc/0.9.33.2/300-fix-darwin-build.patch
>>
>> diff --git a/patches/uClibc/0.9.33.2/300-fix-darwin-build.patch b/patches/uClibc/0.9.33.2/300-fix-darwin-build.patch
>> new file mode 100644
>> index 0000000..884307d
>> --- /dev/null
>> +++ b/patches/uClibc/0.9.33.2/300-fix-darwin-build.patch
>> @@ -0,0 +1,12 @@
>> +diff -Nrupa uClibc-0.9.33.2.orig/extra/scripts/unifdef.c uClibc-0.9.33.2/extra/scripts/unifdef.c
>> +--- uClibc-0.9.33.2.orig/extra/scripts/unifdef.c     2012-05-15 09:20:09.000000000 +0200
>> ++++ uClibc-0.9.33.2/extra/scripts/unifdef.c  2014-10-25 17:07:33.000000000 +0200
>> +@@ -78,8 +78,6 @@ __FBSDID("$FreeBSD: /repoman/r/ncvs/src/
>> + #define errx(exit_code, fmt, args...) ({ warnx(fmt, ## args); exit(exit_code); })
>> + #define err(exit_code, fmt, args...)  errx(exit_code, fmt ": %s", ## args, strerror(errno))
>> +
>> +-size_t strlcpy(char *dst, const char *src, size_t siz);
>> +-
>> + /* types of input lines: */
>> + typedef enum {
>> +     LT_TRUEI,               /* a true #if with ignore flag */
>>

Have you tried to get this patch upstream in uclibc?

-Bryan

--
For unsubscribe information see http://sourceware.org/lists.html#faq
Andreas Bießmann Dec. 7, 2014, 9:45 a.m. UTC | #3
Dear Bryan,

On 07.12.14 06:20, Bryan Hundven wrote:
> Andreas,
> 
> On Sat, Dec 6, 2014 at 9:10 AM, Andreas Bießmann <andreas@biessmann.de> wrote:
>> Please review me
>>
>> On 25.10.14 17:29, Andreas Bießmann wrote:
>>> uClibc's unifdef tool declares strlcpy(3) which is problematic on OS X. There
>>> (and probably on other systems) strlcpy(3) is defined as a macro, re-declaring
>>> it here will fail cause the macro expansion will generate an invalid function
>>> name.
>>> The declaration of strlcpy(3) is however useless cause it is never used in the
>>> tool. Also upstream patch 2a021ae81c36f4281883a3195f7ce81504edf978 will remove
>>> it. Using that patch here is overkill, cause it rewrites a lot of the
>>> unifdef.c code.
>>>
>>> Signed-off-by: Andreas Bießmann <andreas@biessmann.de>
>>> Cc: Yann E. MORIN <yann.morin.1998@free.fr>
>>> ---
>>>  patches/uClibc/0.9.33.2/300-fix-darwin-build.patch | 12 ++++++++++++
>>>  1 file changed, 12 insertions(+)
>>>  create mode 100644 patches/uClibc/0.9.33.2/300-fix-darwin-build.patch
>>>
>>> diff --git a/patches/uClibc/0.9.33.2/300-fix-darwin-build.patch b/patches/uClibc/0.9.33.2/300-fix-darwin-build.patch
>>> new file mode 100644
>>> index 0000000..884307d
>>> --- /dev/null
>>> +++ b/patches/uClibc/0.9.33.2/300-fix-darwin-build.patch
>>> @@ -0,0 +1,12 @@
>>> +diff -Nrupa uClibc-0.9.33.2.orig/extra/scripts/unifdef.c uClibc-0.9.33.2/extra/scripts/unifdef.c
>>> +--- uClibc-0.9.33.2.orig/extra/scripts/unifdef.c     2012-05-15 09:20:09.000000000 +0200
>>> ++++ uClibc-0.9.33.2/extra/scripts/unifdef.c  2014-10-25 17:07:33.000000000 +0200
>>> +@@ -78,8 +78,6 @@ __FBSDID("$FreeBSD: /repoman/r/ncvs/src/
>>> + #define errx(exit_code, fmt, args...) ({ warnx(fmt, ## args); exit(exit_code); })
>>> + #define err(exit_code, fmt, args...)  errx(exit_code, fmt ": %s", ## args, strerror(errno))
>>> +
>>> +-size_t strlcpy(char *dst, const char *src, size_t siz);
>>> +-
>>> + /* types of input lines: */
>>> + typedef enum {
>>> +     LT_TRUEI,               /* a true #if with ignore flag */
>>>
> 
> Have you tried to get this patch upstream in uclibc?

as stated in commit message this change is part of
2a021ae81c36f4281883a3195f7ce81504edf978 upstream [1]. Unfortunately
that patch is way more intrusive, therefore I choose the remove of that
line in favour of adding all the changes
2a021ae81c36f4281883a3195f7ce81504edf978 introduces.

Best regards

Andreas Bießmann

[1]
http://git.uclibc.org/uClibc/diff/extra/scripts/unifdef.c?id=2a021ae81c36f4281883a3195f7ce81504edf978
diff mbox

Patch

diff --git a/patches/uClibc/0.9.33.2/300-fix-darwin-build.patch b/patches/uClibc/0.9.33.2/300-fix-darwin-build.patch
new file mode 100644
index 0000000..884307d
--- /dev/null
+++ b/patches/uClibc/0.9.33.2/300-fix-darwin-build.patch
@@ -0,0 +1,12 @@ 
+diff -Nrupa uClibc-0.9.33.2.orig/extra/scripts/unifdef.c uClibc-0.9.33.2/extra/scripts/unifdef.c
+--- uClibc-0.9.33.2.orig/extra/scripts/unifdef.c	2012-05-15 09:20:09.000000000 +0200
++++ uClibc-0.9.33.2/extra/scripts/unifdef.c	2014-10-25 17:07:33.000000000 +0200
+@@ -78,8 +78,6 @@ __FBSDID("$FreeBSD: /repoman/r/ncvs/src/
+ #define errx(exit_code, fmt, args...) ({ warnx(fmt, ## args); exit(exit_code); })
+ #define err(exit_code, fmt, args...)  errx(exit_code, fmt ": %s", ## args, strerror(errno))
+ 
+-size_t strlcpy(char *dst, const char *src, size_t siz);
+-
+ /* types of input lines: */
+ typedef enum {
+ 	LT_TRUEI,		/* a true #if with ignore flag */