Hi Ludovic, On 06/10/2015, Ludovic Courtès <[email protected]> wrote: > Alex Vong <[email protected]> skribis: > >> On 05/10/2015, Mathieu Lirzin <[email protected]> wrote: >>> Alex Vong <[email protected]> writes: > > [...] > >>> I'm not competent enough to judge if it's a useful build-system to add >>> but >>> this should be done in another commit and in >>> “guix/guix/build/bootstap-build-system.scm” if yes. >>> >> I should be more a newbie than you do. I just wonder if it is possible >> to modify the build system by a little, such as adding a bootstrap >> phase and some new inputs, and then give a name to the new build >> system. Since it seems many packages are repeating this step, I think >> it will be great if we have this mean of abstraction. > > It’s not uncommon, indeed. However, the details on how to bootstrap are > not standard: Often ‘autoreconf -vfi’ will do, sometimes it’s > ‘./bootstrap’, sometimes ‘./autogen.sh’, etc. > > Now the proposed build system could maybe try these variants one after > the other. > > Also, the set of dependencies varies: sometimes it’s Autoconf, sometimes > Autoconf+Automake, sometimes Autoconf+Automake+Libtool, etc. So I think > the set of dependencies should be kept explicit–i.e., packages have to > add stuff to ‘native-inputs’. > > Could you try to make this build system as a standalone commit, leaving > out the build flags code for a separate discussion? > > The commit would add (guix build-system gnu-bootstrap) for instance (I > call it this way because it bootstraps specifically the GNU build > system, not CMake, etc.) and (guix build gnu-bootstrap-build-system). > The latter would simply add one phase to ‘%standard-phases’. > > Does that make sense? > I think if the set of dependencies should be kept explicit, then it seems the only thing we are left to abstract away is trying the commands ``autoreconf -vfi'', ``./bootstrap'' and ``./autogen.sh''. But I think the command is better left for the package maintainer to decide since the bootstrap script may have unusual name. (I have seen ``bootstrap.sh'' for instance.) My original though is to let the package maintainer to pass in the bootstrap command string. However, if it is the case, then gnu-bootstrap build-system isn't abstracting anything at all. So I think I'll go back to the original solution of adding a new phase and specifying autotools dependencies instead.
>>>> + >>>> +(define-public mlucas >>>> + ;; descriptions of the package >>>> + (let ((short-description >>>> + "Program to perform Lucas-Lehmer test on a Mersenne number") >>>> + (long-description >>>> + "mlucas is an open-source (and free/libre) program >>> ^^^ >>> >>> Being a GNU project, we use the term “free software”, but in the context >>> of >>> a >>> description it is not relevant to describe freedom of a package since >>> every >>> package in Guix is free software. >>> >> "open-source" is actually mentioned in the upstream description, so I >> add the description inside the parenthesis. But I can remove both if >> it is desired. > > Yes please. Everything is free in Guix anyway. :-) > > Also, as Alex mentions, the synopsis and description must be literal > strings in the ‘description’ and ‘synopsis’ fields. This allows those > strings to be extracted for translation (see “Synopses and Descriptions” > in the manual.) > Yes I will fix those. > Thank you, and welcome! > > Ludo’. > Thanks too! Cheers, Alex
