bug-gzip
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

bug#51522: [PATCH] maint: modernize README-{hacking,prereq}


From: Paul Eggert
Subject: bug#51522: [PATCH] maint: modernize README-{hacking,prereq}
Date: Sat, 30 Oct 2021 16:52:12 -0700

---
 README-hacking | 110 ++++++++++++++++++++++++++++++++++++-------------
 README-prereq  |  36 ++++++++++++++++
 2 files changed, 118 insertions(+), 28 deletions(-)
 create mode 100644 README-prereq

diff --git a/README-hacking b/README-hacking
index 0efda0d..44cb75b 100644
--- a/README-hacking
+++ b/README-hacking
@@ -1,56 +1,112 @@
--*- outline -*-
+Building from a Git repository                         -*- outline -*-
 
-These notes intend to help people working on the CVS version of
-this package.
+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
 
-Only the sources are installed in the CVS repository (to ease the
-maintenance, merges etc.), therefore you will have to get the latest
-stable versions of the maintainer tools we depend upon, including:
-
-- Automake <https://www.gnu.org/software/automake/>
-- Autoconf <https://www.gnu.org/software/autoconf/>
-- Tar <https://www.gnu.org/software/tar/>
-- Wget <https://www.gnu.org/software/wget/>
+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 <http://valgrind.org/> is also highly recommended, if
-Valgrind supports your architecture.
+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 git://git.sv.gnu.org/<packagename>
+        $ cd <packagename>
 
-Only building the initial full source tree will be a bit painful,
-later, a plain `cvs update -P && make' should be sufficient.
+where '<packagename>' stands for 'coreutils' or whatever other package
+you are building.
 
-* First CVS checkout
+To use the most-recent Gnulib (as opposed to the Gnulib version that
+the package last synchronized to), do this next:
 
-Obviously, if you are reading these notes, you did manage to check out
-this package from CVS.  The next step is to get other files needed to
-build, which are extracted from other source packages:
+        $ 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_SRCDIR=/path/to/gnulib
+
+The next step is to get and check other files needed to build,
+which are extracted from other source packages:
 
         $ ./bootstrap
 
 And there you are!  Just
 
-        $ ./configure
+        $ ./configure --quiet #[--disable-gcc-warnings] [*]
         $ make
         $ make check
 
 At this point, there should be no difference between your local copy,
-and the CVS master copy:
+and the Git master copy:
 
-        $ cvs diff
+        $ 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 --disable-gcc-warnings' or 'make WERROR_CFLAGS='
+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 --help option of
+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-2006, 2009-2021 Free Software Foundation, Inc.
+Copyright (C) 2002-2021 Free Software Foundation, Inc.
 
-This program is free software; you can redistribute it and/or modify
+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, or (at your option)
-any later version.
+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
@@ -58,6 +114,4 @@ 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, write to the Free Software
-Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301, USA.
+along with this program.  If not, see <https://www.gnu.org/licenses/>.
diff --git a/README-prereq b/README-prereq
new file mode 100644
index 0000000..d12d1da
--- /dev/null
+++ b/README-prereq
@@ -0,0 +1,36 @@
+This gives some notes on obtaining the tools required for development.
+These tools can be used by the 'bootstrap' and 'configure' scripts,
+as well as by 'make'.  They include:
+
+- Autoconf   <https://www.gnu.org/software/autoconf/>
+- Automake   <https://www.gnu.org/software/automake/>
+- Git        <https://git-scm.com/>
+- M4         <https://www.gnu.org/software/m4/>
+- Make       <https://www.gnu.org/software/make/>
+- Perl       <https://www.cpan.org/>
+- Tar        <https://www.gnu.org/software/tar/>
+- Texinfo    <https://www.gnu.org/software/texinfo/>
+- Wget       <http://www.gnu.org/software/wget/>
+- XZ Utils   <https://tukaani.org/xz/>
+
+It is generally better to use official packages for your system.
+If a package is not officially available you can build it from source
+and install it into a directory that you can then use to build this
+package.  If some packages are available but are too old, install the
+too-old versions first as they may be needed to build newer versions.
+
+Here is an example of how to build a program from source.  This
+example is for Autoconf; a similar approach should work for the other
+developer prerequisites.  This example assumes Autoconf 2.71; it
+should be OK to use a later version of Autoconf, if available.
+
+  prefix=$HOME/prefix   # (or wherever else you choose)
+  export PATH=$prefix/bin:$PATH
+  wget https://ftp.gnu.org/pub/gnu/autoconf/autoconf-2.71.tar.gz
+  gzip -d <autoconf-2.71.tar.gz | tar xf -
+  cd autoconf-2.71
+  ./configure --prefix=$prefix
+  make install
+
+Once the prerequisites are installed, you can build this package as
+described in README-hacking.
-- 
2.32.0






reply via email to

[Prev in Thread] Current Thread [Next in Thread]