1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-04-30 03:40:34 +02:00

Add more detailed instructions into the HACKING file.

Until now, the ./meta/guile was not mentioned anywhere, and therefore it
was not obvious how to run the locally compiled Guile without installing
it.

While modifying the file, I took the liberty to also mention a bit about
compiling Guile using Guix.

Finally, the header lines where cleaned up, ensuring all of them end at
70 and have a leading space.

* HACKING (Hacking It Yourself): Add Guix instructions.  Add a note
about meta/guile script.
(Sample GDB Initialization File),
(Naming conventions): Clean up the header line.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
This commit is contained in:
Tomas Volf 2024-01-24 17:48:04 +01:00 committed by Ludovic Courtès
parent 49f24d2bf5
commit 0933791c49
No known key found for this signature in database
GPG key ID: 090B11993D9AEBB5

38
HACKING
View file

@ -26,6 +26,40 @@ http://www.gnu.org/software/guile/mail/mail.html for more info.
Hacking It Yourself ================================================== Hacking It Yourself ==================================================
You can spawn a shell with all the required dependencies using GNU Guix
by running the following command:
guix shell -D -f guix.scm --pure
In this way, you can effortlessly compile Guile from the Git checkout
with just these three lines:
guix shell -CP -D -f guix.scm -- ./autogen.sh
guix shell -CP -D -f guix.scm -- ./configure \
--enable-mini-gmp --disable-static
guix shell -CP -D -f guix.scm -- make
Disabling of the static libraries is optional, but it does speed up the
builds, and you are unlikely to need them for local development.
Note: Currently JIT causes Guile to crash in obscure ways on GNU Hurd,
so on that platform you want to also pass the --disable-jit flag
to the configure script.
Note: On any i*86 architecture, you also need to pass in the compiler
flag -fexcess-precision=standard in order to get the test suite
to pass. That can be done by passing an additional argument to
the configure script:
CFLAGS='-g -O2 -fexcess-precision=standard'
Once that finishes, you can execute your newly compiled Guile using the
./meta/guile script:
$ guix shell -CP -D -f guix.scm -- ./meta/guile -v | head -n1
guile (GNU Guile) 3.0.9.139-d7cf5-dirty
For more manual approach, read on.
When Guile is obtained from Git, a few extra steps must be taken When Guile is obtained from Git, a few extra steps must be taken
before the usual configure, make, make install. You will need to have before the usual configure, make, make install. You will need to have
up-to-date versions of the tools as listed below, correctly installed. up-to-date versions of the tools as listed below, correctly installed.
@ -73,7 +107,7 @@ Here is the authoritative list of tool/version/platform tuples that
have been known to cause problems, and a short description of the problem. have been known to cause problems, and a short description of the problem.
Sample GDB Initialization File========================================= Sample GDB Initialization File =======================================
In GDB, you probably want to load the gdbinit file included with Guile, In GDB, you probably want to load the gdbinit file included with Guile,
which defines a number of GDB helpers to inspect Scheme values. which defines a number of GDB helpers to inspect Scheme values.
@ -215,7 +249,7 @@ The goal is to reduce (and over time, eliminate) spurious diffs.
For Emacs users: For Emacs users:
(add-hook 'before-save-hook 'delete-trailing-whitespace) (add-hook 'before-save-hook 'delete-trailing-whitespace)
Naming conventions ================================================= Naming conventions ===================================================
We use certain naming conventions to structure the considerable number We use certain naming conventions to structure the considerable number
of global identifiers. All identifiers should be either all lower of global identifiers. All identifiers should be either all lower