linux-hotplug.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* Hi, how can I compile udev with cross compilation?
@ 2010-02-20  9:52 huyle
  2010-02-20 16:37 ` Paul Bender
                   ` (3 more replies)
  0 siblings, 4 replies; 5+ messages in thread
From: huyle @ 2010-02-20  9:52 UTC (permalink / raw)
  To: linux-hotplug

Hi,
I am currently building an linux system for arm board. I am stuck with 
udev. So can you help me with some commands to compile udev with cross 
compilation?
Thanks for your time
---------------------------
Huy

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

* Re: Hi, how can I compile udev with cross compilation?
  2010-02-20  9:52 Hi, how can I compile udev with cross compilation? huyle
@ 2010-02-20 16:37 ` Paul Bender
  2010-02-20 18:20 ` Dan Nicholson
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 5+ messages in thread
From: Paul Bender @ 2010-02-20 16:37 UTC (permalink / raw)
  To: linux-hotplug

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

On 2/20/2010 1:52 AM, huyle wrote:
> Hi,
> I am currently building an linux system for arm board. I am stuck with
> udev. So can you help me with some commands to compile udev with cross
> compilation?
> Thanks for your time

I am cross compiling udev, but not for the ARM.

The only trouble that I have encountered when cross compiling version 
151 is with the configure scripts determination of the pci.ids file 
location. This is caused by autoconf's AC_CHECK_FILES macro generating 
an error when cross compiling. However, this can be worked around by setting

ac_cv_file__usr_share_pci_ids='no'
ac_cv_file__usr_share_hwdata_pci_ids='no'
ac_cv_file__usr_share_misc_pci_ids='no'

in the build system's environment before running configure and setting 
the configure script's --with-pci-ids-path argument.

I have had this work around for so long that I have not given it much 
thought. However, it is relatively easy to fix the configure script so 
that it only attempting to determine the pci.ids file location when 
--with-pci-ids-path is not set. Therefore, I have created and attached a 
patch that should do this. Of course, after applying, you would need to 
rerun autoconf or autoreconf.

