Support for package "update" build profile action
* Add global HAIKU_PACKAGES_UPDATE_ONLY build system variable, which is set for the "update" and "update-all" build profile actions. * Change the HAIKU_INCLUDE_IN_CONTAINER_VAR variable on packages to HAIKU_INCLUDE_IN_PACKAGES for all packages. The variable is also set for the "update" and "update-all" build profile actions. * Introduce HAIKU_CONTAINER_INHERIT_UPDATE_VARIABLE on container variable. If set, the contained variable will be set on the container when one or more files in it are updated. It is set on packages so an update of a file in a package causes the package to be updated in the image. * Introduce HAIKU_CONTAINER_ALWAYS_CREATE_DIRECTORIES on container variable. If set, directories will be created also in update mode. It is set on packages.
This commit is contained in:
+15
-1
@@ -177,6 +177,18 @@ rule AddFilesToContainer container : directoryTokens : targets : destName
|
|||||||
if $(filterVar) {
|
if $(filterVar) {
|
||||||
targets = [ FilterContainerUpdateTargets $(targets)
|
targets = [ FilterContainerUpdateTargets $(targets)
|
||||||
: $(filterVar) ] ;
|
: $(filterVar) ] ;
|
||||||
|
|
||||||
|
# If there are any targets, mark the container as to be included in
|
||||||
|
# an update, too, if it has set the update inheritance variable.
|
||||||
|
# This makes updating a target that lives in a package on an image
|
||||||
|
# work.
|
||||||
|
if $(targets) {
|
||||||
|
local updateVariable = [ on $(container) return
|
||||||
|
$(HAIKU_CONTAINER_INHERIT_UPDATE_VARIABLE) ] ;
|
||||||
|
if $(updateVariable) {
|
||||||
|
$(updateVariable) on $(container) = 1 ;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -480,7 +492,9 @@ rule CreateContainerMakeDirectoriesScript container : script
|
|||||||
# If the image shall only be updated, we don't create directories.
|
# If the image shall only be updated, we don't create directories.
|
||||||
if $(dirsToCreate)
|
if $(dirsToCreate)
|
||||||
&& ( ! [ on $(container) return $(HAIKU_CONTAINER_UPDATE_ONLY) ]
|
&& ( ! [ on $(container) return $(HAIKU_CONTAINER_UPDATE_ONLY) ]
|
||||||
|| [ IncludeAllTargetsInContainer $(container) ] ) {
|
|| [ IncludeAllTargetsInContainer $(container) ]
|
||||||
|
|| [ on $(container) return
|
||||||
|
$(HAIKU_CONTAINER_ALWAYS_CREATE_DIRECTORIES) ] ) {
|
||||||
Depends $(scriptBody) : $(dirsToCreate) ;
|
Depends $(scriptBody) : $(dirsToCreate) ;
|
||||||
CreateContainerMakeDirectoriesScript1 $(scriptBody) : $(dirsToCreate) ;
|
CreateContainerMakeDirectoriesScript1 $(scriptBody) : $(dirsToCreate) ;
|
||||||
|
|
||||||
|
|||||||
@@ -394,13 +394,17 @@ rule DefineBuildProfile name : type : path {
|
|||||||
case "update" : {
|
case "update" : {
|
||||||
JAM_TARGETS = $(buildTarget) ;
|
JAM_TARGETS = $(buildTarget) ;
|
||||||
SetUpdateHaikuImageOnly 1 ;
|
SetUpdateHaikuImageOnly 1 ;
|
||||||
|
HAIKU_PACKAGES_UPDATE_ONLY = 1 ;
|
||||||
HAIKU_INCLUDE_IN_IMAGE on $(HAIKU_BUILD_PROFILE_PARAMETERS) = 1 ;
|
HAIKU_INCLUDE_IN_IMAGE on $(HAIKU_BUILD_PROFILE_PARAMETERS) = 1 ;
|
||||||
|
HAIKU_INCLUDE_IN_PACKAGES on $(HAIKU_BUILD_PROFILE_PARAMETERS) = 1 ;
|
||||||
}
|
}
|
||||||
|
|
||||||
case "update-all" : {
|
case "update-all" : {
|
||||||
JAM_TARGETS = $(buildTarget) ;
|
JAM_TARGETS = $(buildTarget) ;
|
||||||
SetUpdateHaikuImageOnly 1 ;
|
SetUpdateHaikuImageOnly 1 ;
|
||||||
|
HAIKU_PACKAGES_UPDATE_ONLY = 1 ;
|
||||||
HAIKU_INCLUDE_IN_IMAGE = 1 ;
|
HAIKU_INCLUDE_IN_IMAGE = 1 ;
|
||||||
|
HAIKU_INCLUDE_IN_PACKAGES = 1 ;
|
||||||
}
|
}
|
||||||
|
|
||||||
case "mount" : {
|
case "mount" : {
|
||||||
|
|||||||
+11
-2
@@ -268,13 +268,20 @@ rule HaikuPackage package
|
|||||||
local grist = [ FHaikuPackageGrist $(package) ] ;
|
local grist = [ FHaikuPackageGrist $(package) ] ;
|
||||||
|
|
||||||
HAIKU_CONTAINER_GRIST on $(package) = $(grist) ;
|
HAIKU_CONTAINER_GRIST on $(package) = $(grist) ;
|
||||||
HAIKU_INCLUDE_IN_CONTAINER_VAR on $(package)
|
HAIKU_INCLUDE_IN_CONTAINER_VAR on $(package) = HAIKU_INCLUDE_IN_PACKAGES ;
|
||||||
= $(grist)_HAIKU_INCLUDE_IN_PACKAGE ;
|
|
||||||
HAIKU_INSTALL_TARGETS_VAR on $(package)
|
HAIKU_INSTALL_TARGETS_VAR on $(package)
|
||||||
= $(grist)_HAIKU_PACKAGE_INSTALL_TARGETS ;
|
= $(grist)_HAIKU_PACKAGE_INSTALL_TARGETS ;
|
||||||
HAIKU_CONTAINER_SYSTEM_DIR_TOKENS on $(package) = ;
|
HAIKU_CONTAINER_SYSTEM_DIR_TOKENS on $(package) = ;
|
||||||
|
|
||||||
HAIKU_CURRENTLY_BUILT_HAIKU_PACKAGE = $(package) ;
|
HAIKU_CURRENTLY_BUILT_HAIKU_PACKAGE = $(package) ;
|
||||||
|
|
||||||
|
if $(HAIKU_PACKAGES_UPDATE_ONLY) {
|
||||||
|
HAIKU_CONTAINER_UPDATE_ONLY on $(package) = 1 ;
|
||||||
|
HAIKU_CONTAINER_INHERIT_UPDATE_VARIABLE on $(package)
|
||||||
|
= HAIKU_INCLUDE_IN_IMAGE ;
|
||||||
|
}
|
||||||
|
|
||||||
|
HAIKU_CONTAINER_ALWAYS_CREATE_DIRECTORIES on $(package) = 1 ;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -301,6 +308,8 @@ rule BuildHaikuPackage package : packageInfo
|
|||||||
AddVariableToScript $(script) : tmpDir : $(tempDir) ;
|
AddVariableToScript $(script) : tmpDir : $(tempDir) ;
|
||||||
AddVariableToScript $(script) : addBuildCompatibilityLibDir
|
AddVariableToScript $(script) : addBuildCompatibilityLibDir
|
||||||
: $(HOST_ADD_BUILD_COMPATIBILITY_LIB_DIR) ;
|
: $(HOST_ADD_BUILD_COMPATIBILITY_LIB_DIR) ;
|
||||||
|
AddVariableToScript $(script) : updateOnly
|
||||||
|
: [ on $(package) return $(HAIKU_CONTAINER_UPDATE_ONLY) ] ;
|
||||||
AddTargetVariableToScript $(script) : <build>addattr ;
|
AddTargetVariableToScript $(script) : <build>addattr ;
|
||||||
AddTargetVariableToScript $(script) : <build>copyattr ;
|
AddTargetVariableToScript $(script) : <build>copyattr ;
|
||||||
AddTargetVariableToScript $(script) : <build>package ;
|
AddTargetVariableToScript $(script) : <build>package ;
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ set -o errexit
|
|||||||
# outputDir
|
# outputDir
|
||||||
# tmpDir
|
# tmpDir
|
||||||
# addBuildCompatibilityLibDir
|
# addBuildCompatibilityLibDir
|
||||||
|
# updateOnly
|
||||||
#
|
#
|
||||||
# addattr
|
# addattr
|
||||||
# copyattr
|
# copyattr
|
||||||
@@ -23,7 +24,6 @@ fi
|
|||||||
packagePath="$1"
|
packagePath="$1"
|
||||||
packageInfoPath="$2"
|
packageInfoPath="$2"
|
||||||
shift 2
|
shift 2
|
||||||
echo "Building package $1 with info $2..."
|
|
||||||
|
|
||||||
if [ $# -gt 0 ]; then
|
if [ $# -gt 0 ]; then
|
||||||
. $1
|
. $1
|
||||||
@@ -61,5 +61,9 @@ done
|
|||||||
|
|
||||||
|
|
||||||
# create the package
|
# create the package
|
||||||
|
if [ ! $updateOnly ]; then
|
||||||
rm -f "$packagePath"
|
rm -f "$packagePath"
|
||||||
$package create -i "$packageInfoPath" -C "$contentsDir" "$packagePath"
|
$package create -q -i "$packageInfoPath" -C "$contentsDir" "$packagePath"
|
||||||
|
else
|
||||||
|
$package add -q -f -i "$packageInfoPath" -C "$contentsDir" "$packagePath" .
|
||||||
|
fi
|
||||||
|
|||||||
Reference in New Issue
Block a user