| | 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/>. |
| |
|