X-Git-Url: https://git.gag.com/?a=blobdiff_plain;ds=sidebyside;f=config%2Fautomake%2Finstallperms.am;h=586eb018578e68a2aa5b59b2347c0ca14a3db992;hb=2627875b7d18858bc1f9f7652811e4d8c15a23eb;hp=245345bb18ae7f4a0a4c002c31c00f69332396cc;hpb=fb2bd066c2f8b34addafe48d62550e3033a59431;p=debian%2Famanda diff --git a/config/automake/installperms.am b/config/automake/installperms.am index 245345b..586eb01 100644 --- a/config/automake/installperms.am +++ b/config/automake/installperms.am @@ -25,7 +25,7 @@ # INSTALLPERMS_exec = \ # dest=$(sbindir) chown=amanda chmod= \ # foo bar \ -# chmod=u+s,o-rwx \ +# chmod=07450 \ # bing # dest=$(libexecdir) chmod= \ # $(libexec_PROGRAMS) @@ -35,13 +35,41 @@ # # This whole operation is not required when making builds for packaging, # and can be disabled with --disable-installperms, via the WANT_INSTALLPERMS -# AM_CONDITIONAL. +# AM_CONDITIONAL. When disabled, the file 'installperms.sh' in the top-level +# build directory is populated with a format suitable for shell interpretation, +# with lines like this: +# installperm "amanda:disk" "04750" "/usr/local/sbin/bing" +# the arguments being, respectively, owner:group, mode, and filename. There will +# be exactly one line for each file which has specific permissions. The intention +# is that this file be used by packaging scripts to set correct permissions at install +# time. Note that files which have no special permissions requirements do not appear +# in this file at all, due to limitations of Automake. # sed expression to strip leading directories from a filename; this converts e.g., # src/foo/bar.so to bar.so. strip_leading_dirs=s|^.*/|| +# define a snippet of the scripts below to either perform a chown/chmod operation, +# or record that operation in the logfile. On entry to the snippet, $$dest is the +# destination directory, $$cmd is the srcdir-relative pathname of the target file, +# $$chown is the ownership, and $$chmod is the permission pattern. if WANT_INSTALLPERMS +do_file=pa="$(DESTDIR)$$dest"/`echo "$$cmd"|sed '$(strip_leading_dirs)'|sed '$(transform)'`; \ + if test -n "$$chown"; then \ + echo chown "$$chown" "$$pa"; \ + chown "$$chown" "$$pa" || exit 1; \ + fi; \ + if test -n "$$chmod"; then \ + echo chmod "$$chmod" "$$pa"; \ + chmod "$$chmod" "$$pa" || exit 1; \ + fi +else +installperms_sh="$(top_builddir)/installperms.sh" +do_file=pa="$$dest"/`echo "$$cmd"|sed '$(strip_leading_dirs)'|sed '$(transform)'`; \ + echo "installperm \"$$chown\" \"$$chmod\" \"$$pa\"" >> "$(installperms_sh)" +DISTCLEANFILES += $(installperms_sh) +endif + installperms-exec: @installperms="$(INSTALLPERMS_exec)"; \ test -n "$$installperms" && echo "Setting installation permissions on executables"; \ @@ -52,21 +80,12 @@ installperms-exec: echo " ($$cmd)"; chown="$(BINARY_OWNER):$(SETUID_GROUP)";; \ dest=*|chown=*|chmod=*) \ echo " ($$cmd)"; eval $$cmd;; \ - *) pa="$(DESTDIR)$$dest"/`echo "$$cmd"|sed '$(strip_leading_dirs)'|sed '$(transform)'`; \ - if test -n "$$chown"; then \ - echo chown "$$chown" "$$pa"; \ - chown "$$chown" "$$pa" || exit 1; \ - fi; \ - if test -n "$$chmod"; then \ - echo chmod "$$chmod" "$$pa"; \ - chmod "$$chmod" "$$pa" || exit 1; \ - fi; \ + *) $(do_file) ;; \ esac; \ done installperms-data: @installperms="$(INSTALLPERMS_data)"; \ - test -n "$$installperms" && echo "Setting installation permissions on data"; \ dest=; chown=; chmod=; \ for cmd in $$installperms; do \ case "$$cmd" in \ @@ -74,18 +93,17 @@ installperms-data: echo " ($$cmd)"; chown="$(BINARY_OWNER):$(SETUID_GROUP)";; \ dest=*|chown=*|chmod=*) \ echo " ($$cmd)"; eval $$cmd;; \ - *) pa="$(DESTDIR)$$dest"/`echo "$$cmd"|sed '$(strip_leading_dirs)'|sed '$(transform)'`; \ - if test -n "$$chown"; then \ - echo chown "$$chown" "$$pa"; \ - chown "$$chown" "$$pa" || exit 1; \ - fi; \ - if test -n "$$chmod"; then \ - echo chmod "$$chmod" "$$pa"; \ - chmod "$$chmod" "$$pa" || exit 1; \ - fi; \ + *) $(do_file) ;; \ esac; \ done install-exec-hook: installperms-exec install-data-hook: installperms-data + +# define a rule to initialize the installperms manifest file +if WANT_INSTALLPERMS +installperms-init: +else +installperms-init: + rm -f "$(installperms_sh)" endif