mirror of
https://github.com/moparisthebest/pacman
synced 2024-08-13 17:03:46 -04:00
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:
parent
22331fdadb
commit
5fe41df8a9
@ -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)
|
||||||
|
@ -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
|
||||||
|
@ -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)
|
||||||
|
@ -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' \
|
||||||
|
@ -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)
|
||||||
|
@ -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
|
||||||
|
Loading…
Reference in New Issue
Block a user