The newly added variables STRIP_BINARIES, STRIP_SHARED and STRIP_STATIC, that are set in makepkg.conf, specify the strip options used on binaries and shared and static libraries. In addition, files are now stripped more aggressively by default. Implements FS#13592 the way it was suggested by Allan in the comments. Signed-off-by: Cedric Staniewski <cedric@gmx.ca> --- There are only two minor changes in this patch compared to the initial one. * removed an unneeded "@rm -f $@.tmp" from the following code section: # These rules are due to the includes and files of the asciidoc text $(ASCIIDOC_MANS): asciidoc.conf footer.txt Makefile @echo GEN $@; @rm -f $@.tmp @test -f $(srcdir)/$@.txt && $(edit) $(srcdir)/$@.txt >$@.tmp || true a2x $(A2X_OPTS) --asciidoc-opts="$(ASCIIDOC_OPTS)" $@.tmp @rm -f $@.tmp * changed an output message to reflect the new default strip options - msg2 "$(gettext "Stripping debugging symbols from binaries and libraries...")" + msg2 "$(gettext "Stripping unneeded symbols from binaries and libraries...")" configure.ac | 9 +++++++++ doc/Makefile.am | 13 +++++++++++-- doc/makepkg.conf.5.txt | 12 ++++++++++++ etc/Makefile.am | 3 +++ etc/makepkg.conf.in | 6 ++++++ scripts/makepkg.sh.in | 8 ++++---- 6 files changed, 45 insertions(+), 6 deletions(-) diff --git a/configure.ac b/configure.ac index 80e41a6..faf774f 100644 --- a/configure.ac +++ b/configure.ac @@ -186,6 +186,9 @@ GCC_GNU89_INLINE_CC # Host-dependant definitions SIZECMD="stat -L -c %s" SEDINPLACE="sed -i" +STRIP_BINARIES="--strip-all" +STRIP_SHARED="--strip-unneeded" +STRIP_STATIC="--strip-debug" case "${host_os}" in *bsd*) SIZECMD="stat -L -f %z" @@ -199,6 +202,9 @@ case "${host_os}" in host_os_darwin=yes SIZECMD="/usr/bin/stat -L -f %z" SEDINPLACE="/usr/bin/sed -i ''" + STRIP_BINARIES="" + STRIP_SHARED="-S" + STRIP_STATIC="-S" ;; esac @@ -206,6 +212,9 @@ AM_CONDITIONAL([CYGWIN], test "x$host_os_cygwin" = "xyes") AM_CONDITIONAL([DARWIN], test "x$host_os_darwin" = "xyes") AC_SUBST(SIZECMD) AC_SUBST(SEDINPLACE) +AC_SUBST(STRIP_BINARIES) +AC_SUBST(STRIP_SHARED) +AC_SUBST(STRIP_STATIC) # Check for architecture, used in default makepkg.conf # (Note single space left after CARCHFLAGS) diff --git a/doc/Makefile.am b/doc/Makefile.am index fcbcab8..d2f6b35 100644 --- a/doc/Makefile.am +++ b/doc/Makefile.am @@ -66,6 +66,12 @@ else REAL_PACKAGE_VERSION = $(PACKAGE_VERSION) endif +#### Taken from the autoconf scripts Makefile.am #### +edit = sed \ + -e 's|@STRIP_BINARIES[@]|$(STRIP_BINARIES)|g' \ + -e 's|@STRIP_SHARED[@]|$(STRIP_SHARED)|g' \ + -e 's|@STRIP_STATIC[@]|$(STRIP_STATIC)|g' + man_MANS = dist_man_MANS = $(ASCIIDOC_MANS) repo-remove.8 @@ -93,8 +99,11 @@ A2X_OPTS = \ --xsltproc-opts='-param man.endnotes.list.enabled 0 -param man.endnotes.are.numbered 0' # These rules are due to the includes and files of the asciidoc text -$(ASCIIDOC_MANS): asciidoc.conf footer.txt - a2x $(A2X_OPTS) --asciidoc-opts="$(ASCIIDOC_OPTS)" $@.txt +$(ASCIIDOC_MANS): asciidoc.conf footer.txt Makefile + @echo GEN $@; + @test -f $(srcdir)/$@.txt && $(edit) $(srcdir)/$@.txt >$@.tmp || true + a2x $(A2X_OPTS) --asciidoc-opts="$(ASCIIDOC_OPTS)" $@.tmp + @rm -f $@.tmp %.html: %.txt asciidoc $(ASCIIDOC_OPTS) -a linkcss $*.txt diff --git a/doc/makepkg.conf.5.txt b/doc/makepkg.conf.5.txt index 88c4cbb..359db68 100644 --- a/doc/makepkg.conf.5.txt +++ b/doc/makepkg.conf.5.txt @@ -135,6 +135,18 @@ Options affects both generation and checking. The current valid options are: `md5`, `sha1`, `sha256`, `sha384`, and `sha512`. +**STRIP_BINARIES=**"@STRIP_BINARIES@":: + Options to be used when stripping binaries. See `strip''s man page + for details. + +**STRIP_SHARED=**"@STRIP_SHARED@":: + Options to be used when stripping shared libraries. See `strip''s + man page for details. + +**STRIP_STATIC=**"@STRIP_STATIC@":: + Options to be used when stripping static libraries. See `strip''s + man page for details. + **MAN_DIRS=(**{usr{,/local}{,/share},opt/*}/{man,info} ...**)**:: If `zipman` is specified in the OPTIONS array, this variable will instruct makepkg where to look to compress manual (man and info) diff --git a/etc/Makefile.am b/etc/Makefile.am index 55c28c3..25f1834 100644 --- a/etc/Makefile.am +++ b/etc/Makefile.am @@ -13,6 +13,9 @@ edit = sed \ -e 's|@PACKAGE_NAME[@]|$(PACKAGE_NAME)|g' \ -e 's|@PKGEXT[@]|$(PKGEXT)|g' \ -e 's|@SRCEXT[@]|$(SRCEXT)|g' \ + -e 's|@STRIP_BINARIES[@]|$(STRIP_BINARIES)|g' \ + -e 's|@STRIP_SHARED[@]|$(STRIP_SHARED)|g' \ + -e 's|@STRIP_STATIC[@]|$(STRIP_STATIC)|g' \ -e 's|@CARCH[@]|$(CARCH)|g' \ -e 's|@CHOST[@]|$(CHOST)|g' \ -e 's|@ARCHSWITCH[@]|$(ARCHSWITCH)|g' \ diff --git a/etc/makepkg.conf.in b/etc/makepkg.conf.in index 3a3a415..032a7fc 100644 --- a/etc/makepkg.conf.in +++ b/etc/makepkg.conf.in @@ -72,6 +72,12 @@ OPTIONS=(strip docs libtool emptydirs zipman purge) #-- File integrity checks to use. Valid: md5, sha1, sha256, sha384, sha512 INTEGRITY_CHECK=(md5) +#-- Options to be used when stripping binaries. See `man strip' for details. +STRIP_BINARIES="@STRIP_BINARIES@" +#-- Options to be used when stripping shared libraries. See `man strip' for details. +STRIP_SHARED="@STRIP_SHARED@" +#-- Options to be used when stripping static libraries. See `man strip' for details. +STRIP_STATIC="@STRIP_STATIC@" #-- Manual (man and info) directories to compress (if zipman is specified) MAN_DIRS=({usr{,/local}{,/share},opt/*}/{man,info}) #-- Doc directories to remove (if !docs is specified) diff --git a/scripts/makepkg.sh.in b/scripts/makepkg.sh.in index cf71070..d5a8b25 100644 --- a/scripts/makepkg.sh.in +++ b/scripts/makepkg.sh.in @@ -846,18 +846,18 @@ tidy_install() { fi if [[ $(check_option strip) = y && -n ${STRIP_DIRS[*]} ]]; then - msg2 "$(gettext "Stripping debugging symbols from binaries and libraries...")" + msg2 "$(gettext "Stripping unneeded symbols from binaries and libraries...")" local binary find ${STRIP_DIRS[@]} -type f 2>/dev/null | while read binary ; do case "$(file -biz "$binary")" in *compressed-encoding*) # Skip compressed binaries ;; *application/x-sharedlib*) # Libraries (.so) - /usr/bin/strip -S "$binary";; + /usr/bin/strip $STRIP_SHARED "$binary";; *application/x-archive*) # Libraries (.a) - /usr/bin/strip -S "$binary";; + /usr/bin/strip $STRIP_STATIC "$binary";; *application/x-executable*) # Binaries - /usr/bin/strip "$binary";; + /usr/bin/strip $STRIP_BINARIES "$binary";; esac done fi -- 1.6.5.7