newsyslog
所属分类:Linux/Unix编程
开发工具:C
文件大小:0KB
下载次数:0
上传日期:2024-01-25 18:12:47
上 传 者:
sh-1993
说明: 增强的、更可移植的“新闻日志”版本--用于归档日志文件的工具
(An enhanced and more portable version of `newsyslog` -- a tool for archiving log files)
文件列表:
compat/
AUTHORS
COPYING
ChangeLog
Makefile.BSD.in
Makefile.am
NEWS
ToDo
VERSION
acinclude.m4
configure.in
mksigname.sh
newsyslog.8so.in
newsyslog.c
newsyslog.conf
newsyslog.conf.5so.in
newsyslog.h
newsyslog2netbsd.sh
setgroupent.c
setpassent.c
sig2str.c
siglist.in
snprintf.c
str2sig.3
str2sig.c
strdup.c
strerror.c
strptime.c
strsignal.c
strtok.c
README.developers - Instructions for developers with CVS access.
Pre-Requisites:
This package is configured and built with GNU Autoconf 2.57 or newer
and GNU Automake 1.7 or newer. They require Perl-5.005 or newer.
Initial Builds:
In order to pre-build the necessary config files from a freshly checked
out repository you must run the following commands in the given order:
autoreconf -f -i
Now you can proceed with the normal build process (./configure && gmake).
Note that running "gmake maintainer-clean" should remove all files that
are not stored in CVS -- i.e. all those that will be re-created by the
above sequence of commands.
(You'll note the above instructions use 'gmake' -- GNU Automake
makefiles are designed to work best with GNU Make, especially for
various configuration maintenance tasks, though the *BSD 'pmake'
version usually works fine too, except for some VPATH builds.)
Making a New Release:
In order to build releases you *MUST* be using a version of GNU Automake
that includes support for proper CVS-based release management using the
'make dist' approach.
New releases should be adequately tested, of course, and you should
check that all changes have been commited to CVS. The "NEWS" file
should be checked to ensure it has been updated with notes about all
user-visible changes. If you're making a full release you can coalesce
any entries from previous alpha and beta releases. If there's a GNATS
PR category for the project you should check that there are no absolute
"show-stopper" bugs in the pending release.
To test the build system and to test the entire package run:
autoreconf -f -i
./configure
gmake distcheck
This will create a trial distribution archive, extract it in a
sub-directory, configure it, build it (using a reach-over VPATH build),
run any tests (gmake check), and install it in another private
sub-directory. WARNING: You _must_ use 'gmake' for the this particular
target -- BSD Pmake fails in the 'make dist-gzip' part of the VPATH
build because for some unknown reason it tries to update the "source"
version of "$(DIST_MAKE)" files instead of creating them in the build
directory.
To clean up after "gmake distcheck" you may need to give yourself
permissions on the directory (sometimes the ${PACKAGE}-${VERSION}
directory is not removed as it has been made read-only):
sh
. ./VERSION
chmod -R u+rw ${PACKAGE}-${VERSION}
rm -rf ${PACKAGE}-${VERSION}
rm -f ${PACKAGE}-${VERSION}.tar.gz
exit
Once you're ready to more widely test your release, and you've commited
any and all changes you've made, check the "VERSION" identifier in the
file VERSION again. After each release it should have been updated file
by setting it to the next expected release and then appending a
"-Preview.0" suffix to it so as to keep any trial distribution copies
clearly identifiable. Don't forget to check in any change to the
VERSION file right away. You may also want to "cvs tag" each trial
distribution of your preview releases as well, but it's not really
necessary unless multiple people will be co-operating with the testing.
cat VERSION
Once this is all done run "gmake distcheck" again to create the actual
preview release distribution. Immediately afterwards you should
increment the trailing number after the "-Preview" suffix on the
"VERSION" identifier in the VERSION file and check in this change. The
idea is to keep the checked-in "VERSION" identifier one ahead of the
most recently created (trial) distribution. This is especially
important if you publish or distribute the trial distribution in any
way, and of course this is extremely important if multiple people are
working on the project -- you want their next update to show an
unreleased version identifier so as not to confuse anything they build
with your (trial) distribution.
autoreconf -f -i
./configure
gmake distcheck
sh
. ./VERSION
mv ${PACKAGE}-${VERSION}.tar.gz ~ftp/pub/preview
chmod -R u+rw ${PACKAGE}-${VERSION}
rm -rf ${PACKAGE}-${VERSION}
exit
vi VERSION
cvs commit -m '- another preview release starts' VERSION
You should now copy this preview release distribution to other types of
machines and platforms and build and check it there too.
Once you think you're ready to try an actual release, update the
"VERSION" identifier in the VERSION file (see the notes below on release
numbers), and check this in.
cat VERSION
vi VERSION
sh
. ./VERSION
cvs commit -m '- time to release $VERSION' VERSION
exit
To tag, export, and create the final distribution archive you need to
run the following commands (assuming you've already run the initial
GNU Auto* commands detailed above):
sh # start a sub-shell to make resetting env easier
place_to_build_releases=/work/woods/release.d # for example
gmake distclean
. ./VERSION
tag=$(echo $VERSION | tr . _)
cvs tag -c ${PACKAGE}-${tag} .
export CVSROOT=$(cat CVS/Root)
cd $place_to_build_releases
cvs export -kv -r ${PACKAGE}-${tag} -d ${PACKAGE}-${VERSION}-export $PACKAGE
cd ${PACKAGE}-${VERSION}-export
autoreconf -f -i
sh ${PACKAGE}2netbsd.sh # configures best default paths...
rm -rf import.d # clean up after ${PACKAGE}2netbsd.sh
gmake dist # or distcheck
mv ${PACKAGE}-${VERSION}.tar.gz ..
gmake distclean
cd ..
pax -rzf ${PACKAGE}-${VERSION}.tar.gz
diff -r --brief ${PACKAGE}-${VERSION}-export ${PACKAGE}-${VERSION}
The last step ensures that everything in the CVS module is distributed.
If the 'diff' command reveals any files are missing then you need to go
back, untag the whole module, fix Makefile.am, and re-test.
If all goes well you can put $PACKAGE-$VERSION.tar.gz up for access and
copy the new project page sub-files into place with this command:
rcp ${PACKAGE}-${VERSION}.tar.gz ftp:~ftp/pub/local # scp doesn't do ~
cd $place_to_build_releases/${PACKAGE}-${VERSION}
sh ${PACKAGE}2netbsd.sh # redo -- after distclean
gmake update-project-web-files
# optionally update your NetBSD source trees too!
cd import.d
cp * /usr/src/usr.bin/${PACKAGE}/
# if all is OK you can clean up the release directories too:
cd $place_to_build_releases
rm -rf ${PACKAGE}-${VERSION}-export ${PACKAGE}-${VERSION}
exit
Now update the actual project page in ~/public_html/projects/$PACKAGE.html
Lastly post an update on http://freshmeat.net/
After Making a New Release:
IMPORTANT: Immediately after you've published a successfull new release
don't forget to update the "VERSION" identifier in the VERSION file to
indicate the pre-release of the next most likely release (e.g. set
1.0.0.80-Preview.0 after making 1.0). See below for release number
ideas.
If you plan on maintaining one or more maintenance releases using
branches then you should instead create a release branch for every N.N
release and set the "VERSION" to N.N.0.80-Preview.0 on the branch and
N.N+1.80-Preview.0 on the trunk.
Release Numbers:
We essentially follow the basics of the Berkeley CSRG version numbering
scheme for identifying releases. That is to say we increment the third
number (3.7, 3.7.1, 3.7.2, etc.) whenever we generate a release of bug
fixes (what might traditionally be also known as a "patch" release), and
we increment the second number, or the minor release number, (3.7, 3.8)
whenever we add any new features or make other important user-visible
changes, and lastly we increment the first number, or the major release
number, (3.*, 4.1) whenever we make major or architectural changes.
We also throw in a smattering of GNU-isms too -- the beta-test and
release candidates (RCs) of upcoming proper releases should have a
".80" or ".90" (respectively) appended to the current release number
(3.7.5.80 would be the first beta for 3.7.6, continuing with 3.7.5.81,
3.7.5.82, etc., 3.7.5.90 would be the first release candidate,
continuing with 3.7.5.91, 3.7.5.92, etc. until finally 3.7.6 is
released.
Beta releases are the "you asked for this feature, I think this is a
good implementation of it, try it out, but there may be more to come
before the next release" releases.
Release Candidates (RCs) are created once you think you've reached a
more stable and release-ready stage which means "all the features
which will be in the next release are now in, and have undergone at
least some testing and if nobody finds any (major show-stopping) bugs,
this will be the next release."
One special case rule not yet described covers the releases preceding
the initial release, which would might start with semi-private releases
numbered "0.x", e.g. 0.1.80, 0.1.90, 0.1.91, 0.2, 0.2.80, 0.2.90, 0.3,
etc., then full public releases numbered "1.0.x", e.g. 1.0.80, 1.0.90,
etc. until 1.1, the first fully official release is made.
Note that there are no ".0" releases! I.e. ".0" is only used as a
separator between initial major releases and the first minor release,
and between initial minor releases and the first patch release.
I.e. you only insert a ".0" when you start a new branch!
Ideally patch releases will be developed on a release branch to permit
parallel development of new features on the trunk for the next minor (or
major) release (with folding of fixes and features as necessary back to
the trunk). In theory minor releases could also be developed on release
branches, but only in situations where extreme levels of maintenance for
existing releases must be undertaken.
You'll note this effectively caps the maximum number of releases along
any patch branch to a ceiling of ".79", and limits the number of alpha
releases at any level to just 10. Unfortunately it does not limit the
number of beta releases since things like .100 are allowed! ;-)
Some projects require developers to keep track of ABI or API changes
along the trunk (e.g. so that others tracking trunk development can be
made aware of when they are about to cross, or have already crossed,
some line which might require special procedures to adapt their
environment to the change). Marking of these application interface
changes can be dealt with by modifying the beta scheme so that ".80"
always starts the new development of these changes and then for each
cange one appends an incrementing suffix number to the ".80" starter
number. The first true beta release would then be ".81". ABI changes
could be marked this way along any line of development and even after
first beta, but for practical purposes they should be restricted to
the trunk (i.e. only done for major and minor releases) and only done
prior to the initial beta release if at all possible (i.e. ".81.1"
should not be allowed unless absolutely necessary, and ".9x.1" should
be forbidden at all cost). I.e. any time you want to make an ABI
change then that's a very good time to begin at least a new minor
release, if not a new major release. If you can't fix something
without making an interface change then it's time to abandon that
branch.
If you see "-Preview.N" appended to the release number then you're
seeing an intermediate development copy -- i.e. an as-yet un-released
copy which will likely have the release number given with the suffix
stripped when it is finally officially released.
A complete example:
0.0 project concept published
0.0.80 begin initial development
0.0.80.1 after first ABI change
0.0.80.2 after second ABI change
...
0.0.90 pre-release RC #1
0.0.91 pre-release RC #2
...
0.1 first pre-release
0.1.80 begin second pre-release
0.1.80.1 after ABI change
...
0.1.90 2nd pre-release RC #1
0.1.91 2nd pre-release RC #2
...
0.2 second pre-release
...
1.0.80 begin first official release
1.0.80.1 after an ABI change
1.0.80.2 after an ABI change
...
1.0.81 first beta
...
1.0.90 first official release candidate
1.0.91 second official release candidate
1.0.92 third official release candidate
...
1.1 first official (major) release
1.1.0.80 begin branch development
(no ABI changes should be allowed)
1.1.0.81 1st beta
...
1.1.0.90 1st RC for first patch
1.1.0.91 2nd RC for first patch
....
1.1.1 first patch release
1.1.1.80
1.1.1.81
...
1.1.1.90
1.1.1.91
...
1.1.2 second patch release
1.1.2.80
1.1.2.81
...
1.1.2.90
1.1.2.91
...
1.1.3 third patch release
...
[1.1.79] last possible patch release
(begin 1.2 on trunk in parallel with the 1.1.0 patch branch)
1.1.80 begin minor release
1.1.80.1 after ABI change
1.1.80.2 after ABI change
1.1.80.3 after ABI change
....
1.1.81 first beta
...
1.1.90 second official release RC #1
1.1.91 second official release RC #2
...
1.2 second official (minor) release
1.2.0.80 begin branch development
1.2.0.81 1st beta
...
1.2.0.90 1st RC for first patch
1.2.0.91 2nd RC for first patch
...
1.2.1 first patch release
1.2.1.80
1.2.1.81
...
1.2.1.90
1.2.1.91
...
1.2.2 second patch release
1.2.2.80
1.2.2.81
...
1.2.2.90
1.2.2.91
...
1.2.3 third patch release
...
[1.2.79] last possible patch release
(begin next minor on trunk in parallel with 1.2.0 patch branch)
1.2.80
1.2.80.1
. . . and so on to 1.3, 1.4, etc. . . .
(to start a new major release we pretend to "branch" the trunk)
2.0.80 begin new major release
2.0.80.1 after ABI change
2.0.80.2 after ABI change
2.0.80.3 after ABI change
...
2.0.81 first beta
...
2.0.90 first RC
2.0.91 second RC
...
2.1 second major release
2.1.0.80 begin branch development
2.1.0.81 1st beta
...
2.1.0.90 1st RC for first patch
2.1.0.91 2nd RC for first patch
....
2.1.1 first patch release
2.1.1.80
2.1.1.81
...
2.1.1.90
2.1.1.91
...
2.1.2 second patch release
2.1.2.80
...
2.1.2.90
2.1.2.91
...
2.1.3 third patch release
...
(in parallel with the 2.1.0.80 patch branch)
2.1.80 begin next minor release
2.1.80.1 after ABI change
2.1.80.2 after ABI change
2.1.80.3 after ABI change
....
2.1.81 first beta
...
2.1.90 second official release candidate
2.1.91 second official release candidate
...
2.2 next official (minor) release
2.2.0.80 begin branch development
2.2.0.81 1st beta
...
2.2.0.90 1st RC for first patch
2.2.0.91 2nd RC for first patch
...
2.2.1 first patch release
2.2.1.80
2.2.1.81
...
2.2.1.90
2.2.1.91
...
2.2.2 second patch release
2.2.2.80
2.2.2.81
...
2.2.2.90
2.2.2.91
...
1.2.3 third patch release
2.2.80 begin next minor release
2.2.80.1
...
2.3
3.0.80
Starting new major releases might look like it adds another branch,
but it's only a conceptual branch. At any point along the trunk when
it's decided that the next release will be called a "major" release
then the current X.N.8n.x beta or X.N.9n.x release candidate is simply
promoted to become (X+1).0.[89]n.x, just as in my example above. We
really only create branches in the source code control system in order
to maintain patch releases in parallel with ongoing development on the
trunk and we don't maintain minor releases in parallel with the
development of a new major release. In a volunteer project it's
already asking a lot just to use branches for patch releases, let
alone minor releases.
NOTE: This file *is* included in distributions so that users and
contributors can see how all the release magic works!
#ident "@(#)newsyslog:README.developers:$Format:%D:%ci:%cN:%h$"
近期下载者:
相关文件:
收藏者: