| Building from a Git repository -*- outline -*- |
|
|
| These notes intend to help people working on the checked-out sources. |
| These requirements do not apply when building from a distribution tarball. |
| If this package has a file HACKING, please also read that file for |
| more detailed contribution guidelines. |
|
|
| * Requirements |
|
|
| We've opted to keep only the highest-level sources in the Git repository. |
| This eases our maintenance burden (fewer merges etc.), but imposes more |
| requirements on anyone wishing to build from the just-checked-out sources. |
| (The requirements to build from a release are much less and are just |
| the requirements of the standard './configure && make' procedure.) |
| Specific development tools and versions will be checked for and listed by |
| the bootstrap script. See README-prereq for specific notes on obtaining |
| these prerequisite tools. |
| |
| Valgrind <https://valgrind.org/> is also highly recommended, if |
| Valgrind supports your architecture. See also README-valgrind |
| (if present). |
| |
| While building from a just-cloned source tree may require installing a |
| few prerequisites, later, a plain 'git pull && make' typically suffices. |
| |
| * First Git checkout |
| |
| You can get a copy of the source repository like this: |
| |
| $ git clone https://git.savannah.gnu.org/git/<packagename> |
| $ cd <packagename> |
| |
| where '<packagename>' stands for 'coreutils' or whatever other package |
| you are building. |
| |
| To use the most-recent Gnulib (as opposed to the Gnulib version that |
| the package last synchronized to), do this next: |
| |
| $ git submodule foreach git pull origin master |
| $ git commit -m 'build: update gnulib submodule to latest' gnulib |
| |
| As an optional step, if you already have a copy of the Gnulib Git |
| repository, then you can use it as a reference to reduce download |
| time and file system space requirements: |
| |
| $ export GNULIB_REFDIR=/path/to/gnulib |
| |
| The next steps are to get and check other files needed to build, |
| and complete the build: |
| |
| $ make -f cfg.mk |
| |
| For reference the above command runs the following steps, |
| which can be done individually if required to give more control: |
| |
| $ ./bootstrap |
| $ ./configure --quiet #[--disable-gcc-warnings] [*] |
| $ make #[check] |
| |
| At this point, there should be no difference between your local copy, |
| and the Git master copy: |
| |
| $ git diff |
| |
| should output no difference. |
| |
| Enjoy! |
| |
| [*] By default GCC warnings are enabled when building from Git. |
| If you get warnings with recent GCC and Glibc with default |
| configure-time options, please report the warnings to the bug |
| reporting address of this package instead of to bug-gnulib, |
| even if the problem seems to originate in a Gnulib-provided file. |
| If you get warnings with other configurations, you can run |
| './configure |
| to build quietly or verbosely, respectively. |
| |
|
|
| * Submitting patches |
|
|
| If you develop a fix or a new feature, please send it to the |
| appropriate bug-reporting address as reported by the |
| each program. One way to do this is to use vc-dwim |
| <https://www.gnu.org/software/vc-dwim/>), as follows. |
|
|
| Run the command "vc-dwim --initialize" from the top-level directory |
| of this package's git-cloned hierarchy. |
| |
| Edit the (empty) ChangeLog file that this command creates, creating a |
| properly-formatted entry according to the GNU coding standards |
| <https://www.gnu.org/prep/standards/html_node/Change-Logs.html>. |
| |
| Make your changes. |
| |
| Run the command "vc-dwim" and make sure its output (the diff of all |
| your changes) looks good. |
| |
| Run "vc-dwim --commit". |
| |
| Run the command "git format-patch --stdout -1", and email its output |
| in, using the output's subject line. |
|
|
| |
|
|
| Copyright (C) 2002-2025 Free Software Foundation, Inc. |
|
|
| This program is free software: you can redistribute it and/or modify |
| it under the terms of the GNU General Public License as published by |
| the Free Software Foundation, either version 3 of the License, or |
| (at your option) any later version. |
|
|
| This program is distributed in the hope that it will be useful, |
| but WITHOUT ANY WARRANTY; without even the implied warranty of |
| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| GNU General Public License for more details. |
|
|
| You should have received a copy of the GNU General Public License |
| along with this program. If not, see <https://www.gnu.org/licenses/>. |
|
|