Skip to content

Commit 9596a96

Browse files
committed
make manual page to use autotools variables
Signed-off-by: Sami Kerola <kerolasa@iki.fi>
1 parent 8fb4570 commit 9596a96

6 files changed

Lines changed: 263 additions & 14 deletions

File tree

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
/config.status
1313
/configure
1414
/f5gs
15+
/f5gs.8
1516
/f5gs.o
1617
/lib/
1718
/libtool

Makefile.am

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,22 @@ AM_CPPFLAGS = \
55
-I$(top_builddir)/lib \
66
-DF5GS_RUNDIR=\"$(f5gs_rundir)\"
77

8-
EXTRA_DIST = m4/gnulib-cache.m4
8+
EXTRA_DIST = m4/gnulib-cache.m4 f5gs.8.in
99
SUBDIRS = lib
1010

1111
bin_PROGRAMS = f5gs
1212
f5gs_SOURCES = f5gs.c
1313
f5gs_LDADD = $(top_builddir)/lib/libf5gs.la $(LIB_PTHREAD)
14+
15+
edit = sed \
16+
-e 's|@PACKAGE_BUGREPORT[@]|$(PACKAGE_BUGREPORT)|g' \
17+
-e 's|@PACKAGE_MAINTAINER[@]|$(PACKAGE_MAINTAINER)|g' \
18+
-e 's|@PACKAGE_STRING[@]|$(PACKAGE_STRING)|g' \
19+
-e 's|@PACKAGE_URL[@]|$(PACKAGE_URL)|g' \
20+
-e 's|@PACKAGE_VERSION[@]|$(PACKAGE_VERSION)|g' \
21+
-e 's|@PORT_NUM[@]|$(PORT_NUM)|g' \
22+
-e 's|@f5gs_rundir[@]|$(f5gs_rundir)|g'
23+
24+
f5gs.8: f5gs.8.in
25+
$(edit) $(srcdir)/f5gs.8.in >$@
1426
man_MANS = f5gs.8

build-aux/git-version-gen

