* [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).