On 2020-06-09 13:07, Phil Sutter wrote: > Support for uninstalling is severely broken: > > - extensions/GNUmakefile.in defines an 'install' target but lacks a > respective 'uninstall' one, causing 'make uninstall' abort with an > error message. > > - iptables/Makefile.am defines an 'install-exec-hook' to create the > binary symlinks which are left in place after 'make uninstall'. > > Fix these problems by defining respective targets containing code copied > from automake-generated uninstall targets. > > While being at it, add a few more uninstall-hooks removing custom > directories created by 'make install' if they are empty afterwards. > > Reported-by: Richard Guy Briggs <rgb@xxxxxxxxxx> > Signed-off-by: Phil Sutter <phil@xxxxxx> That's much cleaner, thanks Phil. Tested-by: Richard Guy Briggs <rgb@xxxxxxxxxx> > --- > extensions/GNUmakefile.in | 15 ++++++++++++++- > include/Makefile.am | 5 +++++ > iptables/Makefile.am | 23 +++++++++++++++++++++++ > utils/Makefile.am | 5 +++++ > 4 files changed, 47 insertions(+), 1 deletion(-) > > diff --git a/extensions/GNUmakefile.in b/extensions/GNUmakefile.in > index 0842a55354e4b..956ccb38b2ab9 100644 > --- a/extensions/GNUmakefile.in > +++ b/extensions/GNUmakefile.in > @@ -79,7 +79,7 @@ targets_install := > > .SECONDARY: > > -.PHONY: all install clean distclean FORCE > +.PHONY: all install uninstall clean distclean FORCE > > all: ${targets} > > @@ -92,6 +92,19 @@ install: ${targets_install} ${symlinks_install} > cp -P ${symlinks_install} "${DESTDIR}${xtlibdir}/"; \ > fi; > > +uninstall: > + dir=${DESTDIR}${xtlibdir}; { \ > + test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; \ > + } || { \ > + test -z "${targets_install}" || ( \ > + cd "$$dir" && rm -f ${targets_install} \ > + ); \ > + test -z "${symlinks_install}" || ( \ > + cd "$$dir" && rm -f ${symlinks_install} \ > + ); \ > + rmdir -p --ignore-fail-on-non-empty "$$dir"; \ > + } > + > clean: > rm -f *.o *.oo *.so *.a {matches,targets}.man initext.c initext4.c initext6.c initextb.c initexta.c; > rm -f .*.d .*.dd; > diff --git a/include/Makefile.am b/include/Makefile.am > index e69512092253a..ea34c2fef0d98 100644 > --- a/include/Makefile.am > +++ b/include/Makefile.am > @@ -10,3 +10,8 @@ endif > nobase_include_HEADERS += \ > libiptc/ipt_kernel_headers.h libiptc/libiptc.h \ > libiptc/libip6tc.h libiptc/libxtc.h libiptc/xtcshared.h > + > +uninstall-hook: > + dir=${includedir}/libiptc; { \ > + test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; \ > + } || rmdir -p --ignore-fail-on-non-empty "$$dir" > diff --git a/iptables/Makefile.am b/iptables/Makefile.am > index 2024dbf5cb88c..bab094b7c6aa9 100644 > --- a/iptables/Makefile.am > +++ b/iptables/Makefile.am > @@ -111,3 +111,26 @@ install-exec-hook: > for i in ${v6_sbin_links}; do ${LN_S} -f xtables-legacy-multi "${DESTDIR}${sbindir}/$$i"; done; > for i in ${x_sbin_links}; do ${LN_S} -f xtables-nft-multi "${DESTDIR}${sbindir}/$$i"; done; > ${LN_S} -f iptables-apply "${DESTDIR}${sbindir}/ip6tables-apply" > + > +uninstall-hook: > + dir=${DESTDIR}${bindir}; { \ > + test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; \ > + } || { \ > + test -z "${vx_bin_links}" || ( \ > + cd "$$dir" && rm -f ${vx_bin_links} \ > + ) \ > + } > + dir=${DESTDIR}${sbindir}; { \ > + test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; \ > + } || { \ > + test -z "${v4_sbin_links}" || ( \ > + cd "$$dir" && rm -f ${v4_sbin_links} \ > + ); \ > + test -z "${v6_sbin_links}" || ( \ > + cd "$$dir" && rm -f ${v6_sbin_links} \ > + ); \ > + test -z "${x_sbin_links}" || ( \ > + cd "$$dir" && rm -f ${x_sbin_links} \ > + ); \ > + ( cd "$$dir" && rm -f ip6tables-apply ); \ > + } > diff --git a/utils/Makefile.am b/utils/Makefile.am > index d09a69749b85f..42bd973730194 100644 > --- a/utils/Makefile.am > +++ b/utils/Makefile.am > @@ -14,6 +14,11 @@ sbin_PROGRAMS += nfnl_osf > pkgdata_DATA += pf.os > > nfnl_osf_LDADD = ${libnfnetlink_LIBS} > + > +uninstall-hook: > + dir=${DESTDIR}${pkgdatadir}; { \ > + test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; \ > + } || rmdir -p --ignore-fail-on-non-empty "$$dir" > endif > > if ENABLE_BPFC > -- > 2.27.0 > - RGB -- Richard Guy Briggs <rgb@xxxxxxxxxx> Sr. S/W Engineer, Kernel Security, Base Operating Systems Remote, Ottawa, Red Hat Canada IRC: rgb, SunRaycer Voice: +1.647.777.2635, Internal: (81) 32635