reproduce-devel
[Top][All Lists]
Advanced

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

[task #15390] Installing GNU C Library within project


From: Mohammad Akhlaghi
Subject: [task #15390] Installing GNU C Library within project
Date: Thu, 27 Aug 2020 16:59:07 -0400 (EDT)
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:80.0) Gecko/20100101 Firefox/80.0

Follow-up Comment #9, task #15390 (project reproduce):

Thanks for bringing this up Boud. Gnulib is a very unique software: it isn't
meant to be built (or installed!) independently. 

Gnulib is meant to be included into the source of programs and compiled and
built with the programs. I heavily rely on Gnulib in Gnuastro ;-)! 

The basic idea behind Gnulib is that it contains a growing fraction of the GNU
C Library components (and many more!) in a very portable manner (with internal
checks for different OSs and hardware), classified as modules. 

As a software author, you tell tell which modules you want in 'bootstrap.conf'
(for example, see Gnuastro's 'bootstrap.conf'
<http://git.savannah.gnu.org/cgit/gnuastro.git/tree/bootstrap.conf>), and
during the bootstrapping of your software (Gnulib actually gives you a
'bootstrap' script to put in your source), all the necessary Gnulib source
files are copied into your project's source. 

Only after bootstrapping is done do you run Autoconf and Automake to generate
the './configure' and 'Makefile.in' files. Gnulib's modules have their own
'./configure' stage tests. In the case of Gnuastro, +95% of the configure-time
tests are those of Gnulib! Then, when the user runs 'make', Gnulib will
compile as a static/internal library before your program's source, and thus
static-links to (gets copied inside) your library/executables. In the case of
Gnuastro, its in the 'libgnuastro.so' library, which all the programs then
link with dynamically.

The great result is that the software actually has all the requested
components of the GNU C Library in its own source and it uses them! 

So for example even when you compile Gnuastro on a macOS, it actually uses its
own GNU C Library that is compiled on with it, and can provide an
identical/reproducible behavior and output :-). 

This is the reason that I mentioned it in the discussion of the Maneage paper:
it helps so much in reproducibility and helps the software authors so much
(they can rely on GNU C Library even on systems that don't have it!).

    _______________________________________________________

Reply to this item at:

  <https://savannah.nongnu.org/task/?15390>

_______________________________________________
  Message sent via Savannah
  https://savannah.nongnu.org/




reply via email to

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