grub-devel.gnu.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] build: Use AC_HEADER_MAJOR to find device macros
@ 2016-04-16 21:34 Mike Gilbert
  2016-04-17  5:53 ` Andrei Borzenkov
  0 siblings, 1 reply; 9+ messages in thread
From: Mike Gilbert @ 2016-04-16 21:34 UTC (permalink / raw)
  To: grub-devel

Depending on the OS/libc, device macros may be found in 3 places:

sys/types.h
sys/mkdev.h
sys/sysmacros.h

glibc currenctly defines the major/minor/makedev macros in sys/sysmacros.h
and includes this from sys/types.h. Based on mailing list discussion,
this may be removed from sys/types.h in a future glibc release.
---
 configure.ac                         | 3 ++-
 grub-core/osdep/devmapper/getroot.c  | 6 ++++++
 grub-core/osdep/devmapper/hostdisk.c | 5 +++++
 grub-core/osdep/linux/getroot.c      | 6 ++++++
 grub-core/osdep/unix/getroot.c       | 4 +++-
 5 files changed, 22 insertions(+), 2 deletions(-)

diff --git a/configure.ac b/configure.ac
index 57e1713..9ddfc53 100644
--- a/configure.ac
+++ b/configure.ac
@@ -388,7 +388,8 @@ fi
 
 # Check for functions and headers.
 AC_CHECK_FUNCS(posix_memalign memalign getextmntent)
-AC_CHECK_HEADERS(sys/param.h sys/mount.h sys/mnttab.h sys/mkdev.h limits.h)
+AC_CHECK_HEADERS(sys/param.h sys/mount.h sys/mnttab.h limits.h)
+AC_HEADER_MAJOR
 
 AC_CHECK_MEMBERS([struct statfs.f_fstypename],,,[$ac_includes_default
 #include <sys/param.h>
diff --git a/grub-core/osdep/devmapper/getroot.c b/grub-core/osdep/devmapper/getroot.c
index 05eda50..72e5582 100644
--- a/grub-core/osdep/devmapper/getroot.c
+++ b/grub-core/osdep/devmapper/getroot.c
@@ -40,6 +40,12 @@
 #include <limits.h>
 #endif
 
+#if defined(MAJOR_IN_MKDEV)
+#include <sys/mkdev.h>
+#elif defined(MAJOR_IN_SYSMACROS)
+#include <sys/sysmacros.h>
+#endif
+
 #include <libdevmapper.h>
 
 #include <grub/types.h>
diff --git a/grub-core/osdep/devmapper/hostdisk.c b/grub-core/osdep/devmapper/hostdisk.c
index 19c1101..a697bcb 100644
--- a/grub-core/osdep/devmapper/hostdisk.c
+++ b/grub-core/osdep/devmapper/hostdisk.c
@@ -24,6 +24,11 @@
 #include <errno.h>
 #include <limits.h>
 
+#if defined(MAJOR_IN_MKDEV)
+#include <sys/mkdev.h>
+#elif defined(MAJOR_IN_SYSMACROS)
+#include <sys/sysmacros.h>
+#endif
 
 #ifdef HAVE_DEVICE_MAPPER
 # include <libdevmapper.h>
diff --git a/grub-core/osdep/linux/getroot.c b/grub-core/osdep/linux/getroot.c
index 10480b6..09e7e6e 100644
--- a/grub-core/osdep/linux/getroot.c
+++ b/grub-core/osdep/linux/getroot.c
@@ -35,6 +35,12 @@
 #include <limits.h>
 #endif
 
+#if defined(MAJOR_IN_MKDEV)
+#include <sys/mkdev.h>
+#elif defined(MAJOR_IN_SYSMACROS)
+#include <sys/sysmacros.h>
+#endif
+
 #include <grub/types.h>
 #include <sys/ioctl.h>         /* ioctl */
 #include <sys/mount.h>
diff --git a/grub-core/osdep/unix/getroot.c b/grub-core/osdep/unix/getroot.c
index 1079a91..4bf37b0 100644
--- a/grub-core/osdep/unix/getroot.c
+++ b/grub-core/osdep/unix/getroot.c
@@ -51,8 +51,10 @@
 #endif
 
 #include <sys/types.h>
-#if defined(HAVE_SYS_MKDEV_H)
+#if defined(MAJOR_IN_MKDEV)
 #include <sys/mkdev.h>
+#elif defined(MAJOR_IN_SYSMACROS)
+#include <sys/sysmacros.h>
 #endif
 
 #if defined(HAVE_LIBZFS) && defined(HAVE_LIBNVPAIR)
-- 
2.8.1



^ permalink raw reply related	[flat|nested] 9+ messages in thread

* Re: [PATCH] build: Use AC_HEADER_MAJOR to find device macros
  2016-04-16 21:34 [PATCH] build: Use AC_HEADER_MAJOR to find device macros Mike Gilbert
@ 2016-04-17  5:53 ` Andrei Borzenkov
  2016-04-17 15:28   ` Mike Gilbert
  0 siblings, 1 reply; 9+ messages in thread
From: Andrei Borzenkov @ 2016-04-17  5:53 UTC (permalink / raw)
  To: grub-devel

17.04.2016 00:34, Mike Gilbert пишет:
> Depending on the OS/libc, device macros may be found in 3 places:
> 

Mentioning OS and libc versions that have problem would be helpful.

> sys/types.h
> sys/mkdev.h
> sys/sysmacros.h
> 
> glibc currenctly defines the major/minor/makedev macros in sys/sysmacros.h
> and includes this from sys/types.h. Based on mailing list discussion,
> this may be removed from sys/types.h in a future glibc release.
> ---
>  configure.ac                         | 3 ++-
>  grub-core/osdep/devmapper/getroot.c  | 6 ++++++
>  grub-core/osdep/devmapper/hostdisk.c | 5 +++++
>  grub-core/osdep/linux/getroot.c      | 6 ++++++

All those files are linux only. Do you mean there are some linux flavors
that have these definitions in non-standard place? Could you name them?

>  grub-core/osdep/unix/getroot.c       | 4 +++-
>  5 files changed, 22 insertions(+), 2 deletions(-)
> 
> diff --git a/configure.ac b/configure.ac
> index 57e1713..9ddfc53 100644
> --- a/configure.ac
> +++ b/configure.ac
> @@ -388,7 +388,8 @@ fi
>  
>  # Check for functions and headers.
>  AC_CHECK_FUNCS(posix_memalign memalign getextmntent)
> -AC_CHECK_HEADERS(sys/param.h sys/mount.h sys/mnttab.h sys/mkdev.h limits.h)
> +AC_CHECK_HEADERS(sys/param.h sys/mount.h sys/mnttab.h limits.h)
> +AC_HEADER_MAJOR
>  
>  AC_CHECK_MEMBERS([struct statfs.f_fstypename],,,[$ac_includes_default
>  #include <sys/param.h>
> diff --git a/grub-core/osdep/devmapper/getroot.c b/grub-core/osdep/devmapper/getroot.c
> index 05eda50..72e5582 100644
> --- a/grub-core/osdep/devmapper/getroot.c
> +++ b/grub-core/osdep/devmapper/getroot.c
> @@ -40,6 +40,12 @@
>  #include <limits.h>
>  #endif
>  
> +#if defined(MAJOR_IN_MKDEV)
> +#include <sys/mkdev.h>
> +#elif defined(MAJOR_IN_SYSMACROS)
> +#include <sys/sysmacros.h>
> +#endif
> +
>  #include <libdevmapper.h>
>  
>  #include <grub/types.h>
> diff --git a/grub-core/osdep/devmapper/hostdisk.c b/grub-core/osdep/devmapper/hostdisk.c
> index 19c1101..a697bcb 100644
> --- a/grub-core/osdep/devmapper/hostdisk.c
> +++ b/grub-core/osdep/devmapper/hostdisk.c
> @@ -24,6 +24,11 @@
>  #include <errno.h>
>  #include <limits.h>
>  
> +#if defined(MAJOR_IN_MKDEV)
> +#include <sys/mkdev.h>
> +#elif defined(MAJOR_IN_SYSMACROS)
> +#include <sys/sysmacros.h>
> +#endif
>  
>  #ifdef HAVE_DEVICE_MAPPER
>  # include <libdevmapper.h>
> diff --git a/grub-core/osdep/linux/getroot.c b/grub-core/osdep/linux/getroot.c
> index 10480b6..09e7e6e 100644
> --- a/grub-core/osdep/linux/getroot.c
> +++ b/grub-core/osdep/linux/getroot.c
> @@ -35,6 +35,12 @@
>  #include <limits.h>
>  #endif
>  
> +#if defined(MAJOR_IN_MKDEV)
> +#include <sys/mkdev.h>
> +#elif defined(MAJOR_IN_SYSMACROS)
> +#include <sys/sysmacros.h>
> +#endif
> +
>  #include <grub/types.h>
>  #include <sys/ioctl.h>         /* ioctl */
>  #include <sys/mount.h>
> diff --git a/grub-core/osdep/unix/getroot.c b/grub-core/osdep/unix/getroot.c
> index 1079a91..4bf37b0 100644
> --- a/grub-core/osdep/unix/getroot.c
> +++ b/grub-core/osdep/unix/getroot.c
> @@ -51,8 +51,10 @@
>  #endif
>  
>  #include <sys/types.h>
> -#if defined(HAVE_SYS_MKDEV_H)
> +#if defined(MAJOR_IN_MKDEV)
>  #include <sys/mkdev.h>
> +#elif defined(MAJOR_IN_SYSMACROS)
> +#include <sys/sysmacros.h>
>  #endif
>  

The names are really misleading. All that this macro checks for is
whether these headers are present, so it is entirely equivalent to
AC_CHECK_HEADERS([sys/mkdev.h sys/sysmacros.h]). Which returns us to the
question which systems have sys/sysmacros.h :)

>  #if defined(HAVE_LIBZFS) && defined(HAVE_LIBNVPAIR)
> 



^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH] build: Use AC_HEADER_MAJOR to find device macros
  2016-04-17  5:53 ` Andrei Borzenkov
