nano/README.hacking
Benno Schulenberg ec177c84b3 build: require version 0.20 of gettext for building nano from git
Gettext-0.20 is the first version where its `autopoint` does not
overwrite the newer 'extern-inline.m4' from gnulib.

Version 0.20 is five years old, so most users will be on a distro
that includes that version of gettext or a newer one.
2024-06-17 09:50:08 +02:00

124 lines
3.6 KiB
Plaintext

INSTRUCTIONS FOR COMPILING AND INSTALLING NANO FROM GIT
=======================================================
The latest changes and fixes for GNU nano are available via git, but
building this needs a bit more care than the official tarballs.
Prerequisites
-------------
To successfully compile GNU nano from git, you'll need the following:
autoconf (version >= 2.69)
automake (version >= 1.14)
autopoint (version >= 0.20)
gcc (version >= 5.0)
gettext (version >= 0.20)
git (version >= 2.7.4)
groff (version >= 1.12)
make (any version)
pkg-config (version >= 0.22)
texinfo (version >= 4.0)
You will also need to have the header files for ncurses installed,
from libncurses-dev on Debian, ncurses-devel on Fedora, or similar.
These should all be available in your distro's package manager or
software center, or otherwise on any GNU mirror.
Clone the source
----------------
To obtain the current nano development branch (called 'master'), use the
following command. It will create in your current working directory a
subdirectory called 'nano' containing a copy of all of the files:
$ git clone git://git.savannah.gnu.org/nano.git
Generate the configure script
-----------------------------
Once you have the sources in the "nano" directory,
$ cd nano
$ ./autogen.sh
This will set up a configure script and a Makefile.in file.
Configure your build
--------------------
To configure your build, run the configure script from the nano source
directory:
$ ./configure [--add-options-here]
Build and install
-----------------
From the nano source directory, build the code with:
$ make
Then, once it's done compiling, run:
$ make install
which should copy various files (i.e. the nano executable, the info and
man pages, and syntax highlighting pattern files) to their appropriate
directories.
If you're installing into the default install directory (/usr/local),
you'll need to run that "make install" command with root privileges.
Problems?
---------
Please submit any bugs you find in the code in git via the bug tracker
on Savannah (https://savannah.gnu.org/bugs/?group=nano).
Contributing something
----------------------
If you have a fix for a bug, or the code for a new or improved feature,
first create a branch off of master:
$ git checkout -b somename
Then change the code so it does what you want, and commit it together
with your Sign-off:
$ git commit -as
In the commit message (after the one-line summary) give a rationale
for the change. With your Signed-off-by you declare that the code is
yours, or that you are free to reuse it, and that you submit it under
the license that covers nano. Then create a patch (or patches):
$ git format-patch master
Send that patch (or patches) to <nano-devel@gnu.org>, as an attachment
or with git send-email.
To keep most lines of nano's source code within a width of 80 characters,
a tab size of four should be used. So in your nanorc file you may want
to include 'set tabsize 4', or you could use -T4 on the command line.
To make git display things as intended, you can do:
$ git config --local core.pager "less -x1,5"
To see all types that are used in nano's source code colorized as types,
you can add these lines to your ~/.nanorc:
extendsyntax c color green "\<struct (dirent|option|passwd)\>"
extendsyntax c color green "\<struct (sigaction|stat|termios)\>"
extendsyntax c color green "\<struct (timespec|vt_stat|winsize)\>"
extendsyntax c color green "\<([[:lower:]_]+(struct|type)|va_list)\>"