mirror of
https://github.com/coreutils/coreutils.git
synced 2024-12-18 14:27:41 +08:00
bb9197c406
* README-release: fix the `make` command, and mention how to get the latest results without requring running a system with the latest kernel. * src/local.mk (src/fs-latest-magic.h): A new target to document how/where to place the latest magic header. (src/fs-kernel-magic): Adjust to include separately downloaded header if available. (src/fs-magic): Undefine MANPAGER as it may impact the ability to pipe the output of man(1). (fs-magic-compare): Don't echo the commands run as they're distracting from the output which needs to be examined.
125 lines
4.4 KiB
Plaintext
125 lines
4.4 KiB
Plaintext
Here are most of the steps we (maintainers) follow when making a release.
|
|
|
|
* start from a clean, up-to-date git directory.
|
|
|
|
git checkout master; git pull
|
|
|
|
* Run ./configure && make maintainer-clean
|
|
|
|
* Ensure that the desired versions of autoconf, automake, bison, etc.
|
|
are in your PATH. See the buildreq list in bootstrap.conf for
|
|
the complete list.
|
|
|
|
* Ensure that you're on "master" with no uncommitted diffs.
|
|
This should produce no output: git checkout master; git diff
|
|
|
|
* Ensure that you've pushed all changes that belong in the release
|
|
and that the NixOS/Hydra autobuilder is reporting all is well:
|
|
|
|
http://hydra.nixos.org/jobset/gnu/coreutils-master
|
|
|
|
* Run bootstrap one last time. This downloads any new translations:
|
|
|
|
./bootstrap
|
|
|
|
FIXME: enable excluded programs like arch? to get their manual pages?
|
|
|
|
* Check for new file system types by running the following command on
|
|
a system with the most recent kernel possible, or with the latest
|
|
upstream include/uapi/linux/magic.h made available at src/fs-latest-magic.h
|
|
|
|
make src/fs-magic-compare
|
|
|
|
If it reports new file system magic numbers, add them to src/stat.c.
|
|
If it is a remote file system, add the new S_MAGIC_* name you created
|
|
in stat.c to the list of remote file system types in src/tail.c's
|
|
fremote function.
|
|
|
|
* Pre-release testing:
|
|
|
|
Run the following on at least one SELinux-enabled (enforcing) and
|
|
one non-SELinux system:
|
|
|
|
n=$(( ($(nproc) + 1) / 2 ))
|
|
sudo env PATH="$PATH" NON_ROOT_USERNAME=$USER make -k -j$(nproc) check-root\
|
|
&& make distcheck \
|
|
&& make -j$n check RUN_VERY_EXPENSIVE_TESTS=yes RUN_EXPENSIVE_TESTS=yes
|
|
|
|
If testing on systems with a non standard default shell, spurious failures
|
|
may occur. Often there are other shells available, and you can select
|
|
those by using for example, SHELL=bash in the commands above.
|
|
|
|
Note that the use of -j$n tells make to use approximately half of the
|
|
available processing units. If you use -jN, for larger N, some of the
|
|
expensive tests are likely to interfere with concurrent performance-measuring
|
|
or timing-sensitive tests, resulting in spurious failures.
|
|
|
|
If "make distcheck" doesn't run "make syntax-check" for you, then run
|
|
it manually:
|
|
|
|
make syntax-check
|
|
|
|
* Set the date, version number, and release type [stable/alpha/beta] on
|
|
line 3 of NEWS, commit that, and tag the release by running e.g.,
|
|
|
|
build-aux/do-release-commit-and-tag X.Y stable
|
|
|
|
* Run the following to create release tarballs. Your choice selects the
|
|
corresponding upload-to destination in the emitted gnupload command.
|
|
The different destinations are specified in cfg.mk. See the definitions
|
|
of gnu_ftp_host-{alpha,beta,stable}.
|
|
|
|
# "TYPE" must be stable, beta or alpha
|
|
make TYPE
|
|
|
|
* Test the tarball. copy it to a few odd-ball systems and ensure that
|
|
it builds and passes all tests.
|
|
|
|
* While that's happening, write the release announcement that you will
|
|
soon post. Start with the template, $HOME/announce-coreutils-X.Y
|
|
that was just created by that "make" command.
|
|
|
|
Once all the builds and tests have passed,
|
|
|
|
* Run the gnupload command that was suggested by your "make stable" run above.
|
|
|
|
* Wait a few minutes (maybe up to 30?) and then use the release URLs to
|
|
download all tarball/signature pairs and use gpg --verify to ensure
|
|
that they're all valid.
|
|
|
|
* Push the NEWS-updating changes and the new tag:
|
|
|
|
v=$(cat .prev-version)
|
|
git push origin master tag v$v
|
|
|
|
* Announce it on Savannah first, so you can include the preferable
|
|
savannah.org announcement link in the email message.
|
|
|
|
From here:
|
|
https://savannah.gnu.org/projects/coreutils/
|
|
click on the "submit news", then write something like the following:
|
|
(If there is no such button, then enable "News" for the project via
|
|
the Main -> "Select Features" menu item, or via this link:
|
|
https://savannah.gnu.org/project/admin/editgroupfeatures.php?group=coreutils)
|
|
|
|
Subject: coreutils-X.Y released [stable]
|
|
+verbatim+
|
|
...paste the announcement here...
|
|
-verbatim-
|
|
|
|
Then go here to approve it:
|
|
https://savannah.gnu.org/news/approve.php?group=coreutils
|
|
|
|
* Send the announcement email message.
|
|
|
|
* Approve the announcement here:
|
|
http://lists.gnu.org/mailman/admindb/coreutils-announce
|
|
|
|
* After each non-alpha release, update the on-line manual accessible via
|
|
|
|
http://www.gnu.org/software/coreutils/manual/
|
|
|
|
by running this:
|
|
|
|
build-aux/gnu-web-doc-update
|