@ 2016-04-17 15:28   ` Mike Gilbert
  2016-04-17 17:33     ` Andrei Borzenkov
  0 siblings, 1 reply; 9+ messages in thread
From: Mike Gilbert @ 2016-04-17 15:28 UTC (permalink / raw)
  To: The development of GNU GRUB

On Sun, Apr 17, 2016 at 1:53 AM, Andrei Borzenkov <arvidjaar@gmail.com> wrote:
> 17.04.2016 00:34, Mike Gilbert пишет:
>> Depending on the OS/libc, device macros may be found in 3 places:
>>
>
> Mentioning OS and libc versions that have problem would be helpful.
>

I am really only familiar with glibc, though I believe BSD and Sun use
sys/mkdev.h?

>> sys/types.h
>> sys/mkdev.h
>> sys/sysmacros.h
>>
>> glibc currenctly defines the major/minor/makedev macros in sys/sysmacros.h
>> and includes this from sys/types.h. Based on mailing list discussion,
>> this may be removed from sys/types.h in a future glibc release.
>> ---
>>  configure.ac                         | 3 ++-
>>  grub-core/osdep/devmapper/getroot.c  | 6 ++++++
>>  grub-core/osdep/devmapper/hostdisk.c | 5 +++++
>>  grub-core/osdep/linux/getroot.c      | 6 ++++++
>
> All those files are linux only. Do you mean there are some linux flavors
> that have these definitions in non-standard place? Could you name them?
>

