makepkg: make strip options configurable

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>
Signed-off-by: Allan McRae <allan@archlinux.org>
Signed-off-by: Dan McGee <dan@archlinux.org>
This commit is contained in:
Cedric Staniewski 2009-12-21 20:26:28 +01:00 committed by Dan McGee
parent 22331fdadb
commit 5fe41df8a9
6 changed files with 45 additions and 6 deletions

View File

@ -186,6 +186,9 @@ GCC_GNU89_INLINE_CC
# Host-dependant definitions # Host-dependant definitions
SIZECMD="stat -L -c %s" SIZECMD="stat -L -c %s"
SEDINPLACE="sed -i" SEDINPLACE="sed -i"
STRIP_BINARIES="--strip-all"
STRIP_SHARED="--strip-unneeded"
STRIP_STATIC="--strip-debug"
case "${host_os}" in case "${host_os}" in
*bsd*) *bsd*)
SIZECMD="stat -L -f %z" SIZECMD="stat -L -f %z"
@ -199,6 +202,9 @@ case "${host_os}" in
host_os_darwin=yes host_os_darwin=yes
SIZECMD="/usr/bin/stat -L -f %z" SIZECMD="/usr/bin/stat -L -f %z"
SEDINPLACE="/usr/bin/sed -i ''" SEDINPLACE="/usr/bin/sed -i ''"
STRIP_BINARIES=""
STRIP_SHARED="-S"
STRIP_STATIC="-S"
;; ;;
esac esac
@ -206,6 +212,9 @@ AM_CONDITIONAL([CYGWIN], test "x$host_os_cygwin" = "xyes")
AM_CONDITIONAL([DARWIN], test "x$host_os_darwin" = "xyes") AM_CONDITIONAL([DARWIN], test "x$host_os_darwin" = "xyes")
AC_SUBST(SIZECMD) AC_SUBST(SIZECMD)
AC_SUBST(SEDINPLACE) AC_SUBST(SEDINPLACE)
AC_SUBST(STRIP_BINARIES)
AC_SUBST(STRIP_SHARED)
AC_SUBST(STRIP_STATIC)
# Check for architecture, used in default makepkg.conf # Check for architecture, used in default makepkg.conf
# (Note single space left after CARCHFLAGS) # (Note single space left after CARCHFLAGS)

View File

@ -66,6 +66,12 @@ else
REAL_PACKAGE_VERSION = $(PACKAGE_VERSION) REAL_PACKAGE_VERSION = $(PACKAGE_VERSION)
endif 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 = man_MANS =
dist_man_MANS = $(ASCIIDOC_MANS) repo-remove.8 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' --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 # These rules are due to the includes and files of the asciidoc text
$(ASCIIDOC_MANS): asciidoc.conf footer.txt $(ASCIIDOC_MANS): asciidoc.conf footer.txt Makefile
a2x $(A2X_OPTS) --asciidoc-opts="$(ASCIIDOC_OPTS)" $@.txt @echo GEN $@;
@test -f $(srcdir)/$@.txt && $(edit) $(srcdir)/$@.txt >$@.tmp || true
a2x $(A2X_OPTS) --asciidoc-opts="$(ASCIIDOC_OPTS)" $@.tmp
@rm -f $@.tmp
%.html: %.txt %.html: %.txt
asciidoc $(ASCIIDOC_OPTS) -a linkcss $*.txt asciidoc $(ASCIIDOC_OPTS) -a linkcss $*.txt

View File

@ -135,6 +135,18 @@ Options
affects both generation and checking. The current valid options are: affects both generation and checking. The current valid options are:
`md5`, `sha1`, `sha256`, `sha384`, and `sha512`. `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} ...**)**:: **MAN_DIRS=(**{usr{,/local}{,/share},opt/*}/{man,info} ...**)**::
If `zipman` is specified in the OPTIONS array, this variable will If `zipman` is specified in the OPTIONS array, this variable will
instruct makepkg where to look to compress manual (man and info) instruct makepkg where to look to compress manual (man and info)

View File

@ -13,6 +13,9 @@ edit = sed \
-e 's|@PACKAGE_NAME[@]|$(PACKAGE_NAME)|g' \ -e 's|@PACKAGE_NAME[@]|$(PACKAGE_NAME)|g' \
-e 's|@PKGEXT[@]|$(PKGEXT)|g' \ -e 's|@PKGEXT[@]|$(PKGEXT)|g' \
-e 's|@SRCEXT[@]|$(SRCEXT)|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|@CARCH[@]|$(CARCH)|g' \
-e 's|@CHOST[@]|$(CHOST)|g' \ -e 's|@CHOST[@]|$(CHOST)|g' \
-e 's|@ARCHSWITCH[@]|$(ARCHSWITCH)|g' \ -e 's|@ARCHSWITCH[@]|$(ARCHSWITCH)|g' \

View File

@ -72,6 +72,12 @@ OPTIONS=(strip docs libtool emptydirs zipman purge)
#-- File integrity checks to use. Valid: md5, sha1, sha256, sha384, sha512 #-- File integrity checks to use. Valid: md5, sha1, sha256, sha384, sha512
INTEGRITY_CHECK=(md5) 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) #-- Manual (man and info) directories to compress (if zipman is specified)
MAN_DIRS=({usr{,/local}{,/share},opt/*}/{man,info}) MAN_DIRS=({usr{,/local}{,/share},opt/*}/{man,info})
#-- Doc directories to remove (if !docs is specified) #-- Doc directories to remove (if !docs is specified)

View File

@ -841,18 +841,18 @@ tidy_install() {
fi fi
if [[ $(check_option strip) = y && -n ${STRIP_DIRS[*]} ]]; then 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 local binary
find ${STRIP_DIRS[@]} -type f -writable 2>/dev/null | while read binary ; do find ${STRIP_DIRS[@]} -type f -writable 2>/dev/null | while read binary ; do
case "$(file -biz "$binary")" in case "$(file -biz "$binary")" in
*compressed-encoding*) # Skip compressed binaries *compressed-encoding*) # Skip compressed binaries
;; ;;
*application/x-sharedlib*) # Libraries (.so) *application/x-sharedlib*) # Libraries (.so)
/usr/bin/strip -S "$binary";; /usr/bin/strip $STRIP_SHARED "$binary";;
*application/x-archive*) # Libraries (.a) *application/x-archive*) # Libraries (.a)
/usr/bin/strip -S "$binary";; /usr/bin/strip $STRIP_STATIC "$binary";;
*application/x-executable*) # Binaries *application/x-executable*) # Binaries
/usr/bin/strip "$binary";; /usr/bin/strip $STRIP_BINARIES "$binary";;
esac esac
done done
fi fi