From 06f5437c21c0c849d0cbd16a2a7444182c50ba01 Mon Sep 17 00:00:00 2001 From: Ingo Weinhold Date: Sun, 19 May 2013 01:48:53 +0200 Subject: [PATCH] Add HAIKU_PACKAGE_COMPRESSION_LEVEL build variable It allows to control the compression level used for package creation and update. The default (9) is *very* slow, so developers may want to use a smaller level during the regular development process to keep turn-around times low. --- build/jam/PackageRules | 6 ++++++ build/jam/UserBuildConfig.ReadMe | 12 ++++++++++++ build/scripts/build_haiku_package | 7 +++++-- 3 files changed, 23 insertions(+), 2 deletions(-) diff --git a/build/jam/PackageRules b/build/jam/PackageRules index 9502174e9e..602cef045b 100644 --- a/build/jam/PackageRules +++ b/build/jam/PackageRules @@ -310,6 +310,8 @@ rule BuildHaikuPackage package : packageInfo AddVariableToScript $(script) : tmpDir : $(tempDir) ; AddVariableToScript $(script) : addBuildCompatibilityLibDir : $(HOST_ADD_BUILD_COMPATIBILITY_LIB_DIR) ; + AddVariableToScript $(script) : compressionLevel + : $(HAIKU_PACKAGE_COMPRESSION_LEVEL) ; AddVariableToScript $(script) : updateOnly : [ on $(package) return $(HAIKU_CONTAINER_UPDATE_ONLY) ] ; AddTargetVariableToScript $(script) : addattr ; @@ -434,3 +436,7 @@ rule AddLibrariesToPackage directory : libs AddLibrariesToContainer $(HAIKU_CURRENTLY_BUILT_HAIKU_PACKAGE) : $(directory) : $(libs) ; } + + +# default value for the package compression level +HAIKU_PACKAGE_COMPRESSION_LEVEL ?= 9 ; diff --git a/build/jam/UserBuildConfig.ReadMe b/build/jam/UserBuildConfig.ReadMe index 53ff6775eb..2252fd9ab4 100644 --- a/build/jam/UserBuildConfig.ReadMe +++ b/build/jam/UserBuildConfig.ReadMe @@ -79,6 +79,18 @@ HAIKU_INSTALL_DIR = /Haiku ; # freshly be initialized with BFS. Useful when installing Haiku on a partition. HAIKU_DONT_CLEAR_IMAGE = 1 ; +# Set the compression level for the creation and update of Haiku packages to 1. +# Values from 0 to 9 are supported. 0 means no compression, 1 fastest, ..., and +# 9 best. The default is 9 which should be used for official builds (release or +# nightly) to achieve the smallest possible package files at the cost of long +# package building times. For developers who frequently rebuild/update packages +# level 1 is a good compromise. Depending on the package data it's about an +# order of magnitude faster while still achieving acceptable compression ratios. +# Using level 0 will make package creation mostly I/O bound. It can be used, if +# package size is not a concern. Depending on the package data, files may be +# several times larger than even with level 1. +HAIKU_PACKAGE_COMPRESSION_LEVEL = 1 ; + # Affects the haiku-image, haiku-vmware-image, and install-haiku targets. Only # targets on which the HAIKU_INCLUDE_IN_IMAGE variable has been set will be diff --git a/build/scripts/build_haiku_package b/build/scripts/build_haiku_package index b2e091f476..736d94c95b 100755 --- a/build/scripts/build_haiku_package +++ b/build/scripts/build_haiku_package @@ -7,6 +7,7 @@ set -o errexit # outputDir # sourceDir # tmpDir +# compressionLevel # updateOnly # # addattr @@ -69,7 +70,9 @@ $mimeset --mimedb "$mimeDB" "$contentsDir" # create the package if [ ! $updateOnly ]; then rm -f "$packagePath" - $package create -q -i "$packageInfoPath" -C "$contentsDir" "$packagePath" + $package create -q "-$compressionLevel" -i "$packageInfoPath" \ + -C "$contentsDir" "$packagePath" else - $package add -q -f -i "$packageInfoPath" -C "$contentsDir" "$packagePath" . + $package add -q -f "-$compressionLevel" -i "$packageInfoPath" \ + -C "$contentsDir" "$packagePath" . fi