diff --git a/boo1021353-ocserv-doc-racing-in-parallel-build.patch b/boo1021353-ocserv-doc-racing-in-parallel-build.patch new file mode 100644 index 0000000..bce73b3 --- /dev/null +++ b/boo1021353-ocserv-doc-racing-in-parallel-build.patch @@ -0,0 +1,513 @@ +Index: b/doc/Makefile.am +=================================================================== +--- a/doc/Makefile.am ++++ b/doc/Makefile.am +@@ -10,12 +10,12 @@ ocserv.8: ../src/ocserv-args.def + @AUTOGEN@ -L../src -DMAN_SECTION=8 -Tagman-cmd.tpl "$<".tmp && \ + rm -f "$<".tmp + +-occtl.8: ../src/occtl/args.def ++occtl.8: ../src/occtl/occtl-args.def + -$(SED) 's/@subheading \(.*\)/@*\n@var{\1}\n@*/' $< > "$<".tmp && \ + @AUTOGEN@ -L../src -DMAN_SECTION=8 -Tagman-cmd.tpl "$<".tmp && \ + rm -f "$<".tmp + +-ocpasswd.8: ../src/ocpasswd/args.def ++ocpasswd.8: ../src/ocpasswd/ocpasswd-args.def + -$(SED) 's/@subheading \(.*\)/@*\n@var{\1}\n@*/' $< > "$<".tmp && \ + @AUTOGEN@ -L../src -DMAN_SECTION=8 -Tagman-cmd.tpl "$<".tmp && \ + rm -f "$<".tmp +Index: b/src/occtl/Makefile.am +=================================================================== +--- a/src/occtl/Makefile.am ++++ b/src/occtl/Makefile.am +@@ -5,7 +5,7 @@ AM_CPPFLAGS += -I$(srcdir)/../../gl/ -I$ + $(LIBNL3_CFLAGS) $(LIBPROTOBUF_C_CFLAGS) $(LIBTALLOC_CFLAGS) \ + -I$(srcdir)/../common/ -I$(builddir)/../common/ $(CODE_COVERAGE_CFLAGS) + +-EXTRA_DIST = args.def ++EXTRA_DIST = occtl-args.def + + bin_PROGRAMS = occtl + +Index: b/src/occtl/args.def +=================================================================== +--- a/src/occtl/args.def ++++ /dev/null +@@ -1,105 +0,0 @@ +-AutoGen Definitions options; +-prog-name = occtl; +-prog-title = "OpenConnect VPN server control"; +-prog-desc = "OpenConnect VPN server control."; +-disable-save; +-no-xlate = opt; +-gnu-usage; +-config-header = config.h; +-long-opts; +-no-misuse-usage; +-short-usage = "Usage: occtl [options] [command]\nocctl --help for usage instructions.\n"; +-explain = ""; +-#include ../version.inc +- +-detail = "Openconnect VPN server control (occtl) is a tool to control +-the ocserv VPN server."; +- +-copyright = { +- date = "2014-2016"; +- owner = "Red Hat"; +- author = "Nikos Mavrogiannopoulos"; +- eaddr = "openconnect-devel@lists.infradead.org"; +- type = gplv2; +-}; +- +-help-value = h; +- +-flag = { +- name = socket-file; +- value = s; +- arg-type = file; +- descrip = "Specify the server's occtl socket file"; +- doc = "This option is only needed if you have multiple servers."; +-}; +- +-flag = { +- name = json; +- value = j; +- descrip = "Output will be JSON formatted"; +- doc = "This option can only be used with non-interactive output, e.g., 'occtl --json show users'."; +-}; +- +-flag = { +- name = no-pager; +- value = n; +- descrip = "No pager will be used over output data"; +- doc = ""; +-}; +- +- +-doc-section = { +- ds-type = 'SYNOPSIS'; +- ds-format = 'texi'; +- ds-text = <<-_EOT_ +-Openconnect VPN server control (occtl) is a tool to control +-the ocserv VPN server. +-_EOT_; +-}; +- +-doc-section = { +- ds-type = 'DESCRIPTION'; +- ds-format = 'texi'; +- ds-text = <<-_EOT_ +-This a control tool that can be used to send commands to ocserv. When +-called without any arguments the tool can be used interactively, where +-each command is entered on a command prompt; alternatively the tool +-can be called with the command specified as parameter. In the latter +-case the tool's exit code will reflect the successful execution of +-the command. +-_EOT_; +-}; +- +-doc-section = { +- ds-type = 'EXAMPLES'; +- ds-format = 'texi'; +- ds-text = <<-_EOT_ +-The tool can be run interactively when run with no arguments. When +-arguments are given they are interpreted as commands. For example: +-@example +-$ occtl show users +-@end example +- +-Any command line arguments to be used as options must preceed the +-command (if any), as shown below. +-@example +-$ occtl --json show users +-@end example +-_EOT_; +-}; +- +-doc-section = { +- ds-type = 'IMPLEMENTATION NOTES'; +- ds-format = 'texi'; +- ds-text = <<-_EOT_ +-This tool uses unix domain sockets to connect to ocserv. +-_EOT_; +-}; +- +-doc-section = { +- ds-type = 'SEE ALSO'; +- ds-format = 'man'; +- ds-text = <<-_EOText_ +-ocserv(8) +-_EOText_; +-}; +Index: b/src/occtl/occtl-args.def +=================================================================== +--- /dev/null ++++ b/src/occtl/occtl-args.def +@@ -0,0 +1,105 @@ ++AutoGen Definitions options; ++prog-name = occtl; ++prog-title = "OpenConnect VPN server control"; ++prog-desc = "OpenConnect VPN server control."; ++disable-save; ++no-xlate = opt; ++gnu-usage; ++config-header = config.h; ++long-opts; ++no-misuse-usage; ++short-usage = "Usage: occtl [options] [command]\nocctl --help for usage instructions.\n"; ++explain = ""; ++#include ../version.inc ++ ++detail = "Openconnect VPN server control (occtl) is a tool to control ++the ocserv VPN server."; ++ ++copyright = { ++ date = "2014-2016"; ++ owner = "Red Hat"; ++ author = "Nikos Mavrogiannopoulos"; ++ eaddr = "openconnect-devel@lists.infradead.org"; ++ type = gplv2; ++}; ++ ++help-value = h; ++ ++flag = { ++ name = socket-file; ++ value = s; ++ arg-type = file; ++ descrip = "Specify the server's occtl socket file"; ++ doc = "This option is only needed if you have multiple servers."; ++}; ++ ++flag = { ++ name = json; ++ value = j; ++ descrip = "Output will be JSON formatted"; ++ doc = "This option can only be used with non-interactive output, e.g., 'occtl --json show users'."; ++}; ++ ++flag = { ++ name = no-pager; ++ value = n; ++ descrip = "No pager will be used over output data"; ++ doc = ""; ++}; ++ ++ ++doc-section = { ++ ds-type = 'SYNOPSIS'; ++ ds-format = 'texi'; ++ ds-text = <<-_EOT_ ++Openconnect VPN server control (occtl) is a tool to control ++the ocserv VPN server. ++_EOT_; ++}; ++ ++doc-section = { ++ ds-type = 'DESCRIPTION'; ++ ds-format = 'texi'; ++ ds-text = <<-_EOT_ ++This a control tool that can be used to send commands to ocserv. When ++called without any arguments the tool can be used interactively, where ++each command is entered on a command prompt; alternatively the tool ++can be called with the command specified as parameter. In the latter ++case the tool's exit code will reflect the successful execution of ++the command. ++_EOT_; ++}; ++ ++doc-section = { ++ ds-type = 'EXAMPLES'; ++ ds-format = 'texi'; ++ ds-text = <<-_EOT_ ++The tool can be run interactively when run with no arguments. When ++arguments are given they are interpreted as commands. For example: ++@example ++$ occtl show users ++@end example ++ ++Any command line arguments to be used as options must preceed the ++command (if any), as shown below. ++@example ++$ occtl --json show users ++@end example ++_EOT_; ++}; ++ ++doc-section = { ++ ds-type = 'IMPLEMENTATION NOTES'; ++ ds-format = 'texi'; ++ ds-text = <<-_EOT_ ++This tool uses unix domain sockets to connect to ocserv. ++_EOT_; ++}; ++ ++doc-section = { ++ ds-type = 'SEE ALSO'; ++ ds-format = 'man'; ++ ds-text = <<-_EOText_ ++ocserv(8) ++_EOText_; ++}; +Index: b/src/ocpasswd/Makefile.am +=================================================================== +--- a/src/ocpasswd/Makefile.am ++++ b/src/ocpasswd/Makefile.am +@@ -6,21 +6,21 @@ AM_CPPFLAGS += -I$(srcdir)/../../gl/ -I$ + $(CODE_COVERAGE_CFLAGS) $(LIBGNUTLS_CFLAGS) + + +-EXTRA_DIST = args.def ++EXTRA_DIST = ocpasswd-args.def + + BUILT_SOURCES = args.c args.h + + bin_PROGRAMS = ocpasswd + + noinst_LIBRARIES = libcmd-ocpasswd.a +-libcmd_ocpasswd_a_SOURCES = args.def args.c args.h ++libcmd_ocpasswd_a_SOURCES = ocpasswd-args.def args.c args.h + + ocpasswd_SOURCES = ocpasswd.c + ocpasswd_LDADD = ../../gl/libgnu.a $(NEEDED_LIBOPTS) libcmd-ocpasswd.a + ocpasswd_LDADD += $(LIBGNUTLS_LIBS) $(LIBCRYPT) $(CODE_COVERAGE_LDFLAGS) \ + $(LIBNETTLE_LIBS) + +-args.c: $(srcdir)/args.def $(builddir)/../version.inc ++args.c: $(srcdir)/ocpasswd-args.def $(builddir)/../version.inc + if test "$(AUTOGEN)" = ":";then \ + rm -f $(builddir)/args.c; \ + rm -f $(builddir)/args.h; \ +Index: b/src/ocpasswd/args.def +=================================================================== +--- a/src/ocpasswd/args.def ++++ /dev/null +@@ -1,111 +0,0 @@ +-AutoGen Definitions options; +-prog-name = ocpasswd; +-prog-title = "OpenConnect server password utility"; +-prog-desc = "OpenConnect VPN server plain password file handling program."; +-disable-save; +-no-xlate = opt; +-gnu-usage; +-config-header = config.h; +-long-opts; +-no-misuse-usage; +-short-usage = "Usage: ocpasswd -c [passwd] [options] username\nocpasswd --help for usage instructions.\n"; +-explain = ""; +-reorder-args; +-argument = "[username]"; +-#include ../version.inc +- +-detail = "This program is openconnect password (ocpasswd) utility. It allows the generation +-and handling of a 'plain' password file used by ocserv."; +- +-copyright = { +- date = "2013-2016"; +- owner = "Nikos Mavrogiannopoulos"; +- author = "Nikos Mavrogiannopoulos"; +- eaddr = "openconnect-devel@lists.infradead.org"; +- type = gplv2; +-}; +- +-flag = { +- name = passwd; +- value = c; +- arg-type = file; +- descrip = "Password file"; +- doc = ""; +-}; +- +-flag = { +- name = groupname; +- value = g; +- arg-type = string; +- descrip = "User's group name"; +- doc = ""; +-}; +- +-flag = { +- name = delete; +- value = d; +- descrip = "Delete user"; +- doc = "Removes the specified user from the password file"; +-}; +- +-flag = { +- name = lock; +- value = l; +- descrip = "Lock user"; +- doc = "Prevents the specified user from logging in"; +-}; +- +-flag = { +- name = unlock; +- value = u; +- descrip = "Unlock user"; +- doc = "Re-enables login for the specified user"; +-}; +- +-help-value = h; +- +- +-doc-section = { +- ds-type = 'FILES'; +- ds-format = 'texi'; +- ds-text = <<-_EOT_ +-@subheading Password file format +-The password format of ocpasswd is as follows. +- +-@example +-username:groupname:encoded-password +-@end example +- +-The crypt(3) encoding is used for the encoded-password. +- +-_EOT_; +-}; +- +-doc-section = { +- ds-type = 'EXAMPLES'; +- ds-format = 'texi'; +- ds-text = <<-_EOT_ +-@subheading Adding a user +-@example +-$ ocpasswd -c ocpasswd my_username +-@end example +- +-@subheading Locking a user +-@example +-$ ocpasswd -c ocpasswd -l my_username +-@end example +- +-@subheading Unlocking a user +-@example +-$ ocpasswd -c ocpasswd -u my_username +-@end example +-_EOT_; +-}; +- +-doc-section = { +- ds-type = 'SEE ALSO'; +- ds-format = 'man'; +- ds-text = <<-_EOText_ +-ocserv(8), occtl(8) +-_EOText_; +-}; +Index: b/src/ocpasswd/ocpasswd-args.def +=================================================================== +--- /dev/null ++++ b/src/ocpasswd/ocpasswd-args.def +@@ -0,0 +1,111 @@ ++AutoGen Definitions options; ++prog-name = ocpasswd; ++prog-title = "OpenConnect server password utility"; ++prog-desc = "OpenConnect VPN server plain password file handling program."; ++disable-save; ++no-xlate = opt; ++gnu-usage; ++config-header = config.h; ++long-opts; ++no-misuse-usage; ++short-usage = "Usage: ocpasswd -c [passwd] [options] username\nocpasswd --help for usage instructions.\n"; ++explain = ""; ++reorder-args; ++argument = "[username]"; ++#include ../version.inc ++ ++detail = "This program is openconnect password (ocpasswd) utility. It allows the generation ++and handling of a 'plain' password file used by ocserv."; ++ ++copyright = { ++ date = "2013-2016"; ++ owner = "Nikos Mavrogiannopoulos"; ++ author = "Nikos Mavrogiannopoulos"; ++ eaddr = "openconnect-devel@lists.infradead.org"; ++ type = gplv2; ++}; ++ ++flag = { ++ name = passwd; ++ value = c; ++ arg-type = file; ++ descrip = "Password file"; ++ doc = ""; ++}; ++ ++flag = { ++ name = groupname; ++ value = g; ++ arg-type = string; ++ descrip = "User's group name"; ++ doc = ""; ++}; ++ ++flag = { ++ name = delete; ++ value = d; ++ descrip = "Delete user"; ++ doc = "Removes the specified user from the password file"; ++}; ++ ++flag = { ++ name = lock; ++ value = l; ++ descrip = "Lock user"; ++ doc = "Prevents the specified user from logging in"; ++}; ++ ++flag = { ++ name = unlock; ++ value = u; ++ descrip = "Unlock user"; ++ doc = "Re-enables login for the specified user"; ++}; ++ ++help-value = h; ++ ++ ++doc-section = { ++ ds-type = 'FILES'; ++ ds-format = 'texi'; ++ ds-text = <<-_EOT_ ++@subheading Password file format ++The password format of ocpasswd is as follows. ++ ++@example ++username:groupname:encoded-password ++@end example ++ ++The crypt(3) encoding is used for the encoded-password. ++ ++_EOT_; ++}; ++ ++doc-section = { ++ ds-type = 'EXAMPLES'; ++ ds-format = 'texi'; ++ ds-text = <<-_EOT_ ++@subheading Adding a user ++@example ++$ ocpasswd -c ocpasswd my_username ++@end example ++ ++@subheading Locking a user ++@example ++$ ocpasswd -c ocpasswd -l my_username ++@end example ++ ++@subheading Unlocking a user ++@example ++$ ocpasswd -c ocpasswd -u my_username ++@end example ++_EOT_; ++}; ++ ++doc-section = { ++ ds-type = 'SEE ALSO'; ++ ds-format = 'man'; ++ ds-text = <<-_EOText_ ++ocserv(8), occtl(8) ++_EOText_; ++}; diff --git a/ocserv.changes b/ocserv.changes index 6cfecb6..2703c44 100644 --- a/ocserv.changes +++ b/ocserv.changes @@ -1,3 +1,13 @@ +------------------------------------------------------------------- +Mon Jan 23 16:35:52 UTC 2017 - i@marguerite.su + +- fix boo#1021353: ocserv randomly misbuilds man pages +- add patch: boo1021353-ocserv-doc-racing-in-parallel-build.patch + * occtl and ocpasswd are both built from args.def, which + will cause a racing problem in parallel builds that autogen + write contents randomly. fixed by adding a prefix to make + them different in filename. + ------------------------------------------------------------------- Wed Dec 21 10:59:26 UTC 2016 - i@marguerite.su diff --git a/ocserv.spec b/ocserv.spec index e4756c0..84febad 100644 --- a/ocserv.spec +++ b/ocserv.spec @@ -1,7 +1,7 @@ # # spec file for package ocserv # -# Copyright (c) 2016 SUSE LINUX GmbH, Nuernberg, Germany. +# Copyright (c) 2017 SUSE LINUX GmbH, Nuernberg, Germany. # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -38,6 +38,8 @@ Source99: README.SUSE Patch1: %{name}-enable-systemd.patch #PATCH-FIX-UPSTREAM marguerite@opensuse.org tweak configuration Patch2: %{name}.config.patch +#PATCH-FIX-UPSTREAM marguerite@opensuse.org avoid racing problem when building documentation in parallel +Patch3: boo1021353-ocserv-doc-racing-in-parallel-build.patch BuildRequires: autogen BuildRequires: dbus-1-devel BuildRequires: freeradius-client-devel @@ -86,6 +88,7 @@ A management interface allows for viewing and querying logged-in users. %setup -q %patch1 -p1 %patch2 -p1 +%patch3 -p1 sed -i "s/\@AUTOGEN\@/autogen/" doc/Makefile.am autoreconf -fiv