From b8c41a1ad8250caf1e7bbcdafc736750d533c8bc Mon Sep 17 00:00:00 2001 From: Matt Madia Date: Sun, 29 May 2011 18:02:21 +0000 Subject: [PATCH] Applied a patch by Ingo, to strip the debug info from optional packages. To note, the reduction of block size from 2048 to 1024 was not applied. Introduced a new build variable HAIKU_STRIP_DEBUG_FROM_OPTIONAL_PACKAGES, which will allow users to enable/disable that functionality. In the alpha-* and nightly-* profiles, it is enabled. Reduced the image size for alpha-* to 690M. The size for nightly images was left untouched. +alpha3 git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@41812 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- build/jam/HaikuCD | 2 ++ build/jam/HaikuImage | 4 +++- build/jam/ReleaseBuildProfiles | 4 +++- build/jam/UserBuildConfig.ReadMe | 3 +++ build/scripts/build_haiku_image | 33 ++++++++++++++++++++++++++++++++ 5 files changed, 44 insertions(+), 2 deletions(-) diff --git a/build/jam/HaikuCD b/build/jam/HaikuCD index d77e752d90..e88ba3bf90 100644 --- a/build/jam/HaikuCD +++ b/build/jam/HaikuCD @@ -28,6 +28,8 @@ AddVariableToScript $(script) : isCD : 1 ; AddVariableToScript $(script) : cdLabel : $(HAIKU_CD_LABEL) ; AddVariableToScript $(script) : addBuildCompatibilityLibDir : $(HOST_ADD_BUILD_COMPATIBILITY_LIB_DIR) ; +AddVariableToScript $(script) : stripOptionalPackageDebugSymbols + : $(HAIKU_STRIP_DEBUG_FROM_OPTIONAL_PACKAGES) ; AddTargetVariableToScript $(script) : addattr ; AddTargetVariableToScript $(script) : copyattr ; AddTargetVariableToScript $(script) : rc ; diff --git a/build/jam/HaikuImage b/build/jam/HaikuImage index 73f59e8ace..7f6b27f603 100644 --- a/build/jam/HaikuImage +++ b/build/jam/HaikuImage @@ -153,7 +153,7 @@ SYSTEM_ADD_ONS_PRINT = PS\ Compatible Preview ; -SYSTEM_ADD_ONS_PRINT_TRANSPORT = HP\ JetDirect IPP LPR +SYSTEM_ADD_ONS_PRINT_TRANSPORT = HP\ JetDirect IPP LPR # Parallel\ Port Print\ To\ File Serial\ Port USB\ Port ; @@ -783,6 +783,8 @@ AddVariableToScript $(script) : addBuildCompatibilityLibDir : $(HOST_ADD_BUILD_COMPATIBILITY_LIB_DIR) ; AddVariableToScript $(script) : dontClearImage : $(HAIKU_DONT_CLEAR_IMAGE) ; AddVariableToScript $(script) : updateOnly : [ IsUpdateHaikuImageOnly ] ; +AddVariableToScript $(script) : stripOptionalPackageDebugSymbols + : $(HAIKU_STRIP_DEBUG_FROM_OPTIONAL_PACKAGES) ; AddTargetVariableToScript $(script) : addattr ; AddTargetVariableToScript $(script) : bfs_shell : bfsShell ; AddTargetVariableToScript $(script) : fs_shell_command : fsShellCommand ; diff --git a/build/jam/ReleaseBuildProfiles b/build/jam/ReleaseBuildProfiles index fdda08b7aa..e0bb587cd6 100644 --- a/build/jam/ReleaseBuildProfiles +++ b/build/jam/ReleaseBuildProfiles @@ -16,7 +16,8 @@ switch $(HAIKU_BUILD_PROFILE) { HAIKU_ROOT_USER_REAL_NAME = "Yourself" ; AddGroupToHaikuImage party : 101 : user sshd ; HAIKU_IMAGE_HOST_NAME = shredder ; - HAIKU_IMAGE_SIZE = 790 ; + HAIKU_IMAGE_SIZE = 690 ; + HAIKU_STRIP_DEBUG_FROM_OPTIONAL_PACKAGES = 1 ; AddOptionalHaikuImagePackages TimGMSoundFont TrackerNewTemplates WQY-MicroHei ; @@ -38,6 +39,7 @@ switch $(HAIKU_BUILD_PROFILE) { AddGroupToHaikuImage party : 101 : user sshd ; HAIKU_IMAGE_HOST_NAME = shredder ; HAIKU_IMAGE_SIZE = 500 ; + HAIKU_STRIP_DEBUG_FROM_OPTIONAL_PACKAGES = 1 ; AddOptionalHaikuImagePackages Pe Nano Vision P7zip XZ-Utils ; AddOptionalHaikuImagePackages Development Subversion OpenSSH OpenSSL ; diff --git a/build/jam/UserBuildConfig.ReadMe b/build/jam/UserBuildConfig.ReadMe index f567c0eac9..d1c9eb172d 100644 --- a/build/jam/UserBuildConfig.ReadMe +++ b/build/jam/UserBuildConfig.ReadMe @@ -62,6 +62,9 @@ HAIKU_IMAGE_NAME = walter.image ; HAIKU_IMAGE_DIR = /tmp ; HAIKU_IMAGE_SIZE = 100 ; +# Enable stripping the debug symbols from optional packages. +HAIKU_STRIP_DEBUG_FROM_OPTIONAL_PACKAGES = 1 ; + # Set image volume label to "Walter". Default label is "Haiku". HAIKU_IMAGE_LABEL = Walter ; diff --git a/build/scripts/build_haiku_image b/build/scripts/build_haiku_image index 71f05e957d..fb10d744aa 100755 --- a/build/scripts/build_haiku_image +++ b/build/scripts/build_haiku_image @@ -16,6 +16,7 @@ set -o errexit # dontClearImage # isVMwareImage # optionalPackageDescriptions +# stripOptionalPackageDebugSymbols # # addattr # copyattr @@ -141,6 +142,20 @@ else fi +stripDebugInfo() +{ + file="$1" + + # Determine whether the file is an ELF file by checking the ELF signature, + # or at least the printable characters. + elfMarker=`dd "if=$file" bs=1 skip=1 count=3 2> /dev/null` + if [ "$elfMarker" = 'ELF' ]; then + # make user-writable first -- some files aren't + chmod u+w "$file" + strip --strip-debug "$file" + fi +} + extractFile() { # extractFile @@ -173,6 +188,24 @@ extractFile() rm $extractDir/.OptionalPackageDescription fi + if [ "$stripOptionalPackageDebugSymbols" == "1" ]; then + # strip executables in common/bin + if [ -d $extractDir/common/bin ]; then + for file in `find $extractDir/common/bin -type f -a -perm +100 \ + -a -size +1k`; do + stripDebugInfo "$file" + done + fi + + # strip libraries in common/lib + if [ -d $extractDir/common/lib ]; then + for file in `find $extractDir/common/lib -type f -a -size +1k \ + -a -name lib\*`; do + stripDebugInfo "$file" + done + fi + fi + $cp -r "${sPrefix}$extractDir/$extractedSubDir/." "${tPrefix}$targetExtractedDir" $rmAttrs -rf "$extractDir"