Lines changed: 225 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,225 @@
1+
#!/bin/sh
2+
# Print a version string.
3+
scriptversion=2012-12-31.23; # UTC
4+
5+
# Copyright (C) 2007-2013 Free Software Foundation, Inc.
6+
#
7+
# This program is free software: you can redistribute it and/or modify
8+
# it under the terms of the GNU General Public License as published by
9+
# the Free Software Foundation; either version 3 of the License, or
10+
# (at your option) any later version.
11+
#
12+
# This program is distributed in the hope that it will be useful,
13+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
14+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15+
# GNU General Public License for more details.
16+
#
17+
# You should have received a copy of the GNU General Public License
18+
# along with this program. If not, see <http://www.gnu.org/licenses/>.
19+
20+
# This script is derived from GIT-VERSION-GEN from GIT: http://git.or.cz/.
21+
# It may be run two ways:
22+
# - from a git repository in which the "git describe" command below
23+
# produces useful output (thus requiring at least one signed tag)
24+
# - from a non-git-repo directory containing a .tarball-version file, which
25+
# presumes this script is invoked like "./git-version-gen .tarball-version".
26+
27+
# In order to use intra-version strings in your project, you will need two
28+
# separate generated version string files:
29+
#
30+
# .tarball-version - present only in a distribution tarball, and not in
31+
# a checked-out repository. Created with contents that were learned at
32+
# the last time autoconf was run, and used by git-version-gen. Must not
33+
# be present in either $(srcdir) or $(builddir) for git-version-gen to
34+
# give accurate answers during normal development with a checked out tree,
35+
# but must be present in a tarball when there is no version control system.
36+
# Therefore, it cannot be used in any dependencies. GNUmakefile has
37+
# hooks to force a reconfigure at distribution time to get the value
38+
# correct, without penalizing normal development with extra reconfigures.
39+
#
40+
# .version - present in a checked-out repository and in a distribution
41+
# tarball. Usable in dependencies, particularly for files that don't
42+
# want to depend on config.h but do want to track version changes.
43+
# Delete this file prior to any autoconf run where you want to rebuild
44+
# files to pick up a version string change; and leave it stale to
45+
# minimize rebuild time after unrelated changes to configure sources.
46+
#
47+
# As with any generated file in a VC'd directory, you should add
48+
# /.version to .gitignore, so that you don't accidentally commit it.
49+
# .tarball-version is never generated in a VC'd directory, so needn't
50+
# be listed there.
51+
#
52+
# Use the following line in your configure.ac, so that $(VERSION) will
53+
# automatically be up-to-date each time configure is run (and note that
54+
# since configure.ac no longer includes a version string, Makefile rules
55+
# should not depend on configure.ac for version updates).
56+
#
57+
# AC_INIT([GNU project],
58+
# m4_esyscmd([build-aux/git-version-gen .tarball-version]),
59+
# [bug-project@example])
60+
#
61+
# Then use the following lines in your Makefile.am, so that .version
62+
# will be present for dependencies, and so that .version and
63+
# .tarball-version will exist in distribution tarballs.
64+
#
65+
# EXTRA_DIST = $(top_srcdir)/.version
66+
# BUILT_SOURCES = $(top_srcdir)/.version
67+
# $(top_srcdir)/.version:
68+
# echo $(VERSION) > $@-t && mv $@-t $@
69+
# dist-hook:
70+
# echo $(VERSION) > $(distdir)/.tarball-version
71+
72+
73+
me=$0
74+
75+
version="git-version-gen $scriptversion
76+
77+
Copyright 2011 Free Software Foundation, Inc.
78+
There is NO warranty. You may redistribute this software
79+
under the terms of the GNU General Public License.
80+
For more information about these matters, see the files named COPYING."
81+
82+
usage="\
83+
Usage: $me [OPTION]... \$srcdir/.tarball-version [TAG-NORMALIZATION-SED-SCRIPT]
84+
Print a version string.
85+
86+
Options:
87+
88+
--prefix prefix of git tags (default 'v')
89+
--fallback fallback version to use if \"git --version\" fails
90+
91+
--help display this help and exit
92+
--version output version information and exit
93+
94+
Running without arguments will suffice in most cases."
95+
96+
prefix=v
97+
fallback=
98+
99+
while test $# -gt 0; do
100+
case $1 in
101+
--help) echo "$usage"; exit 0;;
102+
--version) echo "$version"; exit 0;;
103+
--prefix) shift; prefix="$1";;
104+
--fallback) shift; fallback="$1";;
105+
-*)
106+
echo "$0: Unknown option '$1'." >&2
107+
echo "$0: Try '--help' for more information." >&2
108+
exit 1;;
109+
*)
110+
if test "x$tarball_version_file" = x; then
111+
tarball_version_file="$1"
112+
elif test "x$tag_sed_script" = x; then
113+
tag_sed_script="$1"
114+
else
115+
echo "$0: extra non-option argument '$1'." >&2
116+
exit 1
117+
fi;;
118+
esac
119+
shift
120+
done
121+
122+
if test "x$tarball_version_file" = x; then
123+
echo "$usage"
124+
exit 1
125+
fi
126+
127+
tag_sed_script="${tag_sed_script:-s/x/x/}"
128+
129+
nl='
130+
'
131+
132+
# Avoid meddling by environment variable of the same name.
133+
v=
134+
v_from_git=
135+
136+
# First see if there is a tarball-only version file.
137+
# then try "git describe", then default.
138+
if test -f $tarball_version_file
139+
then
140+
v=`cat $tarball_version_file` || v=
141+
case $v in
142+
*$nl*) v= ;; # reject multi-line output
143+
[0-9]*) ;;
144+
*) v= ;;
145+
esac
146+
test "x$v" = x \
147+
&& echo "$0: WARNING: $tarball_version_file is missing or damaged" 1>&2
148+
fi
149+
150+
if test "x$v" != x
151+
then
152+
: # use $v
153+
# Otherwise, if there is at least one git commit involving the working
154+
# directory, and "git describe" output looks sensible, use that to
155+
# derive a version string.
156+
elif test "`git log -1 --pretty=format:x . 2>&1`" = x \
157+
&& v=`git describe --abbrev=4 --match="$prefix*" HEAD 2>/dev/null \
158+
|| git describe --abbrev=4 HEAD 2>/dev/null` \
159+
&& v=`printf '%s\n' "$v" | sed "$tag_sed_script"` \
160+
&& case $v in
161+
$prefix[0-9]*) ;;
162+
*) (exit 1) ;;
163+
esac
164+
then
165+
# Is this a new git that lists number of commits since the last
166+
# tag or the previous older version that did not?
167+
# Newer: v6.10-77-g0f8faeb
168+
# Older: v6.10-g0f8faeb
169+
case $v in
170+
*-*-*) : git describe is okay three part flavor ;;
171+
*-*)
172+
: git describe is older two part flavor
173+
# Recreate the number of commits and rewrite such that the
174+
# result is the same as if we were using the newer version
175+
# of git describe.
176+
vtag=`echo "$v" | sed 's/-.*//'`
177+
commit_list=`git rev-list "$vtag"..HEAD 2>/dev/null` \
178+
|| { commit_list=failed;
179+
echo "$0: WARNING: git rev-list failed" 1>&2; }
180+
numcommits=`echo "$commit_list" | wc -l`
181+
v=`echo "$v" | sed "s/\(.*\)-\(.*\)/\1-$numcommits-\2/"`;
182+
test "$commit_list" = failed && v=UNKNOWN
183+
;;
184+
esac
185+
186+
# Change the first '-' to a '.', so version-comparing tools work properly.
187+
# Remove the "g" in git describe's output string, to save a byte.
188+
v=`echo "$v" | sed 's/-/./;s/\(.*\)-g/\1-/'`;
189+
v_from_git=1
190+
elif test "x$fallback" = x || git --version >/dev/null 2>&1; then
191+
v=UNKNOWN
192+
else
193+
v=$fallback
194+
fi
195+
196+
v=`echo "$v" |sed "s/^$prefix//"`
197+
198+
# Test whether to append the "-dirty" suffix only if the version
199+
# string we're using came from git. I.e., skip the test if it's "UNKNOWN"
200+
# or if it came from .tarball-version.
201+
if test "x$v_from_git" != x; then
202+
# Don't declare a version "dirty" merely because a time stamp has changed.
203+
git update-index --refresh > /dev/null 2>&1
204+
205+
dirty=`exec 2>/dev/null;git diff-index --name-only HEAD` || dirty=
206+
case "$dirty" in
207+
'') ;;
208+
*) # Append the suffix only if there isn't one already.
209+
case $v in
210+
*-dirty) ;;
211+
*) v="$v-dirty" ;;
212+
esac ;;
213+
esac
214+
fi
215+
216+
# Omit the trailing newline, so that m4_esyscmd can use the result directly.
217+
echo "$v" | tr -d "$nl"
218+
219+
# Local variables:
220+
# eval: (add-hook 'write-file-hooks 'time-stamp)
221+
# time-stamp-start: "scriptversion="
222+
# time-stamp-format: "%:y-%02m-%02d.%02H"
223+
# time-stamp-time-zone: "UTC"
224+
# time-stamp-end: "; # UTC"
225+
# End:

