* Now have make distcheck passing with doxygen enabled @ 2021-04-20 4:23 Duncan Roe 2021-04-20 4:23 ` [PATCH libnetfilter_queue 1/1] build: doc: `make distcheck` passes " Duncan Roe 0 siblings, 1 reply; 11+ messages in thread From: Duncan Roe @ 2021-04-20 4:23 UTC (permalink / raw) To: netfilter-devel; +Cc: duncan_roe Hi Pablo, We had to let the last release out w/out man pages but that really bugged me so I had another go at it, with success this time. There is awareness of running inside `make distcheck` but only so Makefile can still work properly. Cheers ... Duncan. Duncan Roe (1): build: doc: `make distcheck` passes with doxygen enabled Makefile.am | 1 - configure.ac | 11 +++++-- doxygen/Makefile.am | 76 +++++++++++++++++++++++++++++++++++++++++++-- fixmanpages.sh | 66 --------------------------------------- 4 files changed, 82 insertions(+), 72 deletions(-) delete mode 100755 fixmanpages.sh -- 2.17.5 ^ permalink raw reply [flat|nested] 11+ messages in thread
* [PATCH libnetfilter_queue 1/1] build: doc: `make distcheck` passes with doxygen enabled 2021-04-20 4:23 Now have make distcheck passing with doxygen enabled Duncan Roe @ 2021-04-20 4:23 ` Duncan Roe 2021-04-20 9:54 ` Jan Engelhardt 0 siblings, 1 reply; 11+ messages in thread From: Duncan Roe @ 2021-04-20 4:23 UTC (permalink / raw) To: netfilter-devel; +Cc: duncan_roe The main fix is to move fixmanpages.sh to inside doxygen/Makefile.am. This means that in future, developers need to update doxygen/Makefile.am when they add new functions and source files, since fixmanpages.sh is deleted. Signed-off-by: Duncan Roe <duncan_roe@optusnet.com.au> --- Makefile.am | 1 - configure.ac | 11 +++++-- doxygen/Makefile.am | 76 +++++++++++++++++++++++++++++++++++++++++++-- fixmanpages.sh | 66 --------------------------------------- 4 files changed, 82 insertions(+), 72 deletions(-) delete mode 100755 fixmanpages.sh diff --git a/Makefile.am b/Makefile.am index 796f0d0..a5b347b 100644 --- a/Makefile.am +++ b/Makefile.am @@ -10,4 +10,3 @@ pkgconfigdir = $(libdir)/pkgconfig pkgconfig_DATA = libnetfilter_queue.pc EXTRA_DIST += Make_global.am -EXTRA_DIST += fixmanpages.sh diff --git a/configure.ac b/configure.ac index 32e4990..3f4a082 100644 --- a/configure.ac +++ b/configure.ac @@ -37,9 +37,10 @@ AC_CONFIG_FILES([Makefile src/Makefile utils/Makefile examples/Makefile include/linux/Makefile include/linux/netfilter/Makefile]) AC_ARG_WITH([doxygen], [AS_HELP_STRING([--with-doxygen], - [create doxygen documentation [default=no]])], - [], [with_doxygen=no]) -AS_IF([test "x$with_doxygen" = xyes], [ + [create doxygen documentation])], + [with_doxygen="$withval"], [with_doxygen=yes]) + +AS_IF([test "x$with_doxygen" != xno], [ AC_CHECK_PROGS([DOXYGEN], [doxygen]) AC_CHECK_PROGS([DOT], [dot], [""]) AS_IF([test "x$DOT" != "x"], @@ -48,6 +49,10 @@ AS_IF([test "x$with_doxygen" = xyes], [ ]) AM_CONDITIONAL([HAVE_DOXYGEN], [test -n "$DOXYGEN"]) +if test -z "$DOXYGEN"; then + dnl Only run doxygen Makefile if doxygen installed + AC_MSG_WARN([Doxygen not found - continuing without Doxygen support]) +fi AC_OUTPUT echo " diff --git a/doxygen/Makefile.am b/doxygen/Makefile.am index 0f99feb..1b217d3 100644 --- a/doxygen/Makefile.am +++ b/doxygen/Makefile.am @@ -1,4 +1,6 @@ if HAVE_DOXYGEN + +# Be sure to add new source files to this table doc_srcs = $(top_srcdir)/src/libnetfilter_queue.c \ $(top_srcdir)/src/nlmsg.c \ $(top_srcdir)/src/extra/checksum.c \ @@ -9,8 +11,74 @@ doc_srcs = $(top_srcdir)/src/libnetfilter_queue.c \ $(top_srcdir)/src/extra/icmp.c \ $(top_srcdir)/src/extra/pktbuff.c -doxyfile.stamp: $(doc_srcs) $(top_srcdir)/fixmanpages.sh - rm -rf html man && cd .. && doxygen doxygen.cfg >/dev/null && ./fixmanpages.sh +doxyfile.stamp: $(doc_srcs) Makefile.am + rm -rf html man + +# Test for running under make distcheck. +# If so, sibling src directory will be empty: +# move it out of the way and symlink the real one while we run doxygen. + cd ..; [ $$(ls src | wc -l) -gt 8 ] ||\ +{ set -x; mv src src.distcheck; ln -s $(top_srcdir)/src; } + + cd ..; doxygen doxygen.cfg >/dev/null + + [ ! -d ../src.distcheck ] || \ +{ set -x; cd ..; rm src; mv src.distcheck src; } + +# Keep this command up to date after adding new functions and source files. +# The command has to be a single line so the functions work +# (hence ";\" at the end of every line but the last). + function main { set -e; cd man/man3; rm -f _*;\ +setgroup LibrarySetup nfq_open;\ + add2group nfq_close nfq_bind_pf nfq_unbind_pf;\ +setgroup Parsing nfq_get_msg_packet_hdr;\ + add2group nfq_get_nfmark nfq_get_timestamp nfq_get_indev nfq_get_physindev;\ + add2group nfq_get_outdev nfq_get_physoutdev nfq_get_indev_name;\ + add2group nfq_get_physindev_name nfq_get_outdev_name;\ + add2group nfq_get_physoutdev_name nfq_get_packet_hw;\ + add2group nfq_get_skbinfo;\ + add2group nfq_get_uid nfq_get_gid;\ + add2group nfq_get_secctx nfq_get_payload;\ +setgroup Queue nfq_fd;\ + add2group nfq_create_queue nfq_destroy_queue nfq_handle_packet nfq_set_mode;\ + add2group nfq_set_queue_flags nfq_set_queue_maxlen nfq_set_verdict;\ + add2group nfq_set_verdict2 nfq_set_verdict_batch;\ + add2group nfq_set_verdict_batch2 nfq_set_verdict_mark;\ +setgroup ipv4 nfq_ip_get_hdr;\ + add2group nfq_ip_set_transport_header nfq_ip_mangle nfq_ip_snprintf;\ + setgroup ip_internals nfq_ip_set_checksum;\ +setgroup ipv6 nfq_ip6_get_hdr;\ + add2group nfq_ip6_set_transport_header nfq_ip6_mangle nfq_ip6_snprintf;\ +setgroup nfq_cfg nfq_nlmsg_cfg_put_cmd;\ + add2group nfq_nlmsg_cfg_put_params nfq_nlmsg_cfg_put_qmaxlen;\ +setgroup nfq_verd nfq_nlmsg_verdict_put;\ + add2group nfq_nlmsg_verdict_put_mark nfq_nlmsg_verdict_put_pkt;\ +setgroup nlmsg nfq_nlmsg_parse;\ + add2group nfq_nlmsg_put;\ +setgroup pktbuff pktb_alloc;\ + add2group pktb_data pktb_len pktb_mangle pktb_mangled;\ + add2group pktb_free;\ + setgroup otherfns pktb_tailroom;\ + add2group pktb_mac_header pktb_network_header pktb_transport_header;\ + setgroup uselessfns pktb_push;\ + add2group pktb_pull pktb_put pktb_trim;\ +setgroup tcp nfq_tcp_get_hdr;\ + add2group nfq_tcp_get_payload nfq_tcp_get_payload_len;\ + add2group nfq_tcp_snprintf nfq_tcp_mangle_ipv4 nfq_tcp_mangle_ipv6;\ + setgroup tcp_internals nfq_tcp_compute_checksum_ipv4;\ + add2group nfq_tcp_compute_checksum_ipv6;\ +setgroup udp nfq_udp_get_hdr;\ + add2group nfq_udp_get_payload nfq_udp_get_payload_len;\ + add2group nfq_udp_mangle_ipv4 nfq_udp_mangle_ipv6 nfq_udp_snprintf;\ + setgroup udp_internals nfq_udp_compute_checksum_ipv4;\ + add2group nfq_udp_compute_checksum_ipv6;\ +setgroup Printing nfq_snprintf_xml;\ +setgroup icmp nfq_icmp_get_hdr;\ +};\ +function setgroup { mv $$1.3 $$2.3; BASE=$$2; };\ +function add2group { for i in $$@; do ln -sf $$BASE.3 $$i.3; done; };\ +main + touch doxyfile.stamp CLEANFILES = doxyfile.stamp @@ -21,4 +89,8 @@ clean-local: install-data-local: mkdir -p $(DESTDIR)$(mandir)/man3 cp --no-dereference --preserve=links,mode,timestamps man/man3/*.3 $(DESTDIR)$(mandir)/man3/ + +# make distcheck needs uninstall-local +uninstall-local: + rm -r $(DESTDIR)$(mandir) man html doxyfile.stamp endif diff --git a/fixmanpages.sh b/fixmanpages.sh deleted file mode 100755 index 02064ab..0000000 --- a/fixmanpages.sh +++ /dev/null @@ -1,66 +0,0 @@ -#!/bin/bash -p -#set -x -function main -{ - set -e - cd doxygen/man/man3 - rm -f _* - setgroup LibrarySetup nfq_open - add2group nfq_close nfq_bind_pf nfq_unbind_pf - setgroup Parsing nfq_get_msg_packet_hdr - add2group nfq_get_nfmark nfq_get_timestamp nfq_get_indev nfq_get_physindev - add2group nfq_get_outdev nfq_get_physoutdev nfq_get_indev_name - add2group nfq_get_physindev_name nfq_get_outdev_name - add2group nfq_get_physoutdev_name nfq_get_packet_hw - add2group nfq_get_skbinfo - add2group nfq_get_uid nfq_get_gid - add2group nfq_get_secctx nfq_get_payload - setgroup Queue nfq_fd - add2group nfq_create_queue nfq_destroy_queue nfq_handle_packet nfq_set_mode - add2group nfq_set_queue_flags nfq_set_queue_maxlen nfq_set_verdict - add2group nfq_set_verdict2 nfq_set_verdict_batch - add2group nfq_set_verdict_batch2 nfq_set_verdict_mark - setgroup ipv4 nfq_ip_get_hdr - add2group nfq_ip_set_transport_header nfq_ip_mangle nfq_ip_snprintf - setgroup ip_internals nfq_ip_set_checksum - setgroup ipv6 nfq_ip6_get_hdr - add2group nfq_ip6_set_transport_header nfq_ip6_mangle nfq_ip6_snprintf - setgroup nfq_cfg nfq_nlmsg_cfg_put_cmd - add2group nfq_nlmsg_cfg_put_params nfq_nlmsg_cfg_put_qmaxlen - setgroup nfq_verd nfq_nlmsg_verdict_put - add2group nfq_nlmsg_verdict_put_mark nfq_nlmsg_verdict_put_pkt - setgroup nlmsg nfq_nlmsg_parse - add2group nfq_nlmsg_put - setgroup pktbuff pktb_alloc - add2group pktb_data pktb_len pktb_mangle pktb_mangled - add2group pktb_free - setgroup otherfns pktb_tailroom - add2group pktb_mac_header pktb_network_header pktb_transport_header - setgroup uselessfns pktb_push - add2group pktb_pull pktb_put pktb_trim - setgroup tcp nfq_tcp_get_hdr - add2group nfq_tcp_get_payload nfq_tcp_get_payload_len - add2group nfq_tcp_snprintf nfq_tcp_mangle_ipv4 nfq_tcp_mangle_ipv6 - setgroup tcp_internals nfq_tcp_compute_checksum_ipv4 - add2group nfq_tcp_compute_checksum_ipv6 - setgroup udp nfq_udp_get_hdr - add2group nfq_udp_get_payload nfq_udp_get_payload_len - add2group nfq_udp_mangle_ipv4 nfq_udp_mangle_ipv6 nfq_udp_snprintf - setgroup udp_internals nfq_udp_compute_checksum_ipv4 - add2group nfq_udp_compute_checksum_ipv6 - setgroup Printing nfq_snprintf_xml - setgroup icmp nfq_icmp_get_hdr -} -function setgroup -{ - mv $1.3 $2.3 - BASE=$2 -} -function add2group -{ - for i in $@ - do - ln -sf $BASE.3 $i.3 - done -} -main -- 2.17.5 ^ permalink raw reply related [flat|nested] 11+ messages in thread
* Re: [PATCH libnetfilter_queue 1/1] build: doc: `make distcheck` passes with doxygen enabled 2021-04-20 4:23 ` [PATCH libnetfilter_queue 1/1] build: doc: `make distcheck` passes " Duncan Roe @ 2021-04-20 9:54 ` Jan Engelhardt 2021-04-21 2:17 ` Duncan Roe 0 siblings, 1 reply; 11+ messages in thread From: Jan Engelhardt @ 2021-04-20 9:54 UTC (permalink / raw) To: Duncan Roe; +Cc: netfilter-devel, duncan_roe On Tuesday 2021-04-20 06:23, Duncan Roe wrote: >-AS_IF([test "x$with_doxygen" = xyes], [ >+ [create doxygen documentation])], >+ [with_doxygen="$withval"], [with_doxygen=yes]) >+ >+AS_IF([test "x$with_doxygen" != xno], [ > AC_CHECK_PROGS([DOXYGEN], [doxygen]) > AC_CHECK_PROGS([DOT], [dot], [""]) > AS_IF([test "x$DOT" != "x"], >@@ -48,6 +49,10 @@ AS_IF([test "x$with_doxygen" = xyes], [ > ]) > > AM_CONDITIONAL([HAVE_DOXYGEN], [test -n "$DOXYGEN"]) >+if test -z "$DOXYGEN"; then If you use AS_IF above, you could also make use of it here :) >+# move it out of the way and symlink the real one while we run doxygen. >+ cd ..; [ $$(ls src | wc -l) -gt 8 ] ||\ This looks like it could break anytime (say, when it happens to get to 9 files). Can't it test for a specific filename or set of names? >+ function main { set -e; cd man/man3; rm -f _*;\ The syntax for POSIX sh-compatible functions should be main() { ... >+function setgroup { mv $$1.3 $$2.3; BASE=$$2; };\ >+function add2group { for i in $$@; do ln -sf $$BASE.3 $$i.3; done; };\ Should be quoted, i.e. "$$@". Might as well do it for the other vars. ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH libnetfilter_queue 1/1] build: doc: `make distcheck` passes with doxygen enabled 2021-04-20 9:54 ` Jan Engelhardt @ 2021-04-21 2:17 ` Duncan Roe 2021-04-21 7:21 ` Jan Engelhardt 0 siblings, 1 reply; 11+ messages in thread From: Duncan Roe @ 2021-04-21 2:17 UTC (permalink / raw) To: Jan Engelhardt; +Cc: netfilter-devel, duncan_roe Hi Jan, On Tue, Apr 20, 2021 at 11:54:41AM +0200, Jan Engelhardt wrote: > > On Tuesday 2021-04-20 06:23, Duncan Roe wrote: > >-AS_IF([test "x$with_doxygen" = xyes], [ > >+ [create doxygen documentation])], > >+ [with_doxygen="$withval"], [with_doxygen=yes]) > >+ > >+AS_IF([test "x$with_doxygen" != xno], [ > > AC_CHECK_PROGS([DOXYGEN], [doxygen]) > > AC_CHECK_PROGS([DOT], [dot], [""]) > > AS_IF([test "x$DOT" != "x"], > >@@ -48,6 +49,10 @@ AS_IF([test "x$with_doxygen" = xyes], [ > > ]) > > > > AM_CONDITIONAL([HAVE_DOXYGEN], [test -n "$DOXYGEN"]) > >+if test -z "$DOXYGEN"; then > > If you use AS_IF above, you could also make use of it here :) Happy to do that, but could you spell out the actual line please? My grasp of m4 is tenuous at best - I only copy stuff that I see working elsewhere. In this case I copied Florian Westphal's code from 3622e606. > > >+# move it out of the way and symlink the real one while we run doxygen. > >+ cd ..; [ $$(ls src | wc -l) -gt 8 ] ||\ > > This looks like it could break anytime (say, when it happens to get to 9 > files). Can't it test for a specific filename or set of names? OK I can test for existence of Makefile.in. > > >+ function main { set -e; cd man/man3; rm -f _*;\ > > The syntax for POSIX sh-compatible functions should be > > main() { ... Rats! I had it that way, but the old fixmanpages.sh had 'function' so I changed it to minimise the diff. Will change back to POSIX way in v2. > > >+function setgroup { mv $$1.3 $$2.3; BASE=$$2; };\ > >+function add2group { for i in $$@; do ln -sf $$BASE.3 $$i.3; done; };\ > > Should be quoted, i.e. "$$@". Might as well do it for the other vars. "Should be"? We're dealing with man page names. If unquoted $$@ fails, we've got other problems. Or is it a style thing? Do you want I should quote $$BASE, $$1 & $$2 as well? ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH libnetfilter_queue 1/1] build: doc: `make distcheck` passes with doxygen enabled 2021-04-21 2:17 ` Duncan Roe @ 2021-04-21 7:21 ` Jan Engelhardt 2021-04-21 12:25 ` Duncan Roe 0 siblings, 1 reply; 11+ messages in thread From: Jan Engelhardt @ 2021-04-21 7:21 UTC (permalink / raw) To: Duncan Roe; +Cc: netfilter-devel, duncan_roe On Wednesday 2021-04-21 04:17, Duncan Roe wrote: >> >+if test -z "$DOXYGEN"; then >> >> If you use AS_IF above, you could also make use of it here :) > >Happy to do that, but could you spell out the actual line please? My grasp of m4 >is tenuous at best - I only copy stuff that I see working elsewhere. AS_IF([test -z "$DOXYGEN], [what if true], [what if false]) > >In this case I copied Florian Westphal's code from 3622e606. >> >> >+# move it out of the way and symlink the real one while we run doxygen. >> >+ cd ..; [ $$(ls src | wc -l) -gt 8 ] ||\ >> >> This looks like it could break anytime (say, when it happens to get to 9 >> files). Can't it test for a specific filename or set of names? > >OK I can test for existence of Makefile.in. >> >> >+ function main { set -e; cd man/man3; rm -f _*;\ >> >> The syntax for POSIX sh-compatible functions should be >> >> main() { ... > >Rats! I had it that way, but the old fixmanpages.sh had 'function' so I changed >it to minimise the diff. Will change back to POSIX way in v2. The old fixmanpages.sh had #!/bin/bash, which forced bash, but such guarantee does not exist for the Makefile at this point (and the change to POSIX sh is nonintrusive anyway). >> >+function setgroup { mv $$1.3 $$2.3; BASE=$$2; };\ >> >+function add2group { for i in $$@; do ln -sf $$BASE.3 $$i.3; done; };\ >> >> Should be quoted, i.e. "$$@". Might as well do it for the other vars. > >"Should be"? We're dealing with man page names. If unquoted $$@ fails, we've got >other problems. Yeah, make does not lend itself well to filenames with spaces I guess. ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH libnetfilter_queue 1/1] build: doc: `make distcheck` passes with doxygen enabled 2021-04-21 7:21 ` Jan Engelhardt @ 2021-04-21 12:25 ` Duncan Roe 2021-04-21 16:25 ` Jan Engelhardt 0 siblings, 1 reply; 11+ messages in thread From: Duncan Roe @ 2021-04-21 12:25 UTC (permalink / raw) To: Jan Engelhardt; +Cc: Netfilter Development Hi Jan, On Wed, Apr 21, 2021 at 09:21:26AM +0200, Jan Engelhardt wrote: > > On Wednesday 2021-04-21 04:17, Duncan Roe wrote: > >> >+if test -z "$DOXYGEN"; then > >> > >> If you use AS_IF above, you could also make use of it here :) > > > >Happy to do that, but could you spell out the actual line please? My grasp of m4 > >is tenuous at best - I only copy stuff that I see working elsewhere. > > AS_IF([test -z "$DOXYGEN], [what if true], [what if false]) > Can I use HAVE_DOXYGEN instead? Is this right: AS_IF(HAVE_DOXYGEN, [what if true], [what if false]) or this? AS_IF($HAVE_DOXYGEN, [what if true], [what if false]) > [...] Cheers ... Duncan. ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH libnetfilter_queue 1/1] build: doc: `make distcheck` passes with doxygen enabled 2021-04-21 12:25 ` Duncan Roe @ 2021-04-21 16:25 ` Jan Engelhardt 2021-04-22 9:35 ` [PATCH libnetfilter_queue v2] " Duncan Roe 0 siblings, 1 reply; 11+ messages in thread From: Jan Engelhardt @ 2021-04-21 16:25 UTC (permalink / raw) To: Duncan Roe; +Cc: Netfilter Development On Wednesday 2021-04-21 14:25, Duncan Roe wrote: >Hi Jan, > >On Wed, Apr 21, 2021 at 09:21:26AM +0200, Jan Engelhardt wrote: >> >> On Wednesday 2021-04-21 04:17, Duncan Roe wrote: >> >> >+if test -z "$DOXYGEN"; then >> >> >> >> If you use AS_IF above, you could also make use of it here :) >> > >> >Happy to do that, but could you spell out the actual line please? My grasp of m4 >> >is tenuous at best - I only copy stuff that I see working elsewhere. >> >> AS_IF([test -z "$DOXYGEN], [what if true], [what if false]) >> >Can I use HAVE_DOXYGEN instead? Is this right: > >AS_IF(HAVE_DOXYGEN, [what if true], [what if false]) Yes/no, the [condition] argument of AS_IF needs to be a shell command. ^ permalink raw reply [flat|nested] 11+ messages in thread
* [PATCH libnetfilter_queue v2] build: doc: `make distcheck` passes with doxygen enabled 2021-04-21 16:25 ` Jan Engelhardt @ 2021-04-22 9:35 ` Duncan Roe 2021-04-28 23:59 ` Duncan Roe 2021-05-02 21:45 ` Pablo Neira Ayuso 0 siblings, 2 replies; 11+ messages in thread From: Duncan Roe @ 2021-04-22 9:35 UTC (permalink / raw) To: pablo; +Cc: netfilter-devel, jengelh, duncan_roe The main fix is to move fixmanpages.sh to inside doxygen/Makefile.am. This means that in future, developers need to update doxygen/Makefile.am when they add new functions and source files, since fixmanpages.sh is deleted. Signed-off-by: Duncan Roe <duncan_roe@optusnet.com.au> --- v2: Implement suggestions from Jan Engelhardt <jengelh@inai.de> Makefile.am | 1 - configure.ac | 11 +++++-- doxygen/Makefile.am | 76 +++++++++++++++++++++++++++++++++++++++++++-- fixmanpages.sh | 66 --------------------------------------- 4 files changed, 82 insertions(+), 72 deletions(-) delete mode 100755 fixmanpages.sh diff --git a/Makefile.am b/Makefile.am index 796f0d0..a5b347b 100644 --- a/Makefile.am +++ b/Makefile.am @@ -10,4 +10,3 @@ pkgconfigdir = $(libdir)/pkgconfig pkgconfig_DATA = libnetfilter_queue.pc EXTRA_DIST += Make_global.am -EXTRA_DIST += fixmanpages.sh diff --git a/configure.ac b/configure.ac index 32e4990..bdbee98 100644 --- a/configure.ac +++ b/configure.ac @@ -37,9 +37,10 @@ AC_CONFIG_FILES([Makefile src/Makefile utils/Makefile examples/Makefile include/linux/Makefile include/linux/netfilter/Makefile]) AC_ARG_WITH([doxygen], [AS_HELP_STRING([--with-doxygen], - [create doxygen documentation [default=no]])], - [], [with_doxygen=no]) -AS_IF([test "x$with_doxygen" = xyes], [ + [create doxygen documentation])], + [with_doxygen="$withval"], [with_doxygen=yes]) + +AS_IF([test "x$with_doxygen" != xno], [ AC_CHECK_PROGS([DOXYGEN], [doxygen]) AC_CHECK_PROGS([DOT], [dot], [""]) AS_IF([test "x$DOT" != "x"], @@ -48,6 +49,10 @@ AS_IF([test "x$with_doxygen" = xyes], [ ]) AM_CONDITIONAL([HAVE_DOXYGEN], [test -n "$DOXYGEN"]) +AS_IF([test "x$DOXYGEN" = x], [ + dnl Only run doxygen Makefile if doxygen installed + AC_MSG_WARN([Doxygen not found - continuing without Doxygen support]) +]) AC_OUTPUT echo " diff --git a/doxygen/Makefile.am b/doxygen/Makefile.am index 0f99feb..b4268a5 100644 --- a/doxygen/Makefile.am +++ b/doxygen/Makefile.am @@ -1,4 +1,6 @@ if HAVE_DOXYGEN + +# Be sure to add new source files to this table doc_srcs = $(top_srcdir)/src/libnetfilter_queue.c \ $(top_srcdir)/src/nlmsg.c \ $(top_srcdir)/src/extra/checksum.c \ @@ -9,8 +11,74 @@ doc_srcs = $(top_srcdir)/src/libnetfilter_queue.c \ $(top_srcdir)/src/extra/icmp.c \ $(top_srcdir)/src/extra/pktbuff.c -doxyfile.stamp: $(doc_srcs) $(top_srcdir)/fixmanpages.sh - rm -rf html man && cd .. && doxygen doxygen.cfg >/dev/null && ./fixmanpages.sh +doxyfile.stamp: $(doc_srcs) Makefile.am + rm -rf html man + +# Test for running under make distcheck. +# If so, sibling src directory will be empty: +# move it out of the way and symlink the real one while we run doxygen. + [ -f ../src/Makefile.in ] || \ +{ set -x; cd ..; mv src src.distcheck; ln -s $(top_srcdir)/src; } + + cd ..; doxygen doxygen.cfg >/dev/null + + [ ! -d ../src.distcheck ] || \ +{ set -x; cd ..; rm src; mv src.distcheck src; } + +# Keep this command up to date after adding new functions and source files. +# The command has to be a single line so the functions work +# (hence ";\" at the end of every line but the last). + main() { set -e; cd man/man3; rm -f _*;\ +setgroup LibrarySetup nfq_open;\ + add2group nfq_close nfq_bind_pf nfq_unbind_pf;\ +setgroup Parsing nfq_get_msg_packet_hdr;\ + add2group nfq_get_nfmark nfq_get_timestamp nfq_get_indev nfq_get_physindev;\ + add2group nfq_get_outdev nfq_get_physoutdev nfq_get_indev_name;\ + add2group nfq_get_physindev_name nfq_get_outdev_name;\ + add2group nfq_get_physoutdev_name nfq_get_packet_hw;\ + add2group nfq_get_skbinfo;\ + add2group nfq_get_uid nfq_get_gid;\ + add2group nfq_get_secctx nfq_get_payload;\ +setgroup Queue nfq_fd;\ + add2group nfq_create_queue nfq_destroy_queue nfq_handle_packet nfq_set_mode;\ + add2group nfq_set_queue_flags nfq_set_queue_maxlen nfq_set_verdict;\ + add2group nfq_set_verdict2 nfq_set_verdict_batch;\ + add2group nfq_set_verdict_batch2 nfq_set_verdict_mark;\ +setgroup ipv4 nfq_ip_get_hdr;\ + add2group nfq_ip_set_transport_header nfq_ip_mangle nfq_ip_snprintf;\ + setgroup ip_internals nfq_ip_set_checksum;\ +setgroup ipv6 nfq_ip6_get_hdr;\ + add2group nfq_ip6_set_transport_header nfq_ip6_mangle nfq_ip6_snprintf;\ +setgroup nfq_cfg nfq_nlmsg_cfg_put_cmd;\ + add2group nfq_nlmsg_cfg_put_params nfq_nlmsg_cfg_put_qmaxlen;\ +setgroup nfq_verd nfq_nlmsg_verdict_put;\ + add2group nfq_nlmsg_verdict_put_mark nfq_nlmsg_verdict_put_pkt;\ +setgroup nlmsg nfq_nlmsg_parse;\ + add2group nfq_nlmsg_put;\ +setgroup pktbuff pktb_alloc;\ + add2group pktb_data pktb_len pktb_mangle pktb_mangled;\ + add2group pktb_free;\ + setgroup otherfns pktb_tailroom;\ + add2group pktb_mac_header pktb_network_header pktb_transport_header;\ + setgroup uselessfns pktb_push;\ + add2group pktb_pull pktb_put pktb_trim;\ +setgroup tcp nfq_tcp_get_hdr;\ + add2group nfq_tcp_get_payload nfq_tcp_get_payload_len;\ + add2group nfq_tcp_snprintf nfq_tcp_mangle_ipv4 nfq_tcp_mangle_ipv6;\ + setgroup tcp_internals nfq_tcp_compute_checksum_ipv4;\ + add2group nfq_tcp_compute_checksum_ipv6;\ +setgroup udp nfq_udp_get_hdr;\ + add2group nfq_udp_get_payload nfq_udp_get_payload_len;\ + add2group nfq_udp_mangle_ipv4 nfq_udp_mangle_ipv6 nfq_udp_snprintf;\ + setgroup udp_internals nfq_udp_compute_checksum_ipv4;\ + add2group nfq_udp_compute_checksum_ipv6;\ +setgroup Printing nfq_snprintf_xml;\ +setgroup icmp nfq_icmp_get_hdr;\ +};\ +setgroup() { mv $$1.3 $$2.3; BASE=$$2; };\ +add2group() { for i in $$@; do ln -sf $$BASE.3 $$i.3; done; };\ +main + touch doxyfile.stamp CLEANFILES = doxyfile.stamp @@ -21,4 +89,8 @@ clean-local: install-data-local: mkdir -p $(DESTDIR)$(mandir)/man3 cp --no-dereference --preserve=links,mode,timestamps man/man3/*.3 $(DESTDIR)$(mandir)/man3/ + +# make distcheck needs uninstall-local +uninstall-local: + rm -r $(DESTDIR)$(mandir) man html doxyfile.stamp endif diff --git a/fixmanpages.sh b/fixmanpages.sh deleted file mode 100755 index 02064ab..0000000 --- a/fixmanpages.sh +++ /dev/null @@ -1,66 +0,0 @@ -#!/bin/bash -p -#set -x -function main -{ - set -e - cd doxygen/man/man3 - rm -f _* - setgroup LibrarySetup nfq_open - add2group nfq_close nfq_bind_pf nfq_unbind_pf - setgroup Parsing nfq_get_msg_packet_hdr - add2group nfq_get_nfmark nfq_get_timestamp nfq_get_indev nfq_get_physindev - add2group nfq_get_outdev nfq_get_physoutdev nfq_get_indev_name - add2group nfq_get_physindev_name nfq_get_outdev_name - add2group nfq_get_physoutdev_name nfq_get_packet_hw - add2group nfq_get_skbinfo - add2group nfq_get_uid nfq_get_gid - add2group nfq_get_secctx nfq_get_payload - setgroup Queue nfq_fd - add2group nfq_create_queue nfq_destroy_queue nfq_handle_packet nfq_set_mode - add2group nfq_set_queue_flags nfq_set_queue_maxlen nfq_set_verdict - add2group nfq_set_verdict2 nfq_set_verdict_batch - add2group nfq_set_verdict_batch2 nfq_set_verdict_mark - setgroup ipv4 nfq_ip_get_hdr - add2group nfq_ip_set_transport_header nfq_ip_mangle nfq_ip_snprintf - setgroup ip_internals nfq_ip_set_checksum - setgroup ipv6 nfq_ip6_get_hdr - add2group nfq_ip6_set_transport_header nfq_ip6_mangle nfq_ip6_snprintf - setgroup nfq_cfg nfq_nlmsg_cfg_put_cmd - add2group nfq_nlmsg_cfg_put_params nfq_nlmsg_cfg_put_qmaxlen - setgroup nfq_verd nfq_nlmsg_verdict_put - add2group nfq_nlmsg_verdict_put_mark nfq_nlmsg_verdict_put_pkt - setgroup nlmsg nfq_nlmsg_parse - add2group nfq_nlmsg_put - setgroup pktbuff pktb_alloc - add2group pktb_data pktb_len pktb_mangle pktb_mangled - add2group pktb_free - setgroup otherfns pktb_tailroom - add2group pktb_mac_header pktb_network_header pktb_transport_header - setgroup uselessfns pktb_push - add2group pktb_pull pktb_put pktb_trim - setgroup tcp nfq_tcp_get_hdr - add2group nfq_tcp_get_payload nfq_tcp_get_payload_len - add2group nfq_tcp_snprintf nfq_tcp_mangle_ipv4 nfq_tcp_mangle_ipv6 - setgroup tcp_internals nfq_tcp_compute_checksum_ipv4 - add2group nfq_tcp_compute_checksum_ipv6 - setgroup udp nfq_udp_get_hdr - add2group nfq_udp_get_payload nfq_udp_get_payload_len - add2group nfq_udp_mangle_ipv4 nfq_udp_mangle_ipv6 nfq_udp_snprintf - setgroup udp_internals nfq_udp_compute_checksum_ipv4 - add2group nfq_udp_compute_checksum_ipv6 - setgroup Printing nfq_snprintf_xml - setgroup icmp nfq_icmp_get_hdr -} -function setgroup -{ - mv $1.3 $2.3 - BASE=$2 -} -function add2group -{ - for i in $@ - do - ln -sf $BASE.3 $i.3 - done -} -main -- 2.17.5 ^ permalink raw reply related [flat|nested] 11+ messages in thread
* Re: [PATCH libnetfilter_queue v2] build: doc: `make distcheck` passes with doxygen enabled 2021-04-22 9:35 ` [PATCH libnetfilter_queue v2] " Duncan Roe @ 2021-04-28 23:59 ` Duncan Roe 2021-04-29 9:11 ` Jan Engelhardt 2021-05-02 21:45 ` Pablo Neira Ayuso 1 sibling, 1 reply; 11+ messages in thread From: Duncan Roe @ 2021-04-28 23:59 UTC (permalink / raw) To: Jan Engelhardt; +Cc: Netfilter Development, Pablo Neira Ayuso Hi Jan, Are you satisfied with the v2 patch? If so, could you maybe post an "Acked-by", "Reviewed-by" or LGTM please? Pablo has not responded and there is a bit of urgency in that I have 3 more patchsets before the next LNFQ release and was hoping the release would get out in time for Slackware 15.0. Cheers ... Duncan. On Thu, Apr 22, 2021 at 07:35:44PM +1000, Duncan Roe wrote: > The main fix is to move fixmanpages.sh to inside doxygen/Makefile.am. > > This means that in future, developers need to update doxygen/Makefile.am > when they add new functions and source files, since fixmanpages.sh is deleted. > > Signed-off-by: Duncan Roe <duncan_roe@optusnet.com.au> > --- > v2: Implement suggestions from Jan Engelhardt <jengelh@inai.de> > > Makefile.am | 1 - > configure.ac | 11 +++++-- > doxygen/Makefile.am | 76 +++++++++++++++++++++++++++++++++++++++++++-- > fixmanpages.sh | 66 --------------------------------------- > 4 files changed, 82 insertions(+), 72 deletions(-) > delete mode 100755 fixmanpages.sh > > diff --git a/Makefile.am b/Makefile.am > index 796f0d0..a5b347b 100644 > --- a/Makefile.am > +++ b/Makefile.am > @@ -10,4 +10,3 @@ pkgconfigdir = $(libdir)/pkgconfig > pkgconfig_DATA = libnetfilter_queue.pc > > EXTRA_DIST += Make_global.am > -EXTRA_DIST += fixmanpages.sh > diff --git a/configure.ac b/configure.ac > index 32e4990..bdbee98 100644 > --- a/configure.ac > +++ b/configure.ac > @@ -37,9 +37,10 @@ AC_CONFIG_FILES([Makefile src/Makefile utils/Makefile examples/Makefile > include/linux/Makefile include/linux/netfilter/Makefile]) > > AC_ARG_WITH([doxygen], [AS_HELP_STRING([--with-doxygen], > - [create doxygen documentation [default=no]])], > - [], [with_doxygen=no]) > -AS_IF([test "x$with_doxygen" = xyes], [ > + [create doxygen documentation])], > + [with_doxygen="$withval"], [with_doxygen=yes]) > + > +AS_IF([test "x$with_doxygen" != xno], [ > AC_CHECK_PROGS([DOXYGEN], [doxygen]) > AC_CHECK_PROGS([DOT], [dot], [""]) > AS_IF([test "x$DOT" != "x"], > @@ -48,6 +49,10 @@ AS_IF([test "x$with_doxygen" = xyes], [ > ]) > > AM_CONDITIONAL([HAVE_DOXYGEN], [test -n "$DOXYGEN"]) > +AS_IF([test "x$DOXYGEN" = x], [ > + dnl Only run doxygen Makefile if doxygen installed > + AC_MSG_WARN([Doxygen not found - continuing without Doxygen support]) > +]) > AC_OUTPUT > > echo " > diff --git a/doxygen/Makefile.am b/doxygen/Makefile.am > index 0f99feb..b4268a5 100644 > --- a/doxygen/Makefile.am > +++ b/doxygen/Makefile.am > @@ -1,4 +1,6 @@ > if HAVE_DOXYGEN > + > +# Be sure to add new source files to this table > doc_srcs = $(top_srcdir)/src/libnetfilter_queue.c \ > $(top_srcdir)/src/nlmsg.c \ > $(top_srcdir)/src/extra/checksum.c \ > @@ -9,8 +11,74 @@ doc_srcs = $(top_srcdir)/src/libnetfilter_queue.c \ > $(top_srcdir)/src/extra/icmp.c \ > $(top_srcdir)/src/extra/pktbuff.c > > -doxyfile.stamp: $(doc_srcs) $(top_srcdir)/fixmanpages.sh > - rm -rf html man && cd .. && doxygen doxygen.cfg >/dev/null && ./fixmanpages.sh > +doxyfile.stamp: $(doc_srcs) Makefile.am > + rm -rf html man > + > +# Test for running under make distcheck. > +# If so, sibling src directory will be empty: > +# move it out of the way and symlink the real one while we run doxygen. > + [ -f ../src/Makefile.in ] || \ > +{ set -x; cd ..; mv src src.distcheck; ln -s $(top_srcdir)/src; } > + > + cd ..; doxygen doxygen.cfg >/dev/null > + > + [ ! -d ../src.distcheck ] || \ > +{ set -x; cd ..; rm src; mv src.distcheck src; } > + > +# Keep this command up to date after adding new functions and source files. > +# The command has to be a single line so the functions work > +# (hence ";\" at the end of every line but the last). > + main() { set -e; cd man/man3; rm -f _*;\ > +setgroup LibrarySetup nfq_open;\ > + add2group nfq_close nfq_bind_pf nfq_unbind_pf;\ > +setgroup Parsing nfq_get_msg_packet_hdr;\ > + add2group nfq_get_nfmark nfq_get_timestamp nfq_get_indev nfq_get_physindev;\ > + add2group nfq_get_outdev nfq_get_physoutdev nfq_get_indev_name;\ > + add2group nfq_get_physindev_name nfq_get_outdev_name;\ > + add2group nfq_get_physoutdev_name nfq_get_packet_hw;\ > + add2group nfq_get_skbinfo;\ > + add2group nfq_get_uid nfq_get_gid;\ > + add2group nfq_get_secctx nfq_get_payload;\ > +setgroup Queue nfq_fd;\ > + add2group nfq_create_queue nfq_destroy_queue nfq_handle_packet nfq_set_mode;\ > + add2group nfq_set_queue_flags nfq_set_queue_maxlen nfq_set_verdict;\ > + add2group nfq_set_verdict2 nfq_set_verdict_batch;\ > + add2group nfq_set_verdict_batch2 nfq_set_verdict_mark;\ > +setgroup ipv4 nfq_ip_get_hdr;\ > + add2group nfq_ip_set_transport_header nfq_ip_mangle nfq_ip_snprintf;\ > + setgroup ip_internals nfq_ip_set_checksum;\ > +setgroup ipv6 nfq_ip6_get_hdr;\ > + add2group nfq_ip6_set_transport_header nfq_ip6_mangle nfq_ip6_snprintf;\ > +setgroup nfq_cfg nfq_nlmsg_cfg_put_cmd;\ > + add2group nfq_nlmsg_cfg_put_params nfq_nlmsg_cfg_put_qmaxlen;\ > +setgroup nfq_verd nfq_nlmsg_verdict_put;\ > + add2group nfq_nlmsg_verdict_put_mark nfq_nlmsg_verdict_put_pkt;\ > +setgroup nlmsg nfq_nlmsg_parse;\ > + add2group nfq_nlmsg_put;\ > +setgroup pktbuff pktb_alloc;\ > + add2group pktb_data pktb_len pktb_mangle pktb_mangled;\ > + add2group pktb_free;\ > + setgroup otherfns pktb_tailroom;\ > + add2group pktb_mac_header pktb_network_header pktb_transport_header;\ > + setgroup uselessfns pktb_push;\ > + add2group pktb_pull pktb_put pktb_trim;\ > +setgroup tcp nfq_tcp_get_hdr;\ > + add2group nfq_tcp_get_payload nfq_tcp_get_payload_len;\ > + add2group nfq_tcp_snprintf nfq_tcp_mangle_ipv4 nfq_tcp_mangle_ipv6;\ > + setgroup tcp_internals nfq_tcp_compute_checksum_ipv4;\ > + add2group nfq_tcp_compute_checksum_ipv6;\ > +setgroup udp nfq_udp_get_hdr;\ > + add2group nfq_udp_get_payload nfq_udp_get_payload_len;\ > + add2group nfq_udp_mangle_ipv4 nfq_udp_mangle_ipv6 nfq_udp_snprintf;\ > + setgroup udp_internals nfq_udp_compute_checksum_ipv4;\ > + add2group nfq_udp_compute_checksum_ipv6;\ > +setgroup Printing nfq_snprintf_xml;\ > +setgroup icmp nfq_icmp_get_hdr;\ > +};\ > +setgroup() { mv $$1.3 $$2.3; BASE=$$2; };\ > +add2group() { for i in $$@; do ln -sf $$BASE.3 $$i.3; done; };\ > +main > + > touch doxyfile.stamp > > CLEANFILES = doxyfile.stamp > @@ -21,4 +89,8 @@ clean-local: > install-data-local: > mkdir -p $(DESTDIR)$(mandir)/man3 > cp --no-dereference --preserve=links,mode,timestamps man/man3/*.3 $(DESTDIR)$(mandir)/man3/ > + > +# make distcheck needs uninstall-local > +uninstall-local: > + rm -r $(DESTDIR)$(mandir) man html doxyfile.stamp > endif > diff --git a/fixmanpages.sh b/fixmanpages.sh > deleted file mode 100755 > index 02064ab..0000000 > --- a/fixmanpages.sh > +++ /dev/null > @@ -1,66 +0,0 @@ > -#!/bin/bash -p > -#set -x > -function main > -{ > - set -e > - cd doxygen/man/man3 > - rm -f _* > - setgroup LibrarySetup nfq_open > - add2group nfq_close nfq_bind_pf nfq_unbind_pf > - setgroup Parsing nfq_get_msg_packet_hdr > - add2group nfq_get_nfmark nfq_get_timestamp nfq_get_indev nfq_get_physindev > - add2group nfq_get_outdev nfq_get_physoutdev nfq_get_indev_name > - add2group nfq_get_physindev_name nfq_get_outdev_name > - add2group nfq_get_physoutdev_name nfq_get_packet_hw > - add2group nfq_get_skbinfo > - add2group nfq_get_uid nfq_get_gid > - add2group nfq_get_secctx nfq_get_payload > - setgroup Queue nfq_fd > - add2group nfq_create_queue nfq_destroy_queue nfq_handle_packet nfq_set_mode > - add2group nfq_set_queue_flags nfq_set_queue_maxlen nfq_set_verdict > - add2group nfq_set_verdict2 nfq_set_verdict_batch > - add2group nfq_set_verdict_batch2 nfq_set_verdict_mark > - setgroup ipv4 nfq_ip_get_hdr > - add2group nfq_ip_set_transport_header nfq_ip_mangle nfq_ip_snprintf > - setgroup ip_internals nfq_ip_set_checksum > - setgroup ipv6 nfq_ip6_get_hdr > - add2group nfq_ip6_set_transport_header nfq_ip6_mangle nfq_ip6_snprintf > - setgroup nfq_cfg nfq_nlmsg_cfg_put_cmd > - add2group nfq_nlmsg_cfg_put_params nfq_nlmsg_cfg_put_qmaxlen > - setgroup nfq_verd nfq_nlmsg_verdict_put > - add2group nfq_nlmsg_verdict_put_mark nfq_nlmsg_verdict_put_pkt > - setgroup nlmsg nfq_nlmsg_parse > - add2group nfq_nlmsg_put > - setgroup pktbuff pktb_alloc > - add2group pktb_data pktb_len pktb_mangle pktb_mangled > - add2group pktb_free > - setgroup otherfns pktb_tailroom > - add2group pktb_mac_header pktb_network_header pktb_transport_header > - setgroup uselessfns pktb_push > - add2group pktb_pull pktb_put pktb_trim > - setgroup tcp nfq_tcp_get_hdr > - add2group nfq_tcp_get_payload nfq_tcp_get_payload_len > - add2group nfq_tcp_snprintf nfq_tcp_mangle_ipv4 nfq_tcp_mangle_ipv6 > - setgroup tcp_internals nfq_tcp_compute_checksum_ipv4 > - add2group nfq_tcp_compute_checksum_ipv6 > - setgroup udp nfq_udp_get_hdr > - add2group nfq_udp_get_payload nfq_udp_get_payload_len > - add2group nfq_udp_mangle_ipv4 nfq_udp_mangle_ipv6 nfq_udp_snprintf > - setgroup udp_internals nfq_udp_compute_checksum_ipv4 > - add2group nfq_udp_compute_checksum_ipv6 > - setgroup Printing nfq_snprintf_xml > - setgroup icmp nfq_icmp_get_hdr > -} > -function setgroup > -{ > - mv $1.3 $2.3 > - BASE=$2 > -} > -function add2group > -{ > - for i in $@ > - do > - ln -sf $BASE.3 $i.3 > - done > -} > -main > -- > 2.17.5 > ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH libnetfilter_queue v2] build: doc: `make distcheck` passes with doxygen enabled 2021-04-28 23:59 ` Duncan Roe @ 2021-04-29 9:11 ` Jan Engelhardt 0 siblings, 0 replies; 11+ messages in thread From: Jan Engelhardt @ 2021-04-29 9:11 UTC (permalink / raw) To: Duncan Roe; +Cc: Netfilter Development, Pablo Neira Ayuso On Thursday 2021-04-29 01:59, Duncan Roe wrote: >Hi Jan, > >Are you satisfied with the v2 patch? Acked-by: Jan Engelhardt <jengelh@inai.de> ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH libnetfilter_queue v2] build: doc: `make distcheck` passes with doxygen enabled 2021-04-22 9:35 ` [PATCH libnetfilter_queue v2] " Duncan Roe 2021-04-28 23:59 ` Duncan Roe @ 2021-05-02 21:45 ` Pablo Neira Ayuso 1 sibling, 0 replies; 11+ messages in thread From: Pablo Neira Ayuso @ 2021-05-02 21:45 UTC (permalink / raw) To: Duncan Roe; +Cc: netfilter-devel, jengelh, duncan_roe On Thu, Apr 22, 2021 at 07:35:44PM +1000, Duncan Roe wrote: > The main fix is to move fixmanpages.sh to inside doxygen/Makefile.am. > > This means that in future, developers need to update doxygen/Makefile.am > when they add new functions and source files, since fixmanpages.sh is deleted. Applied. ^ permalink raw reply [flat|nested] 11+ messages in thread
end of thread, other threads:[~2021-05-02 21:45 UTC | newest] Thread overview: 11+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2021-04-20 4:23 Now have make distcheck passing with doxygen enabled Duncan Roe 2021-04-20 4:23 ` [PATCH libnetfilter_queue 1/1] build: doc: `make distcheck` passes " Duncan Roe 2021-04-20 9:54 ` Jan Engelhardt 2021-04-21 2:17 ` Duncan Roe 2021-04-21 7:21 ` Jan Engelhardt 2021-04-21 12:25 ` Duncan Roe 2021-04-21 16:25 ` Jan Engelhardt 2021-04-22 9:35 ` [PATCH libnetfilter_queue v2] " Duncan Roe 2021-04-28 23:59 ` Duncan Roe 2021-04-29 9:11 ` Jan Engelhardt 2021-05-02 21:45 ` Pablo Neira Ayuso
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.