[-- Attachment #2: udev-151-pci_ids_path.patch --]
[-- Type: text/plain, Size: 1139 bytes --]

diff -Naur udev-151-old/configure.ac udev-151-new/configure.ac
--- udev-151-old/configure.ac	2010-01-24 23:21:07.000000000 -0800
+++ udev-151-new/configure.ac	2010-02-20 08:21:22.000000000 -0800
@@ -69,15 +69,13 @@
 	PKG_CHECK_MODULES(USBUTILS, usbutils >= 0.82)
 	AC_SUBST([USB_DATABASE], [$($PKG_CONFIG --variable=usbids usbutils)])
 
-	AC_CHECK_FILES([/usr/share/pci.ids], [pciids=/usr/share/pci.ids])
-	AC_CHECK_FILES([/usr/share/hwdata/pci.ids], [pciids=/usr/share/hwdata/pci.ids])
-	AC_CHECK_FILES([/usr/share/misc/pci.ids], [pciids=/usr/share/misc/pci.ids])
 	AC_ARG_WITH(pci-ids-path,
 		AS_HELP_STRING([--pci-ids-path=DIR], [Path to pci.ids file]),
 		[PCI_DATABASE=${withval}],
-		[if test -n "$pciids" ; then
-			PCI_DATABASE="$pciids"
-		else
+		[AC_CHECK_FILES([/usr/share/pci.ids], [PCI_DATABASE=/usr/share/pci.ids])
+		AC_CHECK_FILES([/usr/share/hwdata/pci.ids], [PCI_DATABASE=/usr/share/hwdata/pci.ids])
+		AC_CHECK_FILES([/usr/share/misc/pci.ids], [PCI_DATABASE=/usr/share/misc/pci.ids])
+		if test -x "$PCI_DATABASE" ; then
 			AC_MSG_ERROR([pci.ids not found, try --with-pci-ids-path=])
 		fi])
 	AC_SUBST(PCI_DATABASE)

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

* Re: Hi, how can I compile udev with cross compilation?
  2010-02-20  9:52 Hi, how can I compile udev with cross compilation? huyle
  2010-02-20 16:37 ` Paul Bender
@ 2010-02-20 18:20 ` Dan Nicholson
  2010-02-20 19:15 ` Paul Bender
  2010-02-20 19:26 ` Dan Nicholson
  3 siblings, 0 replies; 5+ messages in thread
From: Dan Nicholson @ 2010-02-20 18:20 UTC (permalink / raw)
  To: linux-hotplug

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

On Sat, Feb 20, 2010 at 8:37 AM, Paul Bender <pebender@san.rr.com> wrote:
> On 2/20/2010 1:52 AM, huyle wrote:
>>
>> Hi,
>> I am currently building an linux system for arm board. I am stuck with
>> udev. So can you help me with some commands to compile udev with cross
>> compilation?
>> Thanks for your time
>
> I am cross compiling udev, but not for the ARM.
>
> The only trouble that I have encountered when cross compiling version 151 is
> with the configure scripts determination of the pci.ids file location. This
> is caused by autoconf's AC_CHECK_FILES macro generating an error when cross
> compiling. However, this can be worked around by setting
>
> ac_cv_file__usr_share_pci_ids='no'
> ac_cv_file__usr_share_hwdata_pci_ids='no'
> ac_cv_file__usr_share_misc_pci_ids='no'
>
> in the build system's environment before running configure and setting the
> configure script's --with-pci-ids-path argument.
>
> I have had this work around for so long that I have not given it much
> thought. However, it is relatively easy to fix the configure script so that
> it only attempting to determine the pci.ids file location when
> --with-pci-ids-path is not set. Therefore, I have created and attached a
> patch that should do this. Of course, after applying, you would need to
> rerun autoconf or autoreconf.

I think it would be better to just make the AC_CHECK_FILES conditional
on cross compiling:

if test $cross_compiling != yes; then
    AC_CHECK_FILES...
else
    # just assume pciids location
    pciids=/usr/share/pci.ids
fi

Otherwise, people cross compiling will bomb unless they pass
--with-pci-ids-path. Likewise, you changed the 'test -n "$pciids"' to
a 'test -x'. I don't know a lot of people with an executable pci
database. Attached is a patch to do this.

--
Dan

[-- Attachment #2: cross-compiling-pci.ids.patch --]
[-- Type: application/mbox, Size: 1976 bytes --]

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

* Re: Hi, how can I compile udev with cross compilation?
  2010-02-20  9:52 Hi, how can I compile udev with cross compilation? huyle
  2010-02-20 16:37 ` Paul Bender
  2010-02-20 18:20 ` Dan Nicholson
@ 2010-02-20 19:15 ` Paul Bender
  2010-02-20 19:26 ` Dan Nicholson
  3 siblings, 0 replies; 5+ messages in thread
From: Paul Bender @ 2010-02-20 19:15 UTC (permalink / raw)
  To: linux-hotplug

On 2/20/2010 10:20 AM, Dan Nicholson wrote:
> On Sat, Feb 20, 2010 at 8:37 AM, Paul Bender<pebender@san.rr.com>  wrote:
>> On 2/20/2010 1:52 AM, huyle wrote:
>>>
>>> Hi,
>>> I am currently building an linux system for arm board. I am stuck with
>>> udev. So can you help me with some commands to compile udev with cross
>>> compilation?
>>> Thanks for your time
>>
>> I am cross compiling udev, but not for the ARM.
>>
>> The only trouble that I have encountered when cross compiling version 151 is
>> with the configure scripts determination of the pci.ids file location. This
>> is caused by autoconf's AC_CHECK_FILES macro generating an error when cross
>> compiling. However, this can be worked around by setting
>>
>> ac_cv_file__usr_share_pci_ids='no'
>> ac_cv_file__usr_share_hwdata_pci_ids='no'
>> ac_cv_file__usr_share_misc_pci_ids='no'
>>
>> in the build system's environment before running configure and setting the
>> configure script's --with-pci-ids-path argument.
>>
>> I have had this work around for so long that I have not given it much
>> thought. However, it is relatively easy to fix the configure script so that
>> it only attempting to determine the pci.ids file location when
>> --with-pci-ids-path is not set. Therefore, I have created and attached a
>> patch that should do this. Of course, after applying, you would need to
>> rerun autoconf or autoreconf.
>
> I think it would be better to just make the AC_CHECK_FILES conditional
> on cross compiling:
>
> if test $cross_compiling != yes; then
>      AC_CHECK_FILES...pci.ids not found, try --with-pci-ids-path
> else
>      # just assume pciids location
>      pciids=/usr/share/pci.ids
> fi
>
> Otherwise, people cross compiling will bomb unless they pass
> --with-pci-ids-path.

Unless I misunderstand AC_ARG_WITH, its third argument is for what to do 
when the corresponding --with configure argument is not provided, which 
is how it behaves in my build system (with autoconf 2.63). That is why I 
put the AC_CHECK_FILES in the third argument.

I like your patch better than mine as it does not generate the unhelpful 
error message:
"cannot check for file existence when cross compiling".
when the --with-pci-ids-path is not provided.

However, for cross compiling, it might be better to force the user to 
provide --with-pci-ids-path rather than assuming one since an incorrect 
assumed path would not be discovered until on target runtime.

> Likewise, you changed the 'test -n "$pciids"' to
> a 'test -x'. I don't know a lot of people with an executable pci
> database. Attached is a patch to do this.

Doh, that was supposed to be -z. Thanks for the catch.

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

* Re: Hi, how can I compile udev with cross compilation?
  2010-02-20  9:52 Hi, how can I compile udev with cross compilation? huyle
                   ` (2 preceding siblings ...)
  2010-02-20 19:15 ` Paul Bender
@ 2010-02-20 19:26 ` Dan Nicholson
  3 siblings, 0 replies; 5+ messages in thread
From: Dan Nicholson @ 2010-02-20 19:26 UTC (permalink / raw)
  To: linux-hotplug

On Sat, Feb 20, 2010 at 11:15 AM, Paul Bender <pebender@san.rr.com> wrote:
> On 2/20/2010 10:20 AM, Dan Nicholson wrote:
>>
>> On Sat, Feb 20, 2010 at 8:37 AM, Paul Bender<pebender@san.rr.com>  wrote:
>>>
>>> On 2/20/2010 1:52 AM, huyle wrote:
>>>>
>>>> Hi,
>>>> I am currently building an linux system for arm board. I am stuck with
>>>> udev. So can you help me with some commands to compile udev with cross
>>>> compilation?
>>>> Thanks for your time
>>>
>>> I am cross compiling udev, but not for the ARM.
>>>
>>> The only trouble that I have encountered when cross compiling version 151
>>> is
>>> with the configure scripts determination of the pci.ids file location.
>>> This
>>> is caused by autoconf's AC_CHECK_FILES macro generating an error when
>>> cross
>>> compiling. However, this can be worked around by setting
>>>
>>> ac_cv_file__usr_share_pci_ids='no'
>>> ac_cv_file__usr_share_hwdata_pci_ids='no'
>>> ac_cv_file__usr_share_misc_pci_ids='no'
>>>
>>> in the build system's environment before running configure and setting
>>> the
>>> configure script's --with-pci-ids-path argument.
>>>
>>> I have had this work around for so long that I have not given it much
>>> thought. However, it is relatively easy to fix the configure script so
>>> that
>>> it only attempting to determine the pci.ids file location when
>>> --with-pci-ids-path is not set. Therefore, I have created and attached a
>>> patch that should do this. Of course, after applying, you would need to
>>> rerun autoconf or autoreconf.
>>
>> I think it would be better to just make the AC_CHECK_FILES conditional
>> on cross compiling:
>>
>> if test $cross_compiling != yes; then
>>     AC_CHECK_FILES...pci.ids not found, try --with-pci-ids-path
>> else
>>     # just assume pciids location
>>     pciids=/usr/share/pci.ids
>> fi
>>
>> Otherwise, people cross compiling will bomb unless they pass
>> --with-pci-ids-path.
>
> Unless I misunderstand AC_ARG_WITH, its third argument is for what to do
> when the corresponding --with configure argument is not provided, which is
> how it behaves in my build system (with autoconf 2.63). That is why I put
> the AC_CHECK_FILES in the third argument.
>
> I like your patch better than mine as it does not generate the unhelpful
> error message:
> "cannot check for file existence when cross compiling".
> when the --with-pci-ids-path is not provided.
>
> However, for cross compiling, it might be better to force the user to
> provide --with-pci-ids-path rather than assuming one since an incorrect
> assumed path would not be discovered until on target runtime.

Yeah, there's definitely a balance there. That's why I added the
message so people would at least see what udev was going to use. I
just prefer the "don't make people pass options to configure unless
they definitely have to" approach. Could easily go both ways, though.

>> Likewise, you changed the 'test -n "$pciids"' to
>> a 'test -x'. I don't know a lot of people with an executable pci
>> database. Attached is a patch to do this.
>
> Doh, that was supposed to be -z. Thanks for the catch.

With that fix I think either patch would be fine.

--
Dan

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

end of thread, other threads:[~2010-02-20 19:26 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-02-20  9:52 Hi, how can I compile udev with cross compilation? huyle
2010-02-20 16:37 ` Paul Bender
2010-02-20 18:20 ` Dan Nicholson
2010-02-20 19:15 ` Paul Bender
2010-02-20 19:26 ` Dan Nicholson

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