Re: [PATCH v2 2/2] kbuild: handle excessively long argument lists

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Sat, Jan 16, 2021 at 5:15 AM <jjohnson@xxxxxxxxxxxxxx> wrote:
>
> On 2021-01-14 17:12, Masahiro Yamada wrote:
> > On Fri, Jan 15, 2021 at 6:50 AM Jeff Johnson <jjohnson@xxxxxxxxxxxxxx>
> > wrote:
> >>
> >> From: Mahesh Kumar Kalikot Veetil <mkalikot@xxxxxxxxxxxxxx>
> >>
> >> Modules with a large number of compilation units may be
> >> exceeding AR and LD command argument list. Handle this gracefully by
> >> writing the long argument list in a file. The command line options
> >> read from file are inserted in place of the original @file option.
> >>
> >> The usage is well documented at
> >> https://www.gnu.org/software/make/manual/html_node/File-Function.html
> >>
> >> Signed-off-by: Mahesh Kumar Kalikot Veetil <mkalikot@xxxxxxxxxxxxxx>
> >> Signed-off-by: Jeff Johnson <jjohnson@xxxxxxxxxxxxxx>
> >> ---
> >
> >
> >
> >
> > First, is this a real problem?
> > If so, which module is exceeding the command line limit?
>
> On 2021-01-14 17:12, Masahiro Yamada wrote:
> > First, is this a real problem?
> > If so, which module is exceeding the command line limit?
>
> Mahesh & I appreciate all of the feedback.
>
> The issue is seen in an Android environment with an out-of-tree
> driver. The combination of long path names and a large number
> of source files is leading to the issue.
>
> Since Mahesh & I are not Kbuild gurus, is there an alternative
> solution to this issue?
>
> Jeff


I see.

The support for out-of-tree modules
is not nice in this regard, but fixing it
would need many changes.


The long-term solution might be to upstream your driver,
but it might not be possible.






One cheesy workaround might be to point the module path
via a symbolic link.


Let's say your module is located in a very deep
directory,
/home/foo/long/long/.../path/to/your/module


 make M=/home/foo/long/long/.../path/to/your/module modules

would fail due to the too long command line.




First, create a symbolic link as follows:

 ln -s /home/foo/long/long/.../path/to/your/module mod_dir


Then, pass the symbolic link to M= option.

 make M=mod_dir modules




-- 
Best Regards
Masahiro Yamada



[Index of Archives]     [Linux&nblp;USB Development]     [Linux Media]     [Video for Linux]     [Linux Audio Users]     [Yosemite Secrets]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux