From 2ff1b5e084abeb1396fbe295ffd84b3302373cf2 Mon Sep 17 00:00:00 2001 From: "Tom G. Christensen" Date: Wed, 14 Jul 2004 14:28:41 +0000 Subject: [PATCH] Split strip function into system specific subfunctions. After the rewrite of add_files in the Irix function library permissions where not assigned correctly. This has been fixed. --- buildpkg.functions | 34 +++--------- buildpkg.packaging.irix | 103 +++++++++++++++++++++++++++---------- buildpkg.packaging.solaris | 40 ++++++++++++++ 3 files changed, 124 insertions(+), 53 deletions(-) diff --git a/buildpkg.functions b/buildpkg.functions index b923f49..4f2be71 100644 --- a/buildpkg.functions +++ b/buildpkg.functions @@ -61,7 +61,7 @@ BASENAME=/bin/basename DIRNAME=/bin/dirname TR=/bin/tr DIFF=/usr/local/bin/diff # *Must* support -u (like GNU Diff) -FILE=/usr/bin/file # Used by strip() +FILE=/usr/bin/file # Used by do_strip() # Groff stuff for manpages NEQN=/usr/local/bin/neqn @@ -96,6 +96,7 @@ _sharedir=share _mandir=man _infodir=info _includedir=include +_sysconfdir=etc tmpdir=/tmp @@ -321,42 +322,23 @@ clean() esac } -# strip(): strip binaries in stagedir +# do_strip(): strip binaries in stagedir # params: none # Automatically switches to $stagedir # On exit cwd is $stagedir -strip() +do_strip() { local f setdir stage # Strip ELF binaries (see brp-strip from RPM) if [ $dostrip_elf -eq 1 ]; then - echo "Stripping ELF binaries..." - for f in `$FIND . -type f \( -perm -0100 -o -perm -0010 -o -perm -0001 \) -exec $FILE {} \; | \ - $GREP -v ' dynamic lib ' | \ - $SED -n -e 's/^\(.*\):[ ]*ELF.*, not stripped/\1/p'`; do - $STRIP $strip_elf_args $f || : - done + do_strip_bin fi if [ $dostrip_shared -eq 1 ]; then - echo "Stripping ELF shared objects..." - # Strip ELF shared objects (see brp-strip-shared from RPM) - # Please note we don't restrict our search to executable files because - # our libraries are not (should not be, at least) +x. - for f in `$FIND . -type f -a -exec $FILE {} \; | \ - grep ' dynamic lib ' | \ - $SED -n -e 's/^\(.*\):[ ]*ELF.*, not stripped/\1/p'`; do - $STRIP $strip_shared_args $f - done + do_strip_shared fi if [ $dostrip_static -eq 1 ]; then - echo "Stripping static archives..." - # Strip static libraries. (see brp-strip-static-archive from RPM) - for f in `$FIND . -type f -a -exec $FILE {} \; | \ - $GREP 'current ar archive' | \ - $SED -n -e 's/^\(.*\):[ ]*current ar archive,.*/\1/p'`; do - $STRIP $strip_static_args $f - done + do_strip_static fi } @@ -533,7 +515,7 @@ generic_install() error $E_BAD_MAKE generic_install fi if [ $dostrip -eq 1 ]; then - strip + do_strip fi } diff --git a/buildpkg.packaging.irix b/buildpkg.packaging.irix index 21ae11b..c8bad32 100644 --- a/buildpkg.packaging.irix +++ b/buildpkg.packaging.irix @@ -9,7 +9,6 @@ GENDIST="/usr/sbin/gendist" GZIP=/usr/people/tgc/bin/gzip BZIP2=/usr/local/bin/bzip2 -STRIP=/bin/true # This is the hostname command we'll want on Irix HOSTNAME=/usr/bsd/hostname @@ -27,11 +26,17 @@ hidefile=$metadir/hide catman=1 # strip? -dostrip=0 +dostrip=1 + +# Setup default args for strip. They match /usr/bin/strip in Irix 6.2 +# Change these if you're using strip from GNU Binutils (recommended) +strip_elf_args="" # GNU default is -g +strip_shared_args="-f" # GNU default is --strip-unneeded +strip_static_args="" # GNU default is -g # Other -usedepend=0 # Don't use depend file even if it's available -usescripts=0 # Don't add ops even if they're available +usedepend=1 # Don't use depend file even if it's available +usescripts=1 # Don't add ops even if they're available ignore_unpackaged_files=0 # default to check for unpackaged files in the stage area # Comment these declarations to get it to run with ksh @@ -194,22 +199,24 @@ add_files() " for i in $FILES do - IFS=$OIFS - if [ "$defperm" == "-" ]; then - permlist=`$LS -l "$i" | $CUT -d " " -f 1` - perm=$(compute_octal $permlist) - fi - doop=$(check_ops "$i") - fname=$(fix_fname "$i") - if [ ! -z "$specattr" ]; then - echo "f $perm $owner $group ${topinstalldir:1}/$fname $i ${pkgname}.${prodcat} $specattr" >>$idbfile + IFS=$OIFS + if [ "$defperm" == "-" ]; then + permlist=`$LS -l "$i" | $CUT -d " " -f 1` + perm=$(compute_octal $permlist) + else + perm=$defperm + fi + doop=$(check_ops "$i") + fname=$(fix_fname "$i") + if [ ! -z "$specattr" ]; then + echo "f $perm $owner $group ${topinstalldir:1}/$fname $i ${pkgname}.${prodcat} $specattr" >>$idbfile + else + if [ ! -z "$doop" ]; then + echo "f $perm $owner $group ${topinstalldir:1}/$fname $i ${pkgname}.${prodcat} $doop" >>$idbfile else - if [ ! -z "$doop" ]; then - echo "f $perm $owner $group ${topinstalldir:1}/$fname $i ${pkgname}.${prodcat} $doop" >>$idbfile - else - echo "f $perm $owner $group ${topinstalldir:1}/$fname $i ${pkgname}.${prodcat}" >>$idbfile - fi + echo "f $perm $owner $group ${topinstalldir:1}/$fname $i ${pkgname}.${prodcat}" >>$idbfile fi + fi done IFS=$OIFS @@ -220,15 +227,17 @@ add_files() " for i in $FILES do - IFS=$OIFS - if [ "$defperm" == "-" ]; then - permlist=`$LS -l "$i" | $CUT -d " " -f 1` - perm=`compute_octal $permlist` - fi - local temp=`$LS -l "$i"|$CUT -d '>' -f 2` - local symval=${temp# } - fname=$(fix_fname "$i") - echo "l $perm $owner $group ${topinstalldir:1}/$fname $i ${pkgname}.${prodcat} symval($symval)" >>$idbfile + IFS=$OIFS + if [ "$defperm" == "-" ]; then + permlist=`$LS -l "$i" | $CUT -d " " -f 1` + perm=$(compute_octal $permlist) + else + perm=$defperm + fi + local temp=`$LS -l "$i"|$CUT -d '>' -f 2` + local symval=${temp# } + fname=$(fix_fname "$i") + echo "l $perm $owner $group ${topinstalldir:1}/$fname $i ${pkgname}.${prodcat} symval($symval)" >>$idbfile done IFS=$OIFS } @@ -311,6 +320,46 @@ fetch_ops() fi } +# do_strip_bin(): Strip binaries +# params: none +do_strip_bin() +{ + echo "Stripping ELF binaries..." + for f in `$FIND . -type f \( -perm -0100 -o -perm -0010 -o -perm -0001 \) -exec $FILE {} \; | \ + $GREP -v ' dynamic lib ' | \ + $SED -n -e 's/^\(.*\):[ ]*ELF.*\(not stripped\).*/\1/p'`; do + $STRIP $strip_elf_args $f || : + done +} + +# do_strip_shared(): Strip shared libraries +# params: none +do_strip_shared() +{ + echo "Stripping ELF shared objects..." + # Strip ELF shared objects (see brp-strip-shared from RPM) + # Please note we don't restrict our search to executable files because + # our libraries are not (should not be, at least) +x. + for f in `$FIND . -type f -a -exec $FILE {} \; | \ + grep ' dynamic lib ' | \ + $SED -n -e 's/^\(.*\):[ ]*ELF.*\(not stripped\).*/\1/p'`; do + $STRIP $strip_shared_args $f + done +} + +# do_strip_static(): Strip static archives +# params: none +do_strip_static() +{ + echo "Stripping static archives..." + # Strip static libraries. (see brp-strip-static-archive from RPM) + for f in `$FIND . -type f -a -exec $FILE {} \; | \ + $GREP 'current ar archive' | \ + $SED -n -e 's/^\(.*\):[ ]*current ar archive .*/\1/p'`; do + $STRIP $strip_static_args $f + done +} + ################################## # "external" functions ################################## diff --git a/buildpkg.packaging.solaris b/buildpkg.packaging.solaris index 7f16f05..ea5b292 100644 --- a/buildpkg.packaging.solaris +++ b/buildpkg.packaging.solaris @@ -411,6 +411,46 @@ get_pkgrev() local secver=$(_upls ${pstamp##PSTAMP=}) echo $secver } + +# do_strip_bin(): Strip binaries +# params: none +do_strip_binaries() +{ + echo "Stripping ELF binaries..." + for f in `$FIND . -type f \( -perm -0100 -o -perm -0010 -o -perm -0001 \) -exec $FILE {} \; | \ + $GREP -v ' dynamic lib ' | \ + $SED -n -e 's/^\(.*\):[ ]*ELF.*, not stripped/\1/p'`; do + $STRIP $strip_elf_args $f || : + done +} + +# do_strip_shared(): Strip shared libraries +# params: none +do_strip_shared() +{ + echo "Stripping ELF shared objects..." + # Strip ELF shared objects (see brp-strip-shared from RPM) + # Please note we don't restrict our search to executable files because + # our libraries are not (should not be, at least) +x. + for f in `$FIND . -type f -a -exec $FILE {} \; | \ + grep ' dynamic lib ' | \ + $SED -n -e 's/^\(.*\):[ ]*ELF.*, not stripped/\1/p'`; do + $STRIP $strip_shared_args $f + done +} + +# do_strip_static(): Strip static archives +# params: none +do_strip_static() +{ + echo "Stripping static archives..." + # Strip static libraries. (see brp-strip-static-archive from RPM) + for f in `$FIND . -type f -a -exec $FILE {} \; | \ + $GREP 'current ar archive' | \ + $SED -n -e 's/^\(.*\):[ ]*current ar archive,.*/\1/p'`; do + $STRIP $strip_static_args $f + done +} ##################################################### # Define generic functions for different build stages