As I mentioned, in a future release, glibc may remove #include
<sys/sysmacros.h> from sys/types.h. This would provide preventing
naming conflicts in programs that have variables named like "major"
and indirectly include sys/types.h. This is currently up for
discussion upstream.

https://sourceware.org/ml/libc-alpha/2015-11/msg00253.html

https://sourceware.org/ml/libc-alpha/2015-12/msg00612.html

If you would prefer to wait until a commit lands in glibc, I
understand. We have been doing some testing in Gentoo to see how many
things will break (it's a lot!). I just thought I would submit this
now since the check is fairly harmless and would future-proof the code
either way.

>>  grub-core/osdep/unix/getroot.c       | 4 +++-
>>  5 files changed, 22 insertions(+), 2 deletions(-)
>>
>> diff --git a/configure.ac b/configure.ac
>> index 57e1713..9ddfc53 100644
>> --- a/configure.ac
>> +++ b/configure.ac
>> @@ -388,7 +388,8 @@ fi
>>
>>  # Check for functions and headers.
>>  AC_CHECK_FUNCS(posix_memalign memalign getextmntent)
>> -AC_CHECK_HEADERS(sys/param.h sys/mount.h sys/mnttab.h sys/mkdev.h limits.h)
>> +AC_CHECK_HEADERS(sys/param.h sys/mount.h sys/mnttab.h limits.h)
>> +AC_HEADER_MAJOR
>>
>>  AC_CHECK_MEMBERS([struct statfs.f_fstypename],,,[$ac_includes_default
>>  #include <sys/param.h>
>> diff --git a/grub-core/osdep/devmapper/getroot.c b/grub-core/osdep/devmapper/getroot.c
>> index 05eda50..72e5582 100644
>> --- a/grub-core/osdep/devmapper/getroot.c
>> +++ b/grub-core/osdep/devmapper/getroot.c
>> @@ -40,6 +40,12 @@
>>  #include <limits.h>
>>  #endif
>>
>> +#if defined(MAJOR_IN_MKDEV)
>> +#include <sys/mkdev.h>
>> +#elif defined(MAJOR_IN_SYSMACROS)
>> +#include <sys/sysmacros.h>
>> +#endif
>> +
>>  #include <libdevmapper.h>
>>
>>  #include <grub/types.h>
>> diff --git a/grub-core/osdep/devmapper/hostdisk.c b/grub-core/osdep/devmapper/hostdisk.c
>> index 19c1101..a697bcb 100644
>> --- a/grub-core/osdep/devmapper/hostdisk.c
>> +++ b/grub-core/osdep/devmapper/hostdisk.c
>> @@ -24,6 +24,11 @@
>>  #include <errno.h>
>>  #include <limits.h>
>>
>> +#if defined(MAJOR_IN_MKDEV)
>> +#include <sys/mkdev.h>
>> +#elif defined(MAJOR_IN_SYSMACROS)
>> +#include <sys/sysmacros.h>
>> +#endif
>>
>>  #ifdef HAVE_DEVICE_MAPPER
>>  # include <libdevmapper.h>
>> diff --git a/grub-core/osdep/linux/getroot.c b/grub-core/osdep/linux/getroot.c
>> index 10480b6..09e7e6e 100644
>> --- a/grub-core/osdep/linux/getroot.c
>> +++ b/grub-core/osdep/linux/getroot.c
>> @@ -35,6 +35,12 @@
>>  #include <limits.h>
>>  #endif
>>
>> +#if defined(MAJOR_IN_MKDEV)
>> +#include <sys/mkdev.h>
>> +#elif defined(MAJOR_IN_SYSMACROS)
>> +#include <sys/sysmacros.h>
>> +#endif
>> +
>>  #include <grub/types.h>
>>  #include <sys/ioctl.h>         /* ioctl */
>>  #include <sys/mount.h>
>> diff --git a/grub-core/osdep/unix/getroot.c b/grub-core/osdep/unix/getroot.c
>> index 1079a91..4bf37b0 100644
>> --- a/grub-core/osdep/unix/getroot.c
>> +++ b/grub-core/osdep/unix/getroot.c
>> @@ -51,8 +51,10 @@
>>  #endif
>>
>>  #include <sys/types.h>
>> -#if defined(HAVE_SYS_MKDEV_H)
>> +#if defined(MAJOR_IN_MKDEV)
>>  #include <sys/mkdev.h>
>> +#elif defined(MAJOR_IN_SYSMACROS)
>> +#include <sys/sysmacros.h>
>>  #endif
>>
>
> The names are really misleading. All that this macro checks for is
> whether these headers are present, so it is entirely equivalent to
> AC_CHECK_HEADERS([sys/mkdev.h sys/sysmacros.h]). Which returns us to the
> question which systems have sys/sysmacros.h :)
>

The macro has existed for over 20 years. I can't say why it was named that way.


^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH] build: Use AC_HEADER_MAJOR to find device macros
  2016-04-17 15:28   ` Mike Gilbert
@ 2016-04-17 17:33     ` Andrei Borzenkov
  2016-04-17 18:27       ` [PATCH v2] " Mike Gilbert
  0 siblings, 1 reply; 9+ messages in thread
From: Andrei Borzenkov @ 2016-04-17 17:33 UTC (permalink / raw)
  To: grub-devel

17.04.2016 18:28, Mike Gilbert пишет:
> On Sun, Apr 17, 2016 at 1:53 AM, Andrei Borzenkov <arvidjaar@gmail.com> wrote:
>> 17.04.2016 00:34, Mike Gilbert пишет:
>>> Depending on the OS/libc, device macros may be found in 3 places:
>>>
>>
>> Mentioning OS and libc versions that have problem would be helpful.
>>
> 
> I am really only familiar with glibc, though I believe BSD and Sun use
> sys/mkdev.h?
> 
>>> sys/types.h
>>> sys/mkdev.h
>>> sys/sysmacros.h
>>>
>>> glibc currenctly defines the major/minor/makedev macros in sys/sysmacros.h
>>> and includes this from sys/types.h. Based on mailing list discussion,
>>> this may be removed from sys/types.h in a future glibc release.
>>> ---
>>>  configure.ac                         | 3 ++-
>>>  grub-core/osdep/devmapper/getroot.c  | 6 ++++++
>>>  grub-core/osdep/devmapper/hostdisk.c | 5 +++++
>>>  grub-core/osdep/linux/getroot.c      | 6 ++++++
>>
>> All those files are linux only. Do you mean there are some linux flavors
>> that have these definitions in non-standard place? Could you name them?
>>
> 
> As I mentioned, in a future release, glibc may remove #include
> <sys/sysmacros.h> from sys/types.h. This would provide preventing
> naming conflicts in programs that have variables named like "major"
> and indirectly include sys/types.h. This is currently up for
> discussion upstream.
> 
> https://sourceware.org/ml/libc-alpha/2015-11/msg00253.html
> 
> https://sourceware.org/ml/libc-alpha/2015-12/msg00612.html
> 

Then your commit message is misleading. It is not found in 3 places, it
is found in 2 places, one of which is pulled in by default currently.

> If you would prefer to wait until a commit lands in glibc, I
> understand. We have been doing some testing in Gentoo to see how many
> things will break (it's a lot!). I just thought I would submit this
> now since the check is fairly harmless and would future-proof the code
> either way.

I'm fine with it actually (it should not break anything) but could you
please clean up commit message, mention that problem will be caused by
removal of sys/sysmacros.h default inclusion in glibc and add reference
to above discussion. Given release cycle of grub it probably make sense
to include it in 2.02.

> 
>>>  grub-core/osdep/unix/getroot.c       | 4 +++-
>>>  5 files changed, 22 insertions(+), 2 deletions(-)
>>>
>>> diff --git a/configure.ac b/configure.ac
>>> index 57e1713..9ddfc53 100644
>>> --- a/configure.ac
>>> +++ b/configure.ac
>>> @@ -388,7 +388,8 @@ fi
>>>
>>>  # Check for functions and headers.
>>>  AC_CHECK_FUNCS(posix_memalign memalign getextmntent)
>>> -AC_CHECK_HEADERS(sys/param.h sys/mount.h sys/mnttab.h sys/mkdev.h limits.h)
>>> +AC_CHECK_HEADERS(sys/param.h sys/mount.h sys/mnttab.h limits.h)
>>> +AC_HEADER_MAJOR
>>>
>>>  AC_CHECK_MEMBERS([struct statfs.f_fstypename],,,[$ac_includes_default
>>>  #include <sys/param.h>
>>> diff --git a/grub-core/osdep/devmapper/getroot.c b/grub-core/osdep/devmapper/getroot.c
>>> index 05eda50..72e5582 100644
>>> --- a/grub-core/osdep/devmapper/getroot.c
>>> +++ b/grub-core/osdep/devmapper/getroot.c
>>> @@ -40,6 +40,12 @@
>>>  #include <limits.h>
>>>  #endif
>>>
>>> +#if defined(MAJOR_IN_MKDEV)
>>> +#include <sys/mkdev.h>
>>> +#elif defined(MAJOR_IN_SYSMACROS)
>>> +#include <sys/sysmacros.h>
>>> +#endif
>>> +
>>>  #include <libdevmapper.h>
>>>
>>>  #include <grub/types.h>
>>> diff --git a/grub-core/osdep/devmapper/hostdisk.c b/grub-core/osdep/devmapper/hostdisk.c
>>> index 19c1101..a697bcb 100644
>>> --- a/grub-core/osdep/devmapper/hostdisk.c
>>> +++ b/grub-core/osdep/devmapper/hostdisk.c
>>> @@ -24,6 +24,11 @@
>>>  #include <errno.h>
>>>  #include <limits.h>
>>>
>>> +#if defined(MAJOR_IN_MKDEV)
>>> +#include <sys/mkdev.h>
>>> +#elif defined(MAJOR_IN_SYSMACROS)
>>> +#include <sys/sysmacros.h>
>>> +#endif
>>>
>>>  #ifdef HAVE_DEVICE_MAPPER
>>>  # include <libdevmapper.h>
>>> diff --git a/grub-core/osdep/linux/getroot.c b/grub-core/osdep/linux/getroot.c
>>> index 10480b6..09e7e6e 100644
>>> --- a/grub-core/osdep/linux/getroot.c
>>> +++ b/grub-core/osdep/linux/getroot.c
>>> @@ -35,6 +35,12 @@
>>>  #include <limits.h>
>>>  #endif
>>>
>>> +#if defined(MAJOR_IN_MKDEV)
>>> +#include <sys/mkdev.h>
>>> +#elif defined(MAJOR_IN_SYSMACROS)
>>> +#include <sys/sysmacros.h>
>>> +#endif
>>> +
>>>  #include <grub/types.h>
>>>  #include <sys/ioctl.h>         /* ioctl */
>>>  #include <sys/mount.h>
>>> diff --git a/grub-core/osdep/unix/getroot.c b/grub-core/osdep/unix/getroot.c
>>> index 1079a91..4bf37b0 100644
>>> --- a/grub-core/osdep/unix/getroot.c
>>> +++ b/grub-core/osdep/unix/getroot.c
>>> @@ -51,8 +51,10 @@
>>>  #endif
>>>
>>>  #include <sys/types.h>
>>> -#if defined(HAVE_SYS_MKDEV_H)
>>> +#if defined(MAJOR_IN_MKDEV)
>>>  #include <sys/mkdev.h>
>>> +#elif defined(MAJOR_IN_SYSMACROS)
>>> +#include <sys/sysmacros.h>
>>>  #endif
>>>
>>
>> The names are really misleading. All that this macro checks for is
>> whether these headers are present, so it is entirely equivalent to
>> AC_CHECK_HEADERS([sys/mkdev.h sys/sysmacros.h]). Which returns us to the
>> question which systems have sys/sysmacros.h :)
>>
> 
> The macro has existed for over 20 years. I can't say why it was named that way.
> 
> _______________________________________________
> Grub-devel mailing list
> Grub-devel@gnu.org
> https://lists.gnu.org/mailman/listinfo/grub-devel
> 



^ permalink raw reply	[flat|nested] 9+ messages in thread

* [PATCH v2] build: Use AC_HEADER_MAJOR to find device macros
  2016-04-17 17:33     ` Andrei Borzenkov
@ 2016-04-17 18:27       ` Mike Gilbert
  2016-04-18  6:11         ` Vladimir 'phcoder' Serbinenko
  2016-04-18 15:32         ` Mike Gilbert
  0 siblings, 2 replies; 9+ messages in thread
From: Mike Gilbert @ 2016-04-17 18:27 UTC (permalink / raw)
  To: grub-devel

Depending on the OS/libc, device macros are defined in different
headers.

sys/mkdev.h - BSD, Sun
sys/sysmacros.h - glibc (Linux)

glibc currently pulls sys/sysmacros.h into sys/types.h, but this may
change in a future release.

https://sourceware.org/ml/libc-alpha/2015-11/msg00253.html
---
 configure.ac                         | 3 ++-
 grub-core/osdep/devmapper/getroot.c  | 6 ++++++
 grub-core/osdep/devmapper/hostdisk.c | 5 +++++
 grub-core/osdep/linux/getroot.c      | 6 ++++++
 grub-core/osdep/unix/getroot.c       | 4 +++-
 5 files changed, 22 insertions(+), 2 deletions(-)

diff --git a/configure.ac b/configure.ac
index 57e1713..9ddfc53 100644
--- a/configure.ac
+++ b/configure.ac
@@ -388,7 +388,8 @@ fi
 
 # Check for functions and headers.
 AC_CHECK_FUNCS(posix_memalign memalign getextmntent)
-AC_CHECK_HEADERS(sys/param.h sys/mount.h sys/mnttab.h sys/mkdev.h limits.h)
+AC_CHECK_HEADERS(sys/param.h sys/mount.h sys/mnttab.h limits.h)
+AC_HEADER_MAJOR
 
 AC_CHECK_MEMBERS([struct statfs.f_fstypename],,,[$ac_includes_default
 #include <sys/param.h>
diff --git a/grub-core/osdep/devmapper/getroot.c b/grub-core/osdep/devmapper/getroot.c
index 05eda50..72e5582 100644
--- a/grub-core/osdep/devmapper/getroot.c
+++ b/grub-core/osdep/devmapper/getroot.c
@@ -40,6 +40,12 @@
 #include <limits.h>
 #endif
 
+#if defined(MAJOR_IN_MKDEV)
+#include <sys/mkdev.h>
+#elif defined(MAJOR_IN_SYSMACROS)
+#include <sys/sysmacros.h>
+#endif
+
 #include <libdevmapper.h>
 
 #include <grub/types.h>
diff --git a/grub-core/osdep/devmapper/hostdisk.c b/grub-core/osdep/devmapper/hostdisk.c
index 19c1101..a697bcb 100644
--- a/grub-core/osdep/devmapper/hostdisk.c
+++ b/grub-core/osdep/devmapper/hostdisk.c
@@ -24,6 +24,11 @@
 #include <errno.h>
 #include <limits.h>
 
+#if defined(MAJOR_IN_MKDEV)
+#include <sys/mkdev.h>
+#elif defined(MAJOR_IN_SYSMACROS)
+#include <sys/sysmacros.h>
+#endif
 
 #ifdef HAVE_DEVICE_MAPPER
 # include <libdevmapper.h>
diff --git a/grub-core/osdep/linux/getroot.c b/grub-core/osdep/linux/getroot.c
index 10480b6..09e7e6e 100644
--- a/grub-core/osdep/linux/getroot.c
+++ b/grub-core/osdep/linux/getroot.c
@@ -35,6 +35,12 @@
 #include <limits.h>
 #endif
 
+#if defined(MAJOR_IN_MKDEV)
+#include <sys/mkdev.h>
+#elif defined(MAJOR_IN_SYSMACROS)
+#include <sys/sysmacros.h>
+#endif
+
 #include <grub/types.h>
 #include <sys/ioctl.h>         /* ioctl */
 #include <sys/mount.h>
diff --git a/grub-core/osdep/unix/getroot.c b/grub-core/osdep/unix/getroot.c
index 1079a91..4bf37b0 100644
--- a/grub-core/osdep/unix/getroot.c
+++ b/grub-core/osdep/unix/getroot.c
@@ -51,8 +51,10 @@
 #endif
 
 #include <sys/types.h>
-#if defined(HAVE_SYS_MKDEV_H)
+#if defined(MAJOR_IN_MKDEV)
 #include <sys/mkdev.h>
+#elif defined(MAJOR_IN_SYSMACROS)
+#include <sys/sysmacros.h>
 #endif
 
 #if defined(HAVE_LIBZFS) && defined(HAVE_LIBNVPAIR)
-- 
2.8.1



^ permalink raw reply related	[flat|nested] 9+ messages in thread

* Re: [PATCH v2] build: Use AC_HEADER_MAJOR to find device macros
  2016-04-17 18:27       ` [PATCH v2] " Mike Gilbert
@ 2016-04-18  6:11         ` Vladimir 'phcoder' Serbinenko
  2016-04-18 15:32         ` Mike Gilbert
  1 sibling, 0 replies; 9+ messages in thread
From: Vladimir 'phcoder' Serbinenko @ 2016-04-18  6:11 UTC (permalink / raw)
  To: The development of GNU GRUB

[-- Attachment #1: Type: text/plain, Size: 3453 bytes --]

Looks good to me. If Andrei is fine with it, I'll let him commit

Le Mon, Apr 18, 2016 à 4:28 AM, Mike Gilbert <floppym@gentoo.org> a écrit :

> Depending on the OS/libc, device macros are defined in different
> headers.
>
> sys/mkdev.h - BSD, Sun
> sys/sysmacros.h - glibc (Linux)
>
> glibc currently pulls sys/sysmacros.h into sys/types.h, but this may
> change in a future release.
>
> https://sourceware.org/ml/libc-alpha/2015-11/msg00253.html
> ---
>  configure.ac                         | 3 ++-
>  grub-core/osdep/devmapper/getroot.c  | 6 ++++++
>  grub-core/osdep/devmapper/hostdisk.c | 5 +++++
>  grub-core/osdep/linux/getroot.c      | 6 ++++++
>  grub-core/osdep/unix/getroot.c       | 4 +++-
>  5 files changed, 22 insertions(+), 2 deletions(-)
>
> diff --git a/configure.ac b/configure.ac
> index 57e1713..9ddfc53 100644
> --- a/configure.ac
> +++ b/configure.ac
> @@ -388,7 +388,8 @@ fi
>
>  # Check for functions and headers.
>  AC_CHECK_FUNCS(posix_memalign memalign getextmntent)
> -AC_CHECK_HEADERS(sys/param.h sys/mount.h sys/mnttab.h sys/mkdev.h
> limits.h)
> +AC_CHECK_HEADERS(sys/param.h sys/mount.h sys/mnttab.h limits.h)
> +AC_HEADER_MAJOR
>
>  AC_CHECK_MEMBERS([struct statfs.f_fstypename],,,[$ac_includes_default
>  #include <sys/param.h>
> diff --git a/grub-core/osdep/devmapper/getroot.c
> b/grub-core/osdep/devmapper/getroot.c
> index 05eda50..72e5582 100644
> --- a/grub-core/osdep/devmapper/getroot.c
> +++ b/grub-core/osdep/devmapper/getroot.c
> @@ -40,6 +40,12 @@
>  #include <limits.h>
>  #endif
>
> +#if defined(MAJOR_IN_MKDEV)
> +#include <sys/mkdev.h>
> +#elif defined(MAJOR_IN_SYSMACROS)
> +#include <sys/sysmacros.h>
> +#endif
> +
>  #include <libdevmapper.h>
>
>  #include <grub/types.h>
> diff --git a/grub-core/osdep/devmapper/hostdisk.c
> b/grub-core/osdep/devmapper/hostdisk.c
> index 19c1101..a697bcb 100644
> --- a/grub-core/osdep/devmapper/hostdisk.c
> +++ b/grub-core/osdep/devmapper/hostdisk.c
> @@ -24,6 +24,11 @@
>  #include <errno.h>
>  #include <limits.h>
>
> +#if defined(MAJOR_IN_MKDEV)
> +#include <sys/mkdev.h>
> +#elif defined(MAJOR_IN_SYSMACROS)
> +#include <sys/sysmacros.h>
> +#endif
>
>  #ifdef HAVE_DEVICE_MAPPER
>  # include <libdevmapper.h>
> diff --git a/grub-core/osdep/linux/getroot.c
> b/grub-core/osdep/linux/getroot.c
> index 10480b6..09e7e6e 100644
> --- a/grub-core/osdep/linux/getroot.c
> +++ b/grub-core/osdep/linux/getroot.c
> @@ -35,6 +35,12 @@
>  #include <limits.h>
>  #endif
>
> +#if defined(MAJOR_IN_MKDEV)
> +#include <sys/mkdev.h>
> +#elif defined(MAJOR_IN_SYSMACROS)
> +#include <sys/sysmacros.h>
> +#endif
> +
>  #include <grub/types.h>
>  #include <sys/ioctl.h>         /* ioctl */
>  #include <sys/mount.h>
> diff --git a/grub-core/osdep/unix/getroot.c
> b/grub-core/osdep/unix/getroot.c
> index 1079a91..4bf37b0 100644
> --- a/grub-core/osdep/unix/getroot.c
> +++ b/grub-core/osdep/unix/getroot.c
> @@ -51,8 +51,10 @@
>  #endif
>
>  #include <sys/types.h>
> -#if defined(HAVE_SYS_MKDEV_H)
> +#if defined(MAJOR_IN_MKDEV)
>  #include <sys/mkdev.h>
> +#elif defined(MAJOR_IN_SYSMACROS)
> +#include <sys/sysmacros.h>
>  #endif
>
>  #if defined(HAVE_LIBZFS) && defined(HAVE_LIBNVPAIR)
> --
> 2.8.1
>
>
> _______________________________________________
> Grub-devel mailing list
> Grub-devel@gnu.org
> https://lists.gnu.org/mailman/listinfo/grub-devel
>

[-- Attachment #2: Type: text/html, Size: 4681 bytes --]

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH v2] build: Use AC_HEADER_MAJOR to find device macros
  2016-04-17 18:27       ` [PATCH v2] " Mike Gilbert
  2016-04-18  6:11         ` Vladimir 'phcoder' Serbinenko
@ 2016-04-18 15:32         ` Mike Gilbert
  2016-04-19 18:27           ` [PATCH v3] " Mike Gilbert
  1 sibling, 1 reply; 9+ messages in thread
From: Mike Gilbert @ 2016-04-18 15:32 UTC (permalink / raw)
  To: The development of GNU GRUB

On Sun, Apr 17, 2016 at 2:27 PM, Mike Gilbert <floppym@gentoo.org> wrote:
> Depending on the OS/libc, device macros are defined in different
> headers.
>
> sys/mkdev.h - BSD, Sun
> sys/sysmacros.h - glibc (Linux)

It seems I was wrong about BSD; it is defined directly in sys/types.h
on FreeBSD at least.

https://svnweb.freebsd.org/base/stable/10/sys/sys/types.h?revision=289107&view=markup#l360

Would you like me to revise the commit message again?


^ permalink raw reply	[flat|nested] 9+ messages in thread

* [PATCH v3] build: Use AC_HEADER_MAJOR to find device macros
  2016-04-18 15:32         ` Mike Gilbert
@ 2016-04-19 18:27           ` Mike Gilbert
  2016-04-24  5:13             ` Andrei Borzenkov
  0 siblings, 1 reply; 9+ messages in thread
From: Mike Gilbert @ 2016-04-19 18:27 UTC (permalink / raw)
  To: grub-devel

Depending on the OS/libc, device macros are defined in different
headers. This change ensures we include the right one.

sys/types.h - BSD
sys/mkdev.h - Sun
sys/sysmacros.h - glibc (Linux)

glibc currently pulls sys/sysmacros.h into sys/types.h, but this may
change in a future release.

https://sourceware.org/ml/libc-alpha/2015-11/msg00253.html
---
 configure.ac                         | 3 ++-
 grub-core/osdep/devmapper/getroot.c  | 6 ++++++
 grub-core/osdep/devmapper/hostdisk.c | 5 +++++
 grub-core/osdep/linux/getroot.c      | 6 ++++++
 grub-core/osdep/unix/getroot.c       | 4 +++-
 5 files changed, 22 insertions(+), 2 deletions(-)

diff --git a/configure.ac b/configure.ac
index 57e1713..9ddfc53 100644
--- a/configure.ac
+++ b/configure.ac
@@ -388,7 +388,8 @@ fi
 
 # Check for functions and headers.
 AC_CHECK_FUNCS(posix_memalign memalign getextmntent)
-AC_CHECK_HEADERS(sys/param.h sys/mount.h sys/mnttab.h sys/mkdev.h limits.h)
+AC_CHECK_HEADERS(sys/param.h sys/mount.h sys/mnttab.h limits.h)
+AC_HEADER_MAJOR
 
 AC_CHECK_MEMBERS([struct statfs.f_fstypename],,,[$ac_includes_default
 #include <sys/param.h>
diff --git a/grub-core/osdep/devmapper/getroot.c b/grub-core/osdep/devmapper/getroot.c
index 05eda50..72e5582 100644
--- a/grub-core/osdep/devmapper/getroot.c
+++ b/grub-core/osdep/devmapper/getroot.c
@@ -40,6 +40,12 @@
 #include <limits.h>
 #endif
 
+#if defined(MAJOR_IN_MKDEV)
+#include <sys/mkdev.h>
+#elif defined(MAJOR_IN_SYSMACROS)
+#include <sys/sysmacros.h>
+#endif
+
 #include <libdevmapper.h>
 
 #include <grub/types.h>
diff --git a/grub-core/osdep/devmapper/hostdisk.c b/grub-core/osdep/devmapper/hostdisk.c
index 19c1101..a697bcb 100644
--- a/grub-core/osdep/devmapper/hostdisk.c
+++ b/grub-core/osdep/devmapper/hostdisk.c
@@ -24,6 +24,11 @@
 #include <errno.h>
 #include <limits.h>
 
+#if defined(MAJOR_IN_MKDEV)
+#include <sys/mkdev.h>
+#elif defined(MAJOR_IN_SYSMACROS)
+#include <sys/sysmacros.h>
+#endif
 
 #ifdef HAVE_DEVICE_MAPPER
 # include <libdevmapper.h>
diff --git a/grub-core/osdep/linux/getroot.c b/grub-core/osdep/linux/getroot.c
index 10480b6..09e7e6e 100644
--- a/grub-core/osdep/linux/getroot.c
+++ b/grub-core/osdep/linux/getroot.c
@@ -35,6 +35,12 @@
 #include <limits.h>
 #endif
 
+#if defined(MAJOR_IN_MKDEV)
+#include <sys/mkdev.h>
+#elif defined(MAJOR_IN_SYSMACROS)
+#include <sys/sysmacros.h>
+#endif
+
 #include <grub/types.h>
 #include <sys/ioctl.h>         /* ioctl */
 #include <sys/mount.h>
diff --git a/grub-core/osdep/unix/getroot.c b/grub-core/osdep/unix/getroot.c
index 1079a91..4bf37b0 100644
--- a/grub-core/osdep/unix/getroot.c
+++ b/grub-core/osdep/unix/getroot.c
@@ -51,8 +51,10 @@
 #endif
 
 #include <sys/types.h>
-#if defined(HAVE_SYS_MKDEV_H)
+#if defined(MAJOR_IN_MKDEV)
 #include <sys/mkdev.h>
+#elif defined(MAJOR_IN_SYSMACROS)
+#include <sys/sysmacros.h>
 #endif
 
 #if defined(HAVE_LIBZFS) && defined(HAVE_LIBNVPAIR)
-- 
2.8.1



^ permalink raw reply related	[flat|nested] 9+ messages in thread

* Re: [PATCH v3] build: Use AC_HEADER_MAJOR to find device macros
  2016-04-19 18:27           ` [PATCH v3] " Mike Gilbert
@ 2016-04-24  5:13             ` Andrei Borzenkov
  0 siblings, 0 replies; 9+ messages in thread
From: Andrei Borzenkov @ 2016-04-24  5:13 UTC (permalink / raw)
  To: grub-devel

19.04.2016 21:27, Mike Gilbert пишет:
> Depending on the OS/libc, device macros are defined in different
> headers. This change ensures we include the right one.
> 
> sys/types.h - BSD
> sys/mkdev.h - Sun
> sys/sysmacros.h - glibc (Linux)
> 
> glibc currently pulls sys/sysmacros.h into sys/types.h, but this may
> change in a future release.
> 
> https://sourceware.org/ml/libc-alpha/2015-11/msg00253.html

committed. Thanks!

> ---
>  configure.ac                         | 3 ++-
>  grub-core/osdep/devmapper/getroot.c  | 6 ++++++
>  grub-core/osdep/devmapper/hostdisk.c | 5 +++++
>  grub-core/osdep/linux/getroot.c      | 6 ++++++
>  grub-core/osdep/unix/getroot.c       | 4 +++-
>  5 files changed, 22 insertions(+), 2 deletions(-)
> 
> diff --git a/configure.ac b/configure.ac
> index 57e1713..9ddfc53 100644
> --- a/configure.ac
> +++ b/configure.ac
> @@ -388,7 +388,8 @@ fi
>  
>  # Check for functions and headers.
>  AC_CHECK_FUNCS(posix_memalign memalign getextmntent)
> -AC_CHECK_HEADERS(sys/param.h sys/mount.h sys/mnttab.h sys/mkdev.h limits.h)
> +AC_CHECK_HEADERS(sys/param.h sys/mount.h sys/mnttab.h limits.h)
> +AC_HEADER_MAJOR
>  
>  AC_CHECK_MEMBERS([struct statfs.f_fstypename],,,[$ac_includes_default
>  #include <sys/param.h>
> diff --git a/grub-core/osdep/devmapper/getroot.c b/grub-core/osdep/devmapper/getroot.c
> index 05eda50..72e5582 100644
> --- a/grub-core/osdep/devmapper/getroot.c
> +++ b/grub-core/osdep/devmapper/getroot.c
> @@ -40,6 +40,12 @@
>  #include <limits.h>
>  #endif
>  
> +#if defined(MAJOR_IN_MKDEV)
> +#include <sys/mkdev.h>
> +#elif defined(MAJOR_IN_SYSMACROS)
> +#include <sys/sysmacros.h>
> +#endif
> +
>  #include <libdevmapper.h>
>  
>  #include <grub/types.h>
> diff --git a/grub-core/osdep/devmapper/hostdisk.c b/grub-core/osdep/devmapper/hostdisk.c
> index 19c1101..a697bcb 100644
> --- a/grub-core/osdep/devmapper/hostdisk.c
> +++ b/grub-core/osdep/devmapper/hostdisk.c
> @@ -24,6 +24,11 @@
>  #include <errno.h>
>  #include <limits.h>
>  
> +#if defined(MAJOR_IN_MKDEV)
> +#include <sys/mkdev.h>
> +#elif defined(MAJOR_IN_SYSMACROS)
> +#include <sys/sysmacros.h>
> +#endif
>  
>  #ifdef HAVE_DEVICE_MAPPER
>  # include <libdevmapper.h>
> diff --git a/grub-core/osdep/linux/getroot.c b/grub-core/osdep/linux/getroot.c
> index 10480b6..09e7e6e 100644
> --- a/grub-core/osdep/linux/getroot.c
> +++ b/grub-core/osdep/linux/getroot.c
> @@ -35,6 +35,12 @@
>  #include <limits.h>
>  #endif
>  
> +#if defined(MAJOR_IN_MKDEV)
> +#include <sys/mkdev.h>
> +#elif defined(MAJOR_IN_SYSMACROS)
> +#include <sys/sysmacros.h>
> +#endif
> +
>  #include <grub/types.h>
>  #include <sys/ioctl.h>         /* ioctl */
>  #include <sys/mount.h>
> diff --git a/grub-core/osdep/unix/getroot.c b/grub-core/osdep/unix/getroot.c
> index 1079a91..4bf37b0 100644
> --- a/grub-core/osdep/unix/getroot.c
> +++ b/grub-core/osdep/unix/getroot.c
> @@ -51,8 +51,10 @@
>  #endif
>  
>  #include <sys/types.h>
> -#if defined(HAVE_SYS_MKDEV_H)
> +#if defined(MAJOR_IN_MKDEV)
>  #include <sys/mkdev.h>
> +#elif defined(MAJOR_IN_SYSMACROS)
> +#include <sys/sysmacros.h>
>  #endif
>  
>  #if defined(HAVE_LIBZFS) && defined(HAVE_LIBNVPAIR)
> 



^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2016-04-24  5:13 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-04-16 21:34 [PATCH] build: Use AC_HEADER_MAJOR to find device macros Mike Gilbert
2016-04-17  5:53 ` Andrei Borzenkov
2016-04-17 15:28   ` Mike Gilbert
2016-04-17 17:33     ` Andrei Borzenkov
2016-04-17 18:27       ` [PATCH v2] " Mike Gilbert
2016-04-18  6:11         ` Vladimir 'phcoder' Serbinenko
2016-04-18 15:32         ` Mike Gilbert
2016-04-19 18:27           ` [PATCH v3] " Mike Gilbert
2016-04-24  5:13             ` Andrei Borzenkov

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).