coreutils
[Top][All Lists]
Advanced

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

Re: Building a subset of coreutils


From: Paul Moore
Subject: Re: Building a subset of coreutils
Date: Mon, 13 May 2013 20:18:27 +0100

On 13 May 2013 20:04, Eric Blake <address@hidden> wrote:
On 05/13/2013 12:41 PM, Paul Moore wrote:
> I'm taking my first steps at building coreutils from scratch, and I'm
> interested in how I would limit the build to a subset of the full list of
> tools. From my investigations, it seems to me that I can modify
> build-aux/gen-lists-of-programs.sh to limit the list of tools that get
> built - but that does not seem to remove the unneeded parts of gnulib. It
> looks like I can remove the parts of gnulib that I don't need by modifying
> bootstrap.conf.
>
> However, short of manually analysing each of the tools that I include, I
> don't see a way of determining which gnulib functions can be omitted - i.e.
> a list of which tools use which gnulib facilities.
>
> As an example, if I *just* wanted to build numfmt, sort, and date, how
> would I establish what to include?

I would just let gnulib do its thing.  It's built as a static library,
so even though you spend more time than necessary building files that
aren't used in the subset of executables you want, you aren't bloating
your resulting binaries any.  Furthermore, gnulib tries to build as
little as possible; if you have an up-to-date GNU/Linux system, there's
already quite a few source files of gnulib that aren't even built
because you have no bugs to be worked around in the first place.

Sorry, I should have given a bit more of my background. There are two reasons for doing this. The first is purely educational, I want to try to understand how the autoconf/automake/gnulib infrastructure all works - up until now, I've just been an "end user", using what was generated, but I want to try to understand how it all actually works (and yes, I know coreutils is ridiculously complicated for a beginner, but the toy examples I have seen are *too* simple, and I don't have any examples of my own). The manuals are fine, but I find that hacking on a "real" example is far more informative.

The second reason is that I want to try to "strip out" the parts of coreutils that are pure text processing (things like sort, numfmt, date, ... as I mentioned) with the intention of trying to get them to compile on Windows. For that to work, I need to remove the parts of gnulib (like mountlist and userspec) that simply won't compile on Windows. That's the bit that makes "just letting gnulib do its thing" impossible - although I guess I could use make -k to skip the build failures for those modules, so that might be an option...

I hope this clarifies, and apologies for being vague in my original post.

Paul.

reply via email to

[Prev in Thread] Current Thread [Next in Thread]