configure.ac

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,12 @@
33

44
AC_PREREQ([2.69])
55
AC_CONFIG_MACRO_DIR([m4])
6-
AC_INIT([f5gs], [0.1], [kerolasa@iki.fi])
6+
AC_INIT([f5gs],
7+
[m4_esyscmd([build-aux/git-version-gen .tarball-version])],
8+
[kerolasa@iki.fi], [],
9+
[https://github.com/kerolasa/f5gs])
10+
PACKAGE_MAINTAINER="Sami Kerola"
11+
AC_SUBST([PACKAGE_MAINTAINER])
712
AC_CONFIG_SRCDIR([f5gs.c])
813
AC_CONFIG_HEADERS([config.h])
914
AC_CONFIG_AUX_DIR([build-aux])
@@ -38,6 +43,14 @@ AC_TYPE_SSIZE_T
3843
AC_FUNC_MMAP
3944
AC_CHECK_FUNCS([munmap socket])
4045

46+
AC_DEFUN([DEFAULT_PORT], [32546])
47+
AC_ARG_WITH([default-portl],
48+
[AS_HELP_STRING([--with-default-port=NUM], [default port (@<:@DEFAULT_PORT@:>@)])],
49+
[default_port="$withval"],
50+
[default_port="DEFAULT_PORT"])
51+
AC_DEFINE_UNQUOTED([PORT_NUM], ["$default_port"], [default port])
52+
AC_SUBST([PORT_NUM], [$default_port])
53+
4154
AC_SUBST([f5gs_rundir], [$runstatedir/$PACKAGE/], [f5gs runtime state directory])
4255

4356
AC_CONFIG_FILES([Makefile

f5gs.8 renamed to f5gs.8.in

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
.\"
22
.\" Please read 'man 7 groff_man' howto use various macros.
3-
.TH F5GS "8" "2013-10-13" "f5gs" "System Administration"
3+
.TH F5GS "8" "2013-10-13" "@PACKAGE_STRING@" "System Administration"
44
.SH NAME
55
f5gs \- F5 graceful scaling helper daemon
66
.SH SYNOPSIS
@@ -17,7 +17,7 @@ indicating the service state with content of the backend service is
1717
difficult.
1818
.PP
1919
This daemon will listen a TCP port
20-
.BR 32546 .
20+
.BR @PORT_NUM@ .
2121
All connections to that port will be replied with one of the following
2222
responses:
2323
.IR disable ,
@@ -84,13 +84,13 @@ that binds the server to all interface.
8484
TCP
8585
.I port
8686
of the server. Default port is
87-
.IR 32546 .
87+
.IR @PORT_NUM@ .
8888
.TP
8989
\fB\-\-state\fR \fIdirectory\fR
9090
Relocate the command
9191
.I state directory
9292
to elsewhere from
93-
.IR /var\:/run\:/f5gs/ .
93+
.IR @f5gs_rundir@ .
9494
.TP
9595
\fB\-V\fR, \fB\-\-version\fR
9696
Display version information and exit.
@@ -102,23 +102,22 @@ f5gs --server
102102
.br
103103
f5gs --enable
104104
.br
105-
echo hello | nc localhost 32546 ; echo
105+
echo hello | nc localhost @PORT_NUM@ ; echo
106106
.SH LICENSE
107107
The f5gs has BSD 2-clause license which also known as "Simplified BSD
108108
License" or "FreeBSD License".
109109
.SH FILES
110110
.TP
111-
.B /var\:/run\:/f5gs/
111+
.B @f5gs_rundir@
112112
Location of the state files.
113113
.SH AUTHORS
114-
.MT kerolasa@iki.fi
115-
Sami Kerola
114+
.MT @PACKAGE_BUGREPORT@
115+
@PACKAGE_MAINTAINER@
116116
.ME
117117
.SH "SEE ALSO"
118118
.UR https://\:devcentral.f5.com\:/articles\:/f5-friday-gracefully-scaling-down
119119
F5 Friday: Gracefully Scaling Down
120120
.UE .
121121
.SH AVAILABILITY
122-
.UR https://\:github.com\:/kerolasa\:/f5gs
123-
Github
124-
.UE .
122+
.UR @PACKAGE_URL@
123+
.UE

f5gs.c

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,6 @@
2929
#include "closeout.h"
3030
#include "progname.h"
3131

32-
#define PORT_NUM "32546" /* f5 == in octal */
3332
#define PEND_CONNECTIONS 128 /* pending connections to hold */
3433
#define IGNORE_BYTES 256
3534

0 commit comments

Comments